/trunk/chimbien/app/controllers/components/image.php
PHP | 290 lines | 218 code | 24 blank | 48 comment | 37 complexity | 73bf2ab790577087d53adcbc6f784081 MD5 | raw file
Possible License(s): AGPL-3.0, AGPL-1.0, BSD-3-Clause
- <?php
- class ImageComponent extends Object {
- var $contentType = array('image/jpg','image/bmp','image/jpeg','image/gif','image/png','image/pjpg','image/pbmp','image/pjpeg','image/ppng','image/pgif');
- function upload_image_and_thumbnail($fileData,$size,$subFolder,$prefix,$max_size=7000) {
- if (strlen($fileData['name'])>4) {
- $error = 0;
- $destFolder = WWW_ROOT.$subFolder;
- $realFileName = $fileData['name'];
- if(!is_dir($destFolder)) mkdir($destFolder,true);
- $filetype = $this->getFileExtension($fileData['name']);
- $filetype = strtolower($filetype);
- if(!in_array($fileData['type'],$this->contentType)) {
- return false;
- exit();
- }
- else if($fileData['size'] > 700000 ) {
- return false;exit();
- }
- else {
- $imgsize = GetImageSize($fileData['tmp_name']);
- }
- if (is_uploaded_file($fileData['tmp_name'])) {
- if (!copy($fileData['tmp_name'],$destFolder.'/'.$realFileName )) {
- return false;
- exit();
- }
- else {
- $this->resize_img($destFolder.'/'.$realFileName, $size, $destFolder.'/'.$prefix.$realFileName);
- unlink($destFolder.'/'.$realFileName);
- }
- }
- return $fileData;
- }
- }
- function delete_image($filename) {
- unlink($filename);
- }
- function uploadFiles($folder, $formdata,$thumb='', $itemId = null) {
- // setup dir names absolute and relative
- $folder_url = WWW_ROOT.$folder;
- $rel_url = $folder;
- $result = array();
- // create the folder if it does not exist
- if(!is_dir($folder_url)) {
- mkdir($folder_url);
- }
- // if itemId is set create an item folder
- if($itemId) {
- // set new absolute folder
- $folder_url = WWW_ROOT.$folder.'/'.$itemId;
- // set new relative folder
- $rel_url = $folder.'/'.$itemId;
- // create directory
- if(!is_dir($folder_url)) {
- mkdir($folder_url);
- }
- }
- // list of permitted file types, this is only images but documents can be added
- $permitted = array('image/gif','image/jpeg','image/pjpeg','image/png');
- // loop through and deal with the files
- foreach($formdata as $file){
- // print_r($file);
- // replace spaces with underscores
- if(!empty($file['name'])){
- $filename = str_replace(' ', '_', $file['name']);
- // assume filetype is false
- $typeOK = false;
- // check filetype is ok
- foreach($permitted as $type) {
- if($type == $file['type']) {
- $typeOK = true;
- break;
- }
- }
- // if file type ok upload the file
- if($typeOK) {
- // switch based on error code
- switch($file['error']) {
- case 0:
- // check filename already exists
- $now = '';
- if(!file_exists($folder_url.'/'.$filename)) {
- // create full filename
- $full_url = $folder_url.'/'.$filename;
- $url = $rel_url.'/'.$filename;
- // upload the file
- $success = move_uploaded_file($file['tmp_name'], $url);
- } else {
- // create unique filename and upload file
- ini_set('date.timezone', 'Europe/London');
- $now = date('Y-m-d-His');
- $full_url = $folder_url.'/'.$now.$filename;
- $url = $rel_url.'/'.$now.$filename;
- $success = move_uploaded_file($file['tmp_name'], $url);
- }
- // if upload was successful
- if($success) {
- // save the url of the file
- $result['urls'][] = $url;
- $result['filename'] = $now.$filename;
- $result['mfile'][] = $now.$filename;
- if($thumb){
- $thumbFolder = $folder_url.'/thumb';
- $this->resize_img($folder_url.'/'.$result['filename'], $thumb, $thumbFolder.'/'.$result['filename']);
- }
- } else {
- $result['errors'][] = "Error uploaded $filename. Please try again.";
- }
- break;
- case 3:
- // an error occured
- $result['errors'][] = "Error uploading $filename. Please try again.";
- break;
- default:
- // an error occured
- $result['errors'][] = "System error uploading $filename. Contact webmaster.";
- break;
- }
- } elseif($file['error'] == 4) {
- // no file was selected for upload
- $result['nofiles'][] = "No file Selected";
- } else {
- // unacceptable file type
- $result['errors'][] = "$filename cannot be uploaded. Acceptable file types: gif, jpg, png.";
- }
- }
- }
- return $result;
- }
- function uploadFile($folder, $file, $itemId = null) {
- // setup dir names absolute and relative
- $folder_url = WWW_ROOT.$folder;
- $rel_url = $folder;
- $result = array();
- // create the folder if it does not exist
- if(!is_dir($folder_url)) {
- mkdir($folder_url);
- }
- // if itemId is set create an item folder
- if($itemId) {
- // set new absolute folder
- $folder_url = WWW_ROOT.$folder.'/'.$itemId;
- // set new relative folder
- $rel_url = $folder.'/'.$itemId;
- // create directory
- if(!is_dir($folder_url)) {
- mkdir($folder_url);
- }
- }
- // list of permitted file types, this is only images but documents can be added
- // $permitted = array('image/gif','image/jpeg','image/pjpeg','image/png');
- // loop through and deal with the files
- // replace spaces with underscores
- if(!empty($file['name'])){
- $filename = str_replace(' ', '_', $file['name']);
- // assume filetype is false
- $typeOK = true;
- // if file type ok upload the file
- if($typeOK) {
- // switch based on error code
- switch($file['error']) {
- case 0:
- // check filename already exists
- $now = '';
- if(!file_exists($folder_url.'/'.$filename)) {
- // create full filename
- $full_url = $folder_url.'/'.$filename;
- $url = $rel_url.'/'.$filename;
- // upload the file
- $success = move_uploaded_file($file['tmp_name'], $url);
- } else {
- // create unique filename and upload file
- ini_set('date.timezone', 'Europe/London');
- $now = date('Y-m-d-His');
- $full_url = $folder_url.'/'.$now.$filename;
- $url = $rel_url.'/'.$now.$filename;
- $success = move_uploaded_file($file['tmp_name'], $url);
- }
- // if upload was successful
- if($success) {
- // save the url of the file
- $result['urls'][] = $url;
- $result['filename'] = $now.$filename;
- $result['size'] = $file['size'];
- $result['type'] = $file['type'];
- } else {
- $result['errors'][] = "Error uploaded $filename. Please try again.";
- }
- break;
- case 3:
- // an error occured
- $result['errors'][] = "Error uploading $filename. Please try again.";
- break;
- default:
- // an error occured
- $result['errors'][] = "System error uploading $filename. Contact webmaster.";
- break;
- }
- } elseif($file['error'] == 4) {
- // no file was selected for upload
- $result['nofiles'][] = "No file Selected";
- } else {
- // unacceptable file type
- $result['errors'][] = "$filename cannot be uploaded. Acceptable file types: gif, jpg, png.";
- }
- }
- return $result;
- }
- function deleteFile($folder, $filename){
- @unlink(WWW_ROOT . $folder . DS . $filename);
- }
- function resize_img($tempFile, $size, $newFile) {
- $filetype = $this->getFileExtension($tempFile);
- $filetype = strtolower($filetype);
- switch($filetype) {
- case "jpeg":
- case "jpg":
- $img_src = imagecreatefromjpeg($tempFile);
- break;
- case "gif":
- $img_src = imagecreatefromgif ($tempFile);
- break;
- case "png":
- $img_src = imagecreatefrompng ($tempFile);
- case "bmp":
- $img_src = imagecreatefromwbmp ($tempFile);
- break;
- }
- $true_width = imagesx($img_src);
- $true_height = imagesy($img_src);
- $size = explode('x',strtolower($size));
- if ($true_width>=$true_height) {
- $width=$size[0];
- $height = ($width/$true_width)*$true_height;
- }
- else {
- $height=$size[1];
- $width = ($height/$true_height)*$true_width;
- }
- $img_des = imagecreatetruecolor($width,$height);
- imagecopyresampled ($img_des, $img_src, 0, 0, 0, 0, $width, $height, $true_width, $true_height);
- // Save the resized image
- switch($filetype) {
- case "jpeg":
- case "jpg":
- imagejpeg($img_des,$newFile,80);
- break;
- case "gif":
- imagegif($img_des,$newFile,80);
- break;
- case "png":
- imagepng($img_des,$newFile,80);
- case "bmp":
- imagewbmp($img_des,$newFile,80);
- break;
- }
- }
- function getFileExtension($str) {
- $i = strrpos($str,".");
- if (!$i) { return ""; }
- $l = strlen($str) - $i;
- $ext = substr($str,$i+1,$l);
- return $ext;
- }
- }
- ?>