From 84cf35d8f289881c4f8d3d716a90d544109547e8 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Fri, 1 Jun 2012 08:05:45 +0200 Subject: [PATCH] Fix: Multi-line function call not indented correctly --- htdocs/core/class/fileupload.class.php | 808 ++++++++++++------------- 1 file changed, 404 insertions(+), 404 deletions(-) diff --git a/htdocs/core/class/fileupload.class.php b/htdocs/core/class/fileupload.class.php index 751c72d7a1f..bd2d0c5ad3d 100644 --- a/htdocs/core/class/fileupload.class.php +++ b/htdocs/core/class/fileupload.class.php @@ -1,17 +1,17 @@ * Copyright (C) 2011 Laurent Destailleur - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -34,10 +34,10 @@ class FileUpload protected $options; protected $fk_element; protected $element; - + /** * Constructor - * + * * @param array $options Options array * @param int $fk_element fk_element * @param string $element element @@ -46,17 +46,17 @@ class FileUpload { global $db, $conf; global $object; - + $this->fk_element=$fk_element; $this->element=$element; - + $pathname=$filename=$element; if (preg_match('/^([^_]+)_([^_]+)/i',$element,$regs)) { $pathname = $regs[1]; $filename = $regs[2]; } - + // For compatibility if ($element == 'propal') { $pathname = 'comm/propal'; $filename = 'propal'; @@ -67,15 +67,15 @@ class FileUpload if ($element == 'facture') { $pathname = 'compta/facture'; $filename = 'facture'; } - + dol_include_once('/'.$pathname.'/class/'.$filename.'.class.php'); - + $classname = ucfirst($filename); $object = new $classname($db); - + $object->fetch($fk_element); $object->fetch_thirdparty(); - + $this->options = array( 'script_url' => $_SERVER['PHP_SELF'], 'upload_dir' => $conf->$element->dir_output . '/' . $object->ref . '/', @@ -103,14 +103,14 @@ class FileUpload // uploaded images. You can also add additional versions with // their own upload directories: /* - 'large' => array( - 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/', - 'upload_url' => $this->getFullUrl().'/files/', - 'max_width' => 1920, - 'max_height' => 1200, - 'jpeg_quality' => 95 - ), - */ + 'large' => array( + 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/', + 'upload_url' => $this->getFullUrl().'/files/', + 'max_width' => 1920, + 'max_height' => 1200, + 'jpeg_quality' => 95 + ), + */ 'thumbnail' => array( 'upload_dir' => $conf->$element->dir_output . '/' . $object->ref . '/thumbs/', 'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$object->ref.'/thumbs/', @@ -123,9 +123,9 @@ class FileUpload $this->options = array_replace_recursive($this->options, $options); } } - + /** - * + * */ protected function getFullUrl() { $https = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'; @@ -137,409 +137,409 @@ class FileUpload $_SERVER['SERVER_PORT'] === 80 ? '' : ':'.$_SERVER['SERVER_PORT']))). substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/')); } - + /** * Set delete url - * + * * @param unknown_type $file */ protected function set_file_delete_url($file) { $file->delete_url = $this->options['script_url'] - .'?file='.rawurlencode($file->name).'&fk_element='.$this->fk_element.'&element='.$this->element; + .'?file='.rawurlencode($file->name).'&fk_element='.$this->fk_element.'&element='.$this->element; $file->delete_type = $this->options['delete_type']; if ($file->delete_type !== 'DELETE') { $file->delete_url .= '&_method=DELETE'; } } - + /** * Enter description here ... - * - * @param string $file_name Filename - * @return stdClass|NULL - */ - protected function get_file_object($file_name) - { - $file_path = $this->options['upload_dir'].$file_name; - if (is_file($file_path) && $file_name[0] !== '.') - { - $file = new stdClass(); - $file->name = $file_name; - $file->mime = dol_mimetype($file_name,'',2); - $file->size = filesize($file_path); - $file->url = $this->options['upload_url'].rawurlencode($file->name); - foreach($this->options['image_versions'] as $version => $options) { - if (is_file($options['upload_dir'].$file_name)) { - $tmp=explode('.',$file->name); - $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]); - } - } - $this->set_file_delete_url($file); - return $file; - } - return null; - } + * + * @param string $file_name Filename + * @return stdClass|NULL + */ + protected function get_file_object($file_name) + { + $file_path = $this->options['upload_dir'].$file_name; + if (is_file($file_path) && $file_name[0] !== '.') + { + $file = new stdClass(); + $file->name = $file_name; + $file->mime = dol_mimetype($file_name,'',2); + $file->size = filesize($file_path); + $file->url = $this->options['upload_url'].rawurlencode($file->name); + foreach($this->options['image_versions'] as $version => $options) { + if (is_file($options['upload_dir'].$file_name)) { + $tmp=explode('.',$file->name); + $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]); + } + } + $this->set_file_delete_url($file); + return $file; + } + return null; + } - /** - * Enter description here ... - * - * @return void - */ - protected function get_file_objects() - { - return array_values(array_filter(array_map(array($this, 'get_file_object'), scandir($this->options['upload_dir'])))); - } + /** + * Enter description here ... + * + * @return void + */ + protected function get_file_objects() + { + return array_values(array_filter(array_map(array($this, 'get_file_object'), scandir($this->options['upload_dir'])))); + } - /** - * Create thumbs - * - * @param string $file_name Filename - * @param string $options is array('max_width', 'max_height') - * @return void - */ - protected function create_scaled_image($file_name, $options) - { - global $maxwidthmini, $maxheightmini; - - $file_path = $this->options['upload_dir'].$file_name; - $new_file_path = $options['upload_dir'].$file_name; + /** + * Create thumbs + * + * @param string $file_name Filename + * @param string $options is array('max_width', 'max_height') + * @return void + */ + protected function create_scaled_image($file_name, $options) + { + global $maxwidthmini, $maxheightmini; - if (dol_mkdir($options['upload_dir']) >= 0) - { - list($img_width, $img_height) = @getimagesize($file_path); - if (!$img_width || !$img_height) { - return false; - } + $file_path = $this->options['upload_dir'].$file_name; + $new_file_path = $options['upload_dir'].$file_name; - $res=vignette($file_path,$maxwidthmini,$maxheightmini,'_mini'); + if (dol_mkdir($options['upload_dir']) >= 0) + { + list($img_width, $img_height) = @getimagesize($file_path); + if (!$img_width || !$img_height) { + return false; + } - //return $success; - if (preg_match('/error/i',$res)) return false; - return true; - } - else - { - return false; - } - } + $res=vignette($file_path,$maxwidthmini,$maxheightmini,'_mini'); - /** - * Enter description here ... - * - * @param string $uploaded_file Uploade file - * @param string $file File - * @param string $error Error - * @param string $index Index - * @return unknown|string - */ - protected function validate($uploaded_file, $file, $error, $index) - { - if ($error) { - $file->error = $error; - return false; - } - if (!$file->name) { - $file->error = 'missingFileName'; - return false; - } - if (!preg_match($this->options['accept_file_types'], $file->name)) { - $file->error = 'acceptFileTypes'; - return false; - } - if ($uploaded_file && is_uploaded_file($uploaded_file)) { - $file_size = filesize($uploaded_file); - } else { - $file_size = $_SERVER['CONTENT_LENGTH']; - } - if ($this->options['max_file_size'] && ( - $file_size > $this->options['max_file_size'] || - $file->size > $this->options['max_file_size']) - ) { - $file->error = 'maxFileSize'; - return false; - } - if ($this->options['min_file_size'] && - $file_size < $this->options['min_file_size']) { - $file->error = 'minFileSize'; - return false; - } - if (is_int($this->options['max_number_of_files']) && ( - count($this->get_file_objects()) >= $this->options['max_number_of_files']) - ) { - $file->error = 'maxNumberOfFiles'; - return false; - } - list($img_width, $img_height) = @getimagesize($uploaded_file); - if (is_int($img_width)) { - if ($this->options['max_width'] && $img_width > $this->options['max_width'] || - $this->options['max_height'] && $img_height > $this->options['max_height']) { - $file->error = 'maxResolution'; - return false; - } - if ($this->options['min_width'] && $img_width < $this->options['min_width'] || - $this->options['min_height'] && $img_height < $this->options['min_height']) { - $file->error = 'minResolution'; - return false; - } - } - return true; - } - - /** - * Enter description here ... - * - * @param unknown_type $matches - */ - protected function upcount_name_callback($matches) { - $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; - $ext = isset($matches[2]) ? $matches[2] : ''; - return ' ('.$index.')'.$ext; - } - - /** - * Enter description here ... - * - * @param unknown_type $name - */ - protected function upcount_name($name) { - return preg_replace_callback( - '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/', - array($this, 'upcount_name_callback'), - $name, - 1 - ); - } - - /** - * Enter description here ... - * - * @param unknown_type $name - * @param unknown_type $type - * @param unknown_type $index - */ - protected function trim_file_name($name, $type, $index) { - // Remove path information and dots around the filename, to prevent uploading - // into different directories or replacing hidden system files. - // Also remove control characters and spaces (\x00..\x20) around the filename: - $file_name = trim(basename(stripslashes($name)), ".\x00..\x20"); - // Add missing file extension for known image types: - if (strpos($file_name, '.') === false && - preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) { - $file_name .= '.'.$matches[1]; - } - if ($this->options['discard_aborted_uploads']) { - while(is_file($this->options['upload_dir'].$file_name)) { - $file_name = $this->upcount_name($file_name); - } - } - return $file_name; - } - - /** - * Enter description here ... - * - * @param unknown_type $file - * @param unknown_type $index - */ - protected function handle_form_data($file, $index) { - // Handle form data, e.g. $_REQUEST['description'][$index] - } - - /** - * Enter description here ... - * - * @param unknown_type $file_path - */ - protected function orient_image($file_path) { - $exif = @exif_read_data($file_path); - if ($exif === false) { - return false; - } - $orientation = intval(@$exif['Orientation']); - if (!in_array($orientation, array(3, 6, 8))) { - return false; - } - $image = @imagecreatefromjpeg($file_path); - switch ($orientation) { - case 3: - $image = @imagerotate($image, 180, 0); - break; - case 6: - $image = @imagerotate($image, 270, 0); - break; - case 8: - $image = @imagerotate($image, 90, 0); - break; - default: - return false; - } - $success = imagejpeg($image, $file_path); - // Free up memory (imagedestroy does not delete files): - @imagedestroy($image); - return $success; - } + //return $success; + if (preg_match('/error/i',$res)) return false; + return true; + } + else + { + return false; + } + } - /** - * Enter description here ... - * - * @param string $uploaded_file Uploade file - * @param string $name Name - * @param int $size Size - * @param string $type Type - * @param string $error Error - * @param string $index Index - * @return stdClass - */ - protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index) - { - $file = new stdClass(); - $file->name = $this->trim_file_name($name, $type, $index); - $file->mime = dol_mimetype($file->name,'',2); - $file->size = intval($size); - $file->type = $type; - if ($this->validate($uploaded_file, $file, $error, $index) && dol_mkdir($this->options['upload_dir']) >= 0) { - $this->handle_form_data($file, $index); - $file_path = $this->options['upload_dir'].$file->name; - $append_file = !$this->options['discard_aborted_uploads'] && is_file($file_path) && $file->size > filesize($file_path); - clearstatcache(); - if ($uploaded_file && is_uploaded_file($uploaded_file)) { - // multipart/formdata uploads (POST method uploads) - if ($append_file) { - file_put_contents( - $file_path, - fopen($uploaded_file, 'r'), - FILE_APPEND - ); - } else { - dol_move_uploaded_file($uploaded_file, $file_path, 1); - } - } else { - // Non-multipart uploads (PUT method support) - file_put_contents( - $file_path, - fopen('php://input', 'r'), - $append_file ? FILE_APPEND : 0 - ); - } - $file_size = filesize($file_path); - if ($file_size === $file->size) { - $file->url = $this->options['upload_url'].rawurlencode($file->name); - foreach($this->options['image_versions'] as $version => $options) - { - if ($this->create_scaled_image($file->name, $options)) - { - $tmp=explode('.',$file->name); - $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]); - } - } - } else if ($this->options['discard_aborted_uploads']) { - unlink($file_path); - $file->error = 'abort'; - } - $file->size = $file_size; - $this->set_file_delete_url($file); - } - return $file; - } + /** + * Enter description here ... + * + * @param string $uploaded_file Uploade file + * @param string $file File + * @param string $error Error + * @param string $index Index + * @return unknown|string + */ + protected function validate($uploaded_file, $file, $error, $index) + { + if ($error) { + $file->error = $error; + return false; + } + if (!$file->name) { + $file->error = 'missingFileName'; + return false; + } + if (!preg_match($this->options['accept_file_types'], $file->name)) { + $file->error = 'acceptFileTypes'; + return false; + } + if ($uploaded_file && is_uploaded_file($uploaded_file)) { + $file_size = filesize($uploaded_file); + } else { + $file_size = $_SERVER['CONTENT_LENGTH']; + } + if ($this->options['max_file_size'] && ( + $file_size > $this->options['max_file_size'] || + $file->size > $this->options['max_file_size']) + ) { + $file->error = 'maxFileSize'; + return false; + } + if ($this->options['min_file_size'] && + $file_size < $this->options['min_file_size']) { + $file->error = 'minFileSize'; + return false; + } + if (is_int($this->options['max_number_of_files']) && ( + count($this->get_file_objects()) >= $this->options['max_number_of_files']) + ) { + $file->error = 'maxNumberOfFiles'; + return false; + } + list($img_width, $img_height) = @getimagesize($uploaded_file); + if (is_int($img_width)) { + if ($this->options['max_width'] && $img_width > $this->options['max_width'] || + $this->options['max_height'] && $img_height > $this->options['max_height']) { + $file->error = 'maxResolution'; + return false; + } + if ($this->options['min_width'] && $img_width < $this->options['min_width'] || + $this->options['min_height'] && $img_height < $this->options['min_height']) { + $file->error = 'minResolution'; + return false; + } + } + return true; + } - /** - * Output data - * - * @return void - */ - public function get() - { - $file_name = isset($_REQUEST['file']) ? - basename(stripslashes($_REQUEST['file'])) : null; - if ($file_name) { - $info = $this->get_file_object($file_name); - } else { - $info = $this->get_file_objects(); - } - header('Content-type: application/json'); - echo json_encode($info); - } + /** + * Enter description here ... + * + * @param unknown_type $matches + */ + protected function upcount_name_callback($matches) { + $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; + $ext = isset($matches[2]) ? $matches[2] : ''; + return ' ('.$index.')'.$ext; + } - /** - * Output data - * - * @return void - */ - public function post() - { - if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') { - return $this->delete(); - } - $upload = isset($_FILES[$this->options['param_name']]) ? - $_FILES[$this->options['param_name']] : null; - $info = array(); - if ($upload && is_array($upload['tmp_name'])) { - // param_name is an array identifier like "files[]", - // $_FILES is a multi-dimensional array: - foreach ($upload['tmp_name'] as $index => $value) { - $info[] = $this->handle_file_upload( - $upload['tmp_name'][$index], - isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index], - isset($_SERVER['HTTP_X_FILE_SIZE']) ? $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index], - isset($_SERVER['HTTP_X_FILE_TYPE']) ? $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index], - $upload['error'][$index], - $index - ); - } - } elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) { - // param_name is a single object identifier like "file", - // $_FILES is a one-dimensional array: - $info[] = $this->handle_file_upload( - isset($upload['tmp_name']) ? $upload['tmp_name'] : null, - isset($_SERVER['HTTP_X_FILE_NAME']) ? - $_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ? - $upload['name'] : null), - isset($_SERVER['HTTP_X_FILE_SIZE']) ? - $_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ? - $upload['size'] : null), - isset($_SERVER['HTTP_X_FILE_TYPE']) ? - $_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ? - $upload['type'] : null), - isset($upload['error']) ? $upload['error'] : null - ); - } - header('Vary: Accept'); - $json = json_encode($info); - $redirect = isset($_REQUEST['redirect']) ? - stripslashes($_REQUEST['redirect']) : null; - if ($redirect) { - header('Location: '.sprintf($redirect, rawurlencode($json))); - return; - } - if (isset($_SERVER['HTTP_ACCEPT']) && - (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) { - header('Content-type: application/json'); - } else { - header('Content-type: text/plain'); - } - echo $json; - } + /** + * Enter description here ... + * + * @param unknown_type $name + */ + protected function upcount_name($name) { + return preg_replace_callback( + '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/', + array($this, 'upcount_name_callback'), + $name, + 1 + ); + } - /** - * Delete uploaded file - * - * @return void - */ - public function delete() - { - $file_name = isset($_REQUEST['file']) ? - basename(stripslashes($_REQUEST['file'])) : null; - $file_path = $this->options['upload_dir'].$file_name; - $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path); - if ($success) { - foreach($this->options['image_versions'] as $version => $options) { - $file = $options['upload_dir'].$file_name; - if (is_file($file)) { - unlink($file); - } - } - } - header('Content-type: application/json'); - echo json_encode($success); - } + /** + * Enter description here ... + * + * @param unknown_type $name + * @param unknown_type $type + * @param unknown_type $index + */ + protected function trim_file_name($name, $type, $index) { + // Remove path information and dots around the filename, to prevent uploading + // into different directories or replacing hidden system files. + // Also remove control characters and spaces (\x00..\x20) around the filename: + $file_name = trim(basename(stripslashes($name)), ".\x00..\x20"); + // Add missing file extension for known image types: + if (strpos($file_name, '.') === false && + preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) { + $file_name .= '.'.$matches[1]; + } + if ($this->options['discard_aborted_uploads']) { + while(is_file($this->options['upload_dir'].$file_name)) { + $file_name = $this->upcount_name($file_name); + } + } + return $file_name; + } + + /** + * Enter description here ... + * + * @param unknown_type $file + * @param unknown_type $index + */ + protected function handle_form_data($file, $index) { + // Handle form data, e.g. $_REQUEST['description'][$index] + } + + /** + * Enter description here ... + * + * @param unknown_type $file_path + */ + protected function orient_image($file_path) { + $exif = @exif_read_data($file_path); + if ($exif === false) { + return false; + } + $orientation = intval(@$exif['Orientation']); + if (!in_array($orientation, array(3, 6, 8))) { + return false; + } + $image = @imagecreatefromjpeg($file_path); + switch ($orientation) { + case 3: + $image = @imagerotate($image, 180, 0); + break; + case 6: + $image = @imagerotate($image, 270, 0); + break; + case 8: + $image = @imagerotate($image, 90, 0); + break; + default: + return false; + } + $success = imagejpeg($image, $file_path); + // Free up memory (imagedestroy does not delete files): + @imagedestroy($image); + return $success; + } + + /** + * Enter description here ... + * + * @param string $uploaded_file Uploade file + * @param string $name Name + * @param int $size Size + * @param string $type Type + * @param string $error Error + * @param string $index Index + * @return stdClass + */ + protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index) + { + $file = new stdClass(); + $file->name = $this->trim_file_name($name, $type, $index); + $file->mime = dol_mimetype($file->name,'',2); + $file->size = intval($size); + $file->type = $type; + if ($this->validate($uploaded_file, $file, $error, $index) && dol_mkdir($this->options['upload_dir']) >= 0) { + $this->handle_form_data($file, $index); + $file_path = $this->options['upload_dir'].$file->name; + $append_file = !$this->options['discard_aborted_uploads'] && is_file($file_path) && $file->size > filesize($file_path); + clearstatcache(); + if ($uploaded_file && is_uploaded_file($uploaded_file)) { + // multipart/formdata uploads (POST method uploads) + if ($append_file) { + file_put_contents( + $file_path, + fopen($uploaded_file, 'r'), + FILE_APPEND + ); + } else { + dol_move_uploaded_file($uploaded_file, $file_path, 1); + } + } else { + // Non-multipart uploads (PUT method support) + file_put_contents( + $file_path, + fopen('php://input', 'r'), + $append_file ? FILE_APPEND : 0 + ); + } + $file_size = filesize($file_path); + if ($file_size === $file->size) { + $file->url = $this->options['upload_url'].rawurlencode($file->name); + foreach($this->options['image_versions'] as $version => $options) + { + if ($this->create_scaled_image($file->name, $options)) + { + $tmp=explode('.',$file->name); + $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]); + } + } + } else if ($this->options['discard_aborted_uploads']) { + unlink($file_path); + $file->error = 'abort'; + } + $file->size = $file_size; + $this->set_file_delete_url($file); + } + return $file; + } + + /** + * Output data + * + * @return void + */ + public function get() + { + $file_name = isset($_REQUEST['file']) ? + basename(stripslashes($_REQUEST['file'])) : null; + if ($file_name) { + $info = $this->get_file_object($file_name); + } else { + $info = $this->get_file_objects(); + } + header('Content-type: application/json'); + echo json_encode($info); + } + + /** + * Output data + * + * @return void + */ + public function post() + { + if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') { + return $this->delete(); + } + $upload = isset($_FILES[$this->options['param_name']]) ? + $_FILES[$this->options['param_name']] : null; + $info = array(); + if ($upload && is_array($upload['tmp_name'])) { + // param_name is an array identifier like "files[]", + // $_FILES is a multi-dimensional array: + foreach ($upload['tmp_name'] as $index => $value) { + $info[] = $this->handle_file_upload( + $upload['tmp_name'][$index], + isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index], + isset($_SERVER['HTTP_X_FILE_SIZE']) ? $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index], + isset($_SERVER['HTTP_X_FILE_TYPE']) ? $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index], + $upload['error'][$index], + $index + ); + } + } elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) { + // param_name is a single object identifier like "file", + // $_FILES is a one-dimensional array: + $info[] = $this->handle_file_upload( + isset($upload['tmp_name']) ? $upload['tmp_name'] : null, + isset($_SERVER['HTTP_X_FILE_NAME']) ? + $_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ? + $upload['name'] : null), + isset($_SERVER['HTTP_X_FILE_SIZE']) ? + $_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ? + $upload['size'] : null), + isset($_SERVER['HTTP_X_FILE_TYPE']) ? + $_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ? + $upload['type'] : null), + isset($upload['error']) ? $upload['error'] : null + ); + } + header('Vary: Accept'); + $json = json_encode($info); + $redirect = isset($_REQUEST['redirect']) ? + stripslashes($_REQUEST['redirect']) : null; + if ($redirect) { + header('Location: '.sprintf($redirect, rawurlencode($json))); + return; + } + if (isset($_SERVER['HTTP_ACCEPT']) && + (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) { + header('Content-type: application/json'); + } else { + header('Content-type: text/plain'); + } + echo $json; + } + + /** + * Delete uploaded file + * + * @return void + */ + public function delete() + { + $file_name = isset($_REQUEST['file']) ? + basename(stripslashes($_REQUEST['file'])) : null; + $file_path = $this->options['upload_dir'].$file_name; + $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path); + if ($success) { + foreach($this->options['image_versions'] as $version => $options) { + $file = $options['upload_dir'].$file_name; + if (is_file($file)) { + unlink($file); + } + } + } + header('Content-type: application/json'); + echo json_encode($success); + } }