- Seme Framework
- version 4.0.3
- Requirements
- Download & Install
- Configuration
- Tutorials
- URI Routing
- Constants
- Global Variables
- Model
- View
- Controller
- cdn_url
- config
- constructor
- getAdditional
- getAdditionalBefore
- getAdditionalAfter
- getAuthor
- getCanonical
- getContentLanguage
- getDescription
- getIcon
- getJsContent
- getJsFooter
- getJsReady
- getKey
- getKeyword
- getLang
- getRobots
- getShortcutIcon
- getThemeElement
- getTitle
- input
- lib
- load
- loadCss
- loadLayout
- putThemeContent
- putJsContent
- putJsFooter
- putJsReady
- render
- resetThemeContent
- session
- setAuthor
- setCanonical
- setContentLanguage
- setDescription
- setIcon
- setKey
- setKeyword
- setLang
- setShortcutIcon
- setTheme
- setTitle
- Library
- CLI (command line interface)
- Core
- Issue
- Deployment
WideImage Library
Seme Framework running well with WideImage, read more about WideImage .
Installation
Download the WideImage library, and then put wideimage
directory under app/kero/lib
.
kero
└── lib
└── wideimage
└── ...
Load the WideImage
For loading WideImage into a controller class, simply using lib method in a controller.
...
public function __construct(){
parent:: __construct();
...
$this->lib("wideimage", 'inc');
...
}
..
Example Usage
This is full example for upload image and then create thumbnail using WideImage
for image resizer.
/**
* Method for handling file upload
* Only allowed .png, .jpeg, .jpg, .gif extension
* Max file size 2000000 bytes
* Unsupported WebP encoding image
* @param string $keyname the $_FILES key that send from html
* @param string $id the id of user, product, or uniqid
* @param string $ke sequencer
* @constructor
* @return object result with object, contain status, message, image, and thumb.
*/
private function __uploadImagex($keyname, $id, $ke="")
{
$sc = new stdClass();
$sc->status = 500;
$sc->message = 'Error';
$sc->image = '';
$sc->thumb = '';
if (isset($_FILES[$keyname]['name'])) {
if ($_FILES[$keyname]['size']>2000000) {
$sc->status = 301;
$sc->message = 'Ukuran gambar terlalu besar. Silakan pilih dengan ukuran kurang dari 2 MB';
$this->seme_log->write('User::__uploadImagex -- forceClose '.$sc->status.' '.$sc->message);
return $sc;
}
$filenames = pathinfo($_FILES[$keyname]['name']);
if (isset($filenames['extension'])) {
$fileext = strtolower($filenames['extension']);
} else {
$fileext = 'jpg';
}
if (!in_array($fileext, array("jpg","png","jpeg","gif"))) {
$sc->status = 303;
$sc->message = 'Invalid file extension, please try other image file.';
$this->seme_log->write('User::__uploadImagex -- forceClose '.$sc->status.' '.$sc->message);
return $sc;
}
$filename = "$id-$ke";
$filethumb = $filename.'-thumb';
$targetdir = 'media/upload/';
$targetdircheck = realpath(SEMEROOT.$targetdir);
if (empty($targetdircheck)) {
if (PHP_OS == "WINNT") {
if (!is_dir(SEMEROOT.$targetdir)) {
mkdir(SEMEROOT.$targetdir);
}
} else {
if (!is_dir(SEMEROOT.$targetdir)) {
mkdir(SEMEROOT.$targetdir, 0775);
}
}
}
$tahun = date("Y");
$targetdir = $targetdir.DIRECTORY_SEPARATOR.$tahun;
$targetdircheck = realpath(SEMEROOT.$targetdir);
if (empty($targetdircheck)) {
if (PHP_OS == "WINNT") {
if (!is_dir(SEMEROOT.$targetdir)) {
mkdir(SEMEROOT.$targetdir);
}
} else {
if (!is_dir(SEMEROOT.$targetdir)) {
mkdir(SEMEROOT.$targetdir, 0775);
}
}
}
$bulan = date("m");
$targetdir = $targetdir.DIRECTORY_SEPARATOR.$bulan;
$targetdircheck = realpath(SEMEROOT.$targetdir);
if (empty($targetdircheck)) {
if (PHP_OS == "WINNT") {
if (!is_dir(SEMEROOT.$targetdir)) {
mkdir(SEMEROOT.$targetdir);
}
} else {
if (!is_dir(SEMEROOT.$targetdir)) {
mkdir(SEMEROOT.$targetdir, 0775);
}
}
}
$sc->status = 998;
$sc->message = 'Invalid file extension uploaded';
if (in_array($fileext, array("gif", "jpg", "png","jpeg"))) {
$filecheck = SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename.'.'.$fileext;
if (file_exists($filecheck)) {
unlink($filecheck);
$rand = rand(0, 999);
$filename = "$id-$ke-".$rand;
$filecheck = SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename.'.'.$fileext;
if (file_exists($filecheck)) {
unlink($filecheck);
$rand = rand(1000, 99999);
$filename = "$id-$ke-".$rand;
}
}
$filethumb = $filename."-thumb.".$fileext;
$filename = $filename.".".$fileext;
move_uploaded_file($_FILES[$keyname]['tmp_name'], SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename);
if (is_file(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename) && file_exists(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename)) {
if (@mime_content_type(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename) == 'image/webp') {
$sc->status = 302;
$sc->message = 'WebP image format currently unsupported';
$this->seme_log->write('User::__uploadImagex -- forceClose '.$sc->status.' '.$sc->message);
return $sc;
}
$this->lib("wideimage/WideImage", 'wideimage', "inc");
if (file_exists(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filethumb) && is_file(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filethumb)) {
unlink(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filethumb);
}
if (file_exists(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename) && is_file(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename)) {
WideImage::load(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filename)->reSize(370)->saveToFile(SEMEROOT.$targetdir.DIRECTORY_SEPARATOR.$filethumb);
$sc->status = 200;
$sc->message = 'Successful';
$sc->thumb = str_replace("//", "/", $targetdir.'/'.$filethumb);
$sc->image = str_replace("'\'", "/", $targetdir.'/'.$filename);
$sc->image = str_replace("//", "/", $targetdir.'/'.$filename);
} else {
$sc->status = 997;
$sc->message = 'Failed: file image not exists';
$this->seme_log->write('User::__uploadImagex -- forceClose '.$sc->status.' '.$sc->message);
}
} else {
$sc->status = 999;
$sc->message = 'Upload file failed';
$this->seme_log->write('User::__uploadImagex -- forceClose '.$sc->status.' '.$sc->message);
}
} else {
$sc->status = 998;
$sc->message = 'Invalid file extension uploaded';
$this->seme_log->write('User::__uploadImagex -- forceClose '.$sc->status.' '.$sc->message);
}
} else {
$sc->status = 988;
$sc->message = 'Keyname file does not exists';
$this->seme_log->write('User::__uploadImagex -- forceClose '.$sc->status.' '.$sc->message);
}
return $sc;
}