Fix: Multi-line function call not indented correctly

This commit is contained in:
Regis Houssin 2012-06-01 08:05:45 +02:00
parent 6c8db0aa2d
commit 84cf35d8f2

View File

@ -103,14 +103,14 @@ class FileUpload
// uploaded images. You can also add additional versions with // uploaded images. You can also add additional versions with
// their own upload directories: // their own upload directories:
/* /*
'large' => array( 'large' => array(
'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/', 'upload_dir' => dirname($_SERVER['SCRIPT_FILENAME']).'/files/',
'upload_url' => $this->getFullUrl().'/files/', 'upload_url' => $this->getFullUrl().'/files/',
'max_width' => 1920, 'max_width' => 1920,
'max_height' => 1200, 'max_height' => 1200,
'jpeg_quality' => 95 'jpeg_quality' => 95
), ),
*/ */
'thumbnail' => array( 'thumbnail' => array(
'upload_dir' => $conf->$element->dir_output . '/' . $object->ref . '/thumbs/', 'upload_dir' => $conf->$element->dir_output . '/' . $object->ref . '/thumbs/',
'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$object->ref.'/thumbs/', 'upload_url' => DOL_URL_ROOT.'/document.php?modulepart='.$element.'&attachment=1&file=/'.$object->ref.'/thumbs/',
@ -145,7 +145,7 @@ class FileUpload
*/ */
protected function set_file_delete_url($file) { protected function set_file_delete_url($file) {
$file->delete_url = $this->options['script_url'] $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']; $file->delete_type = $this->options['delete_type'];
if ($file->delete_type !== 'DELETE') { if ($file->delete_type !== 'DELETE') {
$file->delete_url .= '&_method=DELETE'; $file->delete_url .= '&_method=DELETE';
@ -154,392 +154,392 @@ class FileUpload
/** /**
* Enter description here ... * Enter description here ...
* *
* @param string $file_name Filename * @param string $file_name Filename
* @return stdClass|NULL * @return stdClass|NULL
*/ */
protected function get_file_object($file_name) protected function get_file_object($file_name)
{ {
$file_path = $this->options['upload_dir'].$file_name; $file_path = $this->options['upload_dir'].$file_name;
if (is_file($file_path) && $file_name[0] !== '.') if (is_file($file_path) && $file_name[0] !== '.')
{ {
$file = new stdClass(); $file = new stdClass();
$file->name = $file_name; $file->name = $file_name;
$file->mime = dol_mimetype($file_name,'',2); $file->mime = dol_mimetype($file_name,'',2);
$file->size = filesize($file_path); $file->size = filesize($file_path);
$file->url = $this->options['upload_url'].rawurlencode($file->name); $file->url = $this->options['upload_url'].rawurlencode($file->name);
foreach($this->options['image_versions'] as $version => $options) { foreach($this->options['image_versions'] as $version => $options) {
if (is_file($options['upload_dir'].$file_name)) { if (is_file($options['upload_dir'].$file_name)) {
$tmp=explode('.',$file->name); $tmp=explode('.',$file->name);
$file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]); $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]);
} }
} }
$this->set_file_delete_url($file); $this->set_file_delete_url($file);
return $file; return $file;
} }
return null; return null;
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @return void * @return void
*/ */
protected function get_file_objects() protected function get_file_objects()
{ {
return array_values(array_filter(array_map(array($this, 'get_file_object'), scandir($this->options['upload_dir'])))); return array_values(array_filter(array_map(array($this, 'get_file_object'), scandir($this->options['upload_dir']))));
} }
/** /**
* Create thumbs * Create thumbs
* *
* @param string $file_name Filename * @param string $file_name Filename
* @param string $options is array('max_width', 'max_height') * @param string $options is array('max_width', 'max_height')
* @return void * @return void
*/ */
protected function create_scaled_image($file_name, $options) protected function create_scaled_image($file_name, $options)
{ {
global $maxwidthmini, $maxheightmini; global $maxwidthmini, $maxheightmini;
$file_path = $this->options['upload_dir'].$file_name; $file_path = $this->options['upload_dir'].$file_name;
$new_file_path = $options['upload_dir'].$file_name; $new_file_path = $options['upload_dir'].$file_name;
if (dol_mkdir($options['upload_dir']) >= 0) if (dol_mkdir($options['upload_dir']) >= 0)
{ {
list($img_width, $img_height) = @getimagesize($file_path); list($img_width, $img_height) = @getimagesize($file_path);
if (!$img_width || !$img_height) { if (!$img_width || !$img_height) {
return false; return false;
} }
$res=vignette($file_path,$maxwidthmini,$maxheightmini,'_mini'); $res=vignette($file_path,$maxwidthmini,$maxheightmini,'_mini');
//return $success; //return $success;
if (preg_match('/error/i',$res)) return false; if (preg_match('/error/i',$res)) return false;
return true; return true;
} }
else else
{ {
return false; return false;
} }
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @param string $uploaded_file Uploade file * @param string $uploaded_file Uploade file
* @param string $file File * @param string $file File
* @param string $error Error * @param string $error Error
* @param string $index Index * @param string $index Index
* @return unknown|string * @return unknown|string
*/ */
protected function validate($uploaded_file, $file, $error, $index) protected function validate($uploaded_file, $file, $error, $index)
{ {
if ($error) { if ($error) {
$file->error = $error; $file->error = $error;
return false; return false;
} }
if (!$file->name) { if (!$file->name) {
$file->error = 'missingFileName'; $file->error = 'missingFileName';
return false; return false;
} }
if (!preg_match($this->options['accept_file_types'], $file->name)) { if (!preg_match($this->options['accept_file_types'], $file->name)) {
$file->error = 'acceptFileTypes'; $file->error = 'acceptFileTypes';
return false; return false;
} }
if ($uploaded_file && is_uploaded_file($uploaded_file)) { if ($uploaded_file && is_uploaded_file($uploaded_file)) {
$file_size = filesize($uploaded_file); $file_size = filesize($uploaded_file);
} else { } else {
$file_size = $_SERVER['CONTENT_LENGTH']; $file_size = $_SERVER['CONTENT_LENGTH'];
} }
if ($this->options['max_file_size'] && ( if ($this->options['max_file_size'] && (
$file_size > $this->options['max_file_size'] || $file_size > $this->options['max_file_size'] ||
$file->size > $this->options['max_file_size']) $file->size > $this->options['max_file_size'])
) { ) {
$file->error = 'maxFileSize'; $file->error = 'maxFileSize';
return false; return false;
} }
if ($this->options['min_file_size'] && if ($this->options['min_file_size'] &&
$file_size < $this->options['min_file_size']) { $file_size < $this->options['min_file_size']) {
$file->error = 'minFileSize'; $file->error = 'minFileSize';
return false; return false;
} }
if (is_int($this->options['max_number_of_files']) && ( if (is_int($this->options['max_number_of_files']) && (
count($this->get_file_objects()) >= $this->options['max_number_of_files']) count($this->get_file_objects()) >= $this->options['max_number_of_files'])
) { ) {
$file->error = 'maxNumberOfFiles'; $file->error = 'maxNumberOfFiles';
return false; return false;
} }
list($img_width, $img_height) = @getimagesize($uploaded_file); list($img_width, $img_height) = @getimagesize($uploaded_file);
if (is_int($img_width)) { if (is_int($img_width)) {
if ($this->options['max_width'] && $img_width > $this->options['max_width'] || if ($this->options['max_width'] && $img_width > $this->options['max_width'] ||
$this->options['max_height'] && $img_height > $this->options['max_height']) { $this->options['max_height'] && $img_height > $this->options['max_height']) {
$file->error = 'maxResolution'; $file->error = 'maxResolution';
return false; return false;
} }
if ($this->options['min_width'] && $img_width < $this->options['min_width'] || if ($this->options['min_width'] && $img_width < $this->options['min_width'] ||
$this->options['min_height'] && $img_height < $this->options['min_height']) { $this->options['min_height'] && $img_height < $this->options['min_height']) {
$file->error = 'minResolution'; $file->error = 'minResolution';
return false; return false;
} }
} }
return true; return true;
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @param unknown_type $matches * @param unknown_type $matches
*/ */
protected function upcount_name_callback($matches) { protected function upcount_name_callback($matches) {
$index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1;
$ext = isset($matches[2]) ? $matches[2] : ''; $ext = isset($matches[2]) ? $matches[2] : '';
return ' ('.$index.')'.$ext; return ' ('.$index.')'.$ext;
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @param unknown_type $name * @param unknown_type $name
*/ */
protected function upcount_name($name) { protected function upcount_name($name) {
return preg_replace_callback( return preg_replace_callback(
'/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/', '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/',
array($this, 'upcount_name_callback'), array($this, 'upcount_name_callback'),
$name, $name,
1 1
); );
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @param unknown_type $name * @param unknown_type $name
* @param unknown_type $type * @param unknown_type $type
* @param unknown_type $index * @param unknown_type $index
*/ */
protected function trim_file_name($name, $type, $index) { protected function trim_file_name($name, $type, $index) {
// Remove path information and dots around the filename, to prevent uploading // Remove path information and dots around the filename, to prevent uploading
// into different directories or replacing hidden system files. // into different directories or replacing hidden system files.
// Also remove control characters and spaces (\x00..\x20) around the filename: // Also remove control characters and spaces (\x00..\x20) around the filename:
$file_name = trim(basename(stripslashes($name)), ".\x00..\x20"); $file_name = trim(basename(stripslashes($name)), ".\x00..\x20");
// Add missing file extension for known image types: // Add missing file extension for known image types:
if (strpos($file_name, '.') === false && if (strpos($file_name, '.') === false &&
preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) { preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) {
$file_name .= '.'.$matches[1]; $file_name .= '.'.$matches[1];
} }
if ($this->options['discard_aborted_uploads']) { if ($this->options['discard_aborted_uploads']) {
while(is_file($this->options['upload_dir'].$file_name)) { while(is_file($this->options['upload_dir'].$file_name)) {
$file_name = $this->upcount_name($file_name); $file_name = $this->upcount_name($file_name);
} }
} }
return $file_name; return $file_name;
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @param unknown_type $file * @param unknown_type $file
* @param unknown_type $index * @param unknown_type $index
*/ */
protected function handle_form_data($file, $index) { protected function handle_form_data($file, $index) {
// Handle form data, e.g. $_REQUEST['description'][$index] // Handle form data, e.g. $_REQUEST['description'][$index]
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @param unknown_type $file_path * @param unknown_type $file_path
*/ */
protected function orient_image($file_path) { protected function orient_image($file_path) {
$exif = @exif_read_data($file_path); $exif = @exif_read_data($file_path);
if ($exif === false) { if ($exif === false) {
return false; return false;
} }
$orientation = intval(@$exif['Orientation']); $orientation = intval(@$exif['Orientation']);
if (!in_array($orientation, array(3, 6, 8))) { if (!in_array($orientation, array(3, 6, 8))) {
return false; return false;
} }
$image = @imagecreatefromjpeg($file_path); $image = @imagecreatefromjpeg($file_path);
switch ($orientation) { switch ($orientation) {
case 3: case 3:
$image = @imagerotate($image, 180, 0); $image = @imagerotate($image, 180, 0);
break; break;
case 6: case 6:
$image = @imagerotate($image, 270, 0); $image = @imagerotate($image, 270, 0);
break; break;
case 8: case 8:
$image = @imagerotate($image, 90, 0); $image = @imagerotate($image, 90, 0);
break; break;
default: default:
return false; return false;
} }
$success = imagejpeg($image, $file_path); $success = imagejpeg($image, $file_path);
// Free up memory (imagedestroy does not delete files): // Free up memory (imagedestroy does not delete files):
@imagedestroy($image); @imagedestroy($image);
return $success; return $success;
} }
/** /**
* Enter description here ... * Enter description here ...
* *
* @param string $uploaded_file Uploade file * @param string $uploaded_file Uploade file
* @param string $name Name * @param string $name Name
* @param int $size Size * @param int $size Size
* @param string $type Type * @param string $type Type
* @param string $error Error * @param string $error Error
* @param string $index Index * @param string $index Index
* @return stdClass * @return stdClass
*/ */
protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index) protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index)
{ {
$file = new stdClass(); $file = new stdClass();
$file->name = $this->trim_file_name($name, $type, $index); $file->name = $this->trim_file_name($name, $type, $index);
$file->mime = dol_mimetype($file->name,'',2); $file->mime = dol_mimetype($file->name,'',2);
$file->size = intval($size); $file->size = intval($size);
$file->type = $type; $file->type = $type;
if ($this->validate($uploaded_file, $file, $error, $index) && dol_mkdir($this->options['upload_dir']) >= 0) { if ($this->validate($uploaded_file, $file, $error, $index) && dol_mkdir($this->options['upload_dir']) >= 0) {
$this->handle_form_data($file, $index); $this->handle_form_data($file, $index);
$file_path = $this->options['upload_dir'].$file->name; $file_path = $this->options['upload_dir'].$file->name;
$append_file = !$this->options['discard_aborted_uploads'] && is_file($file_path) && $file->size > filesize($file_path); $append_file = !$this->options['discard_aborted_uploads'] && is_file($file_path) && $file->size > filesize($file_path);
clearstatcache(); clearstatcache();
if ($uploaded_file && is_uploaded_file($uploaded_file)) { if ($uploaded_file && is_uploaded_file($uploaded_file)) {
// multipart/formdata uploads (POST method uploads) // multipart/formdata uploads (POST method uploads)
if ($append_file) { if ($append_file) {
file_put_contents( file_put_contents(
$file_path, $file_path,
fopen($uploaded_file, 'r'), fopen($uploaded_file, 'r'),
FILE_APPEND FILE_APPEND
); );
} else { } else {
dol_move_uploaded_file($uploaded_file, $file_path, 1); dol_move_uploaded_file($uploaded_file, $file_path, 1);
} }
} else { } else {
// Non-multipart uploads (PUT method support) // Non-multipart uploads (PUT method support)
file_put_contents( file_put_contents(
$file_path, $file_path,
fopen('php://input', 'r'), fopen('php://input', 'r'),
$append_file ? FILE_APPEND : 0 $append_file ? FILE_APPEND : 0
); );
} }
$file_size = filesize($file_path); $file_size = filesize($file_path);
if ($file_size === $file->size) { if ($file_size === $file->size) {
$file->url = $this->options['upload_url'].rawurlencode($file->name); $file->url = $this->options['upload_url'].rawurlencode($file->name);
foreach($this->options['image_versions'] as $version => $options) foreach($this->options['image_versions'] as $version => $options)
{ {
if ($this->create_scaled_image($file->name, $options)) if ($this->create_scaled_image($file->name, $options))
{ {
$tmp=explode('.',$file->name); $tmp=explode('.',$file->name);
$file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]); $file->{$version.'_url'} = $options['upload_url'].rawurlencode($tmp[0].'_mini.'.$tmp[1]);
} }
} }
} else if ($this->options['discard_aborted_uploads']) { } else if ($this->options['discard_aborted_uploads']) {
unlink($file_path); unlink($file_path);
$file->error = 'abort'; $file->error = 'abort';
} }
$file->size = $file_size; $file->size = $file_size;
$this->set_file_delete_url($file); $this->set_file_delete_url($file);
} }
return $file; return $file;
} }
/** /**
* Output data * Output data
* *
* @return void * @return void
*/ */
public function get() public function get()
{ {
$file_name = isset($_REQUEST['file']) ? $file_name = isset($_REQUEST['file']) ?
basename(stripslashes($_REQUEST['file'])) : null; basename(stripslashes($_REQUEST['file'])) : null;
if ($file_name) { if ($file_name) {
$info = $this->get_file_object($file_name); $info = $this->get_file_object($file_name);
} else { } else {
$info = $this->get_file_objects(); $info = $this->get_file_objects();
} }
header('Content-type: application/json'); header('Content-type: application/json');
echo json_encode($info); echo json_encode($info);
} }
/** /**
* Output data * Output data
* *
* @return void * @return void
*/ */
public function post() public function post()
{ {
if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') { if (isset($_REQUEST['_method']) && $_REQUEST['_method'] === 'DELETE') {
return $this->delete(); return $this->delete();
} }
$upload = isset($_FILES[$this->options['param_name']]) ? $upload = isset($_FILES[$this->options['param_name']]) ?
$_FILES[$this->options['param_name']] : null; $_FILES[$this->options['param_name']] : null;
$info = array(); $info = array();
if ($upload && is_array($upload['tmp_name'])) { if ($upload && is_array($upload['tmp_name'])) {
// param_name is an array identifier like "files[]", // param_name is an array identifier like "files[]",
// $_FILES is a multi-dimensional array: // $_FILES is a multi-dimensional array:
foreach ($upload['tmp_name'] as $index => $value) { foreach ($upload['tmp_name'] as $index => $value) {
$info[] = $this->handle_file_upload( $info[] = $this->handle_file_upload(
$upload['tmp_name'][$index], $upload['tmp_name'][$index],
isset($_SERVER['HTTP_X_FILE_NAME']) ? $_SERVER['HTTP_X_FILE_NAME'] : $upload['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_SIZE']) ? $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
isset($_SERVER['HTTP_X_FILE_TYPE']) ? $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index], isset($_SERVER['HTTP_X_FILE_TYPE']) ? $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
$upload['error'][$index], $upload['error'][$index],
$index $index
); );
} }
} elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) { } elseif ($upload || isset($_SERVER['HTTP_X_FILE_NAME'])) {
// param_name is a single object identifier like "file", // param_name is a single object identifier like "file",
// $_FILES is a one-dimensional array: // $_FILES is a one-dimensional array:
$info[] = $this->handle_file_upload( $info[] = $this->handle_file_upload(
isset($upload['tmp_name']) ? $upload['tmp_name'] : null, isset($upload['tmp_name']) ? $upload['tmp_name'] : null,
isset($_SERVER['HTTP_X_FILE_NAME']) ? isset($_SERVER['HTTP_X_FILE_NAME']) ?
$_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ? $_SERVER['HTTP_X_FILE_NAME'] : (isset($upload['name']) ?
$upload['name'] : null), $upload['name'] : null),
isset($_SERVER['HTTP_X_FILE_SIZE']) ? isset($_SERVER['HTTP_X_FILE_SIZE']) ?
$_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ? $_SERVER['HTTP_X_FILE_SIZE'] : (isset($upload['size']) ?
$upload['size'] : null), $upload['size'] : null),
isset($_SERVER['HTTP_X_FILE_TYPE']) ? isset($_SERVER['HTTP_X_FILE_TYPE']) ?
$_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ? $_SERVER['HTTP_X_FILE_TYPE'] : (isset($upload['type']) ?
$upload['type'] : null), $upload['type'] : null),
isset($upload['error']) ? $upload['error'] : null isset($upload['error']) ? $upload['error'] : null
); );
} }
header('Vary: Accept'); header('Vary: Accept');
$json = json_encode($info); $json = json_encode($info);
$redirect = isset($_REQUEST['redirect']) ? $redirect = isset($_REQUEST['redirect']) ?
stripslashes($_REQUEST['redirect']) : null; stripslashes($_REQUEST['redirect']) : null;
if ($redirect) { if ($redirect) {
header('Location: '.sprintf($redirect, rawurlencode($json))); header('Location: '.sprintf($redirect, rawurlencode($json)));
return; return;
} }
if (isset($_SERVER['HTTP_ACCEPT']) && if (isset($_SERVER['HTTP_ACCEPT']) &&
(strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) { (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) {
header('Content-type: application/json'); header('Content-type: application/json');
} else { } else {
header('Content-type: text/plain'); header('Content-type: text/plain');
} }
echo $json; echo $json;
} }
/** /**
* Delete uploaded file * Delete uploaded file
* *
* @return void * @return void
*/ */
public function delete() public function delete()
{ {
$file_name = isset($_REQUEST['file']) ? $file_name = isset($_REQUEST['file']) ?
basename(stripslashes($_REQUEST['file'])) : null; basename(stripslashes($_REQUEST['file'])) : null;
$file_path = $this->options['upload_dir'].$file_name; $file_path = $this->options['upload_dir'].$file_name;
$success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path); $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
if ($success) { if ($success) {
foreach($this->options['image_versions'] as $version => $options) { foreach($this->options['image_versions'] as $version => $options) {
$file = $options['upload_dir'].$file_name; $file = $options['upload_dir'].$file_name;
if (is_file($file)) { if (is_file($file)) {
unlink($file); unlink($file);
} }
} }
} }
header('Content-type: application/json'); header('Content-type: application/json');
echo json_encode($success); echo json_encode($success);
} }
} }