aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2011-12-13 14:01:10 +0000
committerplegall <plg@piwigo.org>2011-12-13 14:01:10 +0000
commit4bc17c2e409f869381812114ca53f7ccf6299e27 (patch)
tree70882043b02415e7617127347ca3a54f82eb978e
parentc194f7e5783ea6aadd85431a451d3f4b8ad2b9d3 (diff)
merge r12722 from branch 2.3 into trunk
merge r12723 from branch 2.3 into trunk feature 2531 added: pwg.images.add is able to generate web size + thumbnail (remote client needs to set "resize" option to something else than 0). When the "resize" is On, only the "file" must be send with pwg.images.addChunk. Small improvement compared to code implemented in branch 2.3 : use of single_insert when resize is Off, single algorithm to update $info_colums (resize On/Off) git-svn-id: http://piwigo.org/svn/trunk@12724 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--include/ws_functions.inc.php144
-rw-r--r--ws.php3
2 files changed, 90 insertions, 57 deletions
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php
index 47d7d32f1..3673b4a00 100644
--- a/include/ws_functions.inc.php
+++ b/include/ws_functions.inc.php
@@ -1654,46 +1654,90 @@ SELECT
return new PwgError(500, 'file already exists');
}
- // current date
- list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
- list($year, $month, $day) = preg_split('/[^\d]/', $dbnow, 4);
-
- // upload directory hierarchy
- $upload_dir = sprintf(
- $conf['upload_dir'].'/%s/%s/%s',
- $year,
- $month,
- $day
- );
-
- // compute file path
- $date_string = preg_replace('/[^\d]/', '', $dbnow);
- $random_string = substr($params['file_sum'], 0, 8);
- $filename_wo_ext = $date_string.'-'.$random_string;
- $file_path = $upload_dir.'/'.$filename_wo_ext.'.jpg';
+ if ($params['resize'])
+ {
+ ws_logfile('[pwg.images.add] resize activated');
+
+ // temporary file path
+ $type = 'file';
+ $file_path = $conf['upload_dir'].'/buffer/'.$params['original_sum'].'-'.$type;
+
+ merge_chunks($file_path, $params['original_sum'], $type);
+ chmod($file_path, 0644);
- // add files
- $file_infos = add_file($file_path, 'file', $params['original_sum'], $params['file_sum']);
- $thumb_infos = add_file($file_path, 'thumb', $params['original_sum'], $params['thumbnail_sum']);
+ include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php');
+
+ $image_id = add_uploaded_file(
+ $file_path,
+ $params['original_filename']
+ );
- if (isset($params['high_sum']))
- {
- $high_infos = add_file($file_path, 'high', $params['original_sum'], $params['high_sum']);
+ // add_uploaded_file doesn't remove the original file in the buffer
+ // directory if it was not uploaded as $_FILES
+ unlink($file_path);
}
+ else
+ {
+ // current date
+ list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();'));
+ list($year, $month, $day) = preg_split('/[^\d]/', $dbnow, 4);
- // database registration
- $insert = array(
- 'file' => !empty($params['original_filename']) ? $params['original_filename'] : $filename_wo_ext.'.jpg',
- 'date_available' => $dbnow,
- 'tn_ext' => 'jpg',
- 'name' => $params['name'],
- 'path' => $file_path,
- 'filesize' => $file_infos['filesize'],
- 'width' => $file_infos['width'],
- 'height' => $file_infos['height'],
- 'md5sum' => $params['original_sum'],
- 'added_by' => $user['id'],
- );
+ // upload directory hierarchy
+ $upload_dir = sprintf(
+ $conf['upload_dir'].'/%s/%s/%s',
+ $year,
+ $month,
+ $day
+ );
+
+ // compute file path
+ $date_string = preg_replace('/[^\d]/', '', $dbnow);
+ $random_string = substr($params['file_sum'], 0, 8);
+ $filename_wo_ext = $date_string.'-'.$random_string;
+ $file_path = $upload_dir.'/'.$filename_wo_ext.'.jpg';
+
+ // add files
+ $file_infos = add_file($file_path, 'file', $params['original_sum'], $params['file_sum']);
+ $thumb_infos = add_file($file_path, 'thumb', $params['original_sum'], $params['thumbnail_sum']);
+
+ if (isset($params['high_sum']))
+ {
+ $high_infos = add_file($file_path, 'high', $params['original_sum'], $params['high_sum']);
+ }
+
+ // database registration
+ $insert = array(
+ 'file' => !empty($params['original_filename']) ? $params['original_filename'] : $filename_wo_ext.'.jpg',
+ 'date_available' => $dbnow,
+ 'tn_ext' => 'jpg',
+ 'name' => $params['name'],
+ 'path' => $file_path,
+ 'filesize' => $file_infos['filesize'],
+ 'width' => $file_infos['width'],
+ 'height' => $file_infos['height'],
+ 'md5sum' => $params['original_sum'],
+ 'added_by' => $user['id'],
+ );
+
+ if (isset($params['high_sum']))
+ {
+ $insert['has_high'] = 'true';
+ $insert['high_filesize'] = $high_infos['filesize'];
+ $insert['high_width'] = $high_infos['width'];
+ $insert['high_height'] = $high_infos['height'];
+ }
+
+ single_insert(
+ IMAGES_TABLE,
+ $insert
+ );
+
+ $image_id = pwg_db_insert_id(IMAGES_TABLE);
+
+ // update metadata from the uploaded file (exif/iptc)
+ require_once(PHPWG_ROOT_PATH.'admin/include/functions_metadata.php');
+ update_metadata(array($image_id=>$file_path));
+ }
$info_columns = array(
'name',
@@ -1707,27 +1751,19 @@ SELECT
{
if (isset($params[$key]))
{
- $insert[$key] = $params[$key];
+ $update[$key] = $params[$key];
}
}
-
- if (isset($params['high_sum']))
+
+ if (count(array_keys($update)) > 0)
{
- $insert['has_high'] = 'true';
- $insert['high_filesize'] = $high_infos['filesize'];
- $insert['high_width'] = $high_infos['width'];
- $insert['high_height'] = $high_infos['height'];
+ single_update(
+ IMAGES_TABLE,
+ $update,
+ array('id' => $image_id)
+ );
}
- include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
- mass_inserts(
- IMAGES_TABLE,
- array_keys($insert),
- array($insert)
- );
-
- $image_id = pwg_db_insert_id(IMAGES_TABLE);
-
// let's add links between the image and the categories
if (isset($params['categories']))
{
@@ -1743,10 +1779,6 @@ SELECT
);
}
- // update metadata from the uploaded file (exif/iptc)
- require_once(PHPWG_ROOT_PATH.'admin/include/functions_metadata.php');
- update_metadata(array($image_id=>$file_path));
-
invalidate_user_cache();
}
diff --git a/ws.php b/ws.php
index 81af4bb04..1b43cc2b5 100644
--- a/ws.php
+++ b/ws.php
@@ -226,7 +226,7 @@ function ws_addDefaultMethods( $arr )
'ws_images_add',
array(
'file_sum' => array(),
- 'thumbnail_sum' => array(),
+ 'thumbnail_sum' => array('default' => null),
'high_sum' => array('default' => null),
'original_sum' => array(),
'original_filename' => array('default' => null),
@@ -240,6 +240,7 @@ function ws_addDefaultMethods( $arr )
'default' => 0,
'maxValue' => $conf['available_permission_levels']
),
+ 'resize' => array('default' => false),
),
'POST method only.
<br><b>categories</b> is a string list "category_id[,rank];category_id[,rank]" The rank is optional and is equivalent to "auto" if not given.'