aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2011-12-13 13:43:18 +0000
committerplegall <plg@piwigo.org>2011-12-13 13:43:18 +0000
commit094bb7e6827ff7c685dbdca786c394be81f2bdc6 (patch)
treef2cb047f8d7cde49e892e6c029840e3587f7bf45
parent6e6410e2488b6aa4cc503c96e8b1bbb2e1c71732 (diff)
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. git-svn-id: http://piwigo.org/svn/branches/2.3@12722 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--include/ws_functions.inc.php178
-rw-r--r--ws.php3
2 files changed, 115 insertions, 66 deletions
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php
index 47d7d32f1..3022072e1 100644
--- a/include/ws_functions.inc.php
+++ b/include/ws_functions.inc.php
@@ -1654,79 +1654,131 @@ 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
- );
+ 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);
+
+ $image_id = add_uploaded_file(
+ $file_path,
+ $params['original_filename']
+ );
- // 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_uploaded_file doesn't remove the original file in the buffer
+ // directory if it was not uploaded as $_FILES
+ unlink($file_path);
- // 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']);
+ $info_columns = array(
+ 'name',
+ 'author',
+ 'comment',
+ 'level',
+ 'date_creation',
+ );
- if (isset($params['high_sum']))
- {
- $high_infos = add_file($file_path, 'high', $params['original_sum'], $params['high_sum']);
+ foreach ($info_columns as $key)
+ {
+ if (isset($params[$key]))
+ {
+ $update[$key] = $params[$key];
+ }
+ }
+
+ if (count(array_keys($update)) > 0)
+ {
+ single_update(
+ IMAGES_TABLE,
+ $update,
+ array('id' => $image_id)
+ );
+ }
}
+ 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
+ );
- $info_columns = array(
- 'name',
- 'author',
- 'comment',
- 'level',
- 'date_creation',
- );
+ // 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'],
+ );
- foreach ($info_columns as $key)
- {
- if (isset($params[$key]))
+ $info_columns = array(
+ 'name',
+ 'author',
+ 'comment',
+ 'level',
+ 'date_creation',
+ );
+
+ foreach ($info_columns as $key)
{
- $insert[$key] = $params[$key];
+ if (isset($params[$key]))
+ {
+ $insert[$key] = $params[$key];
+ }
}
- }
- 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'];
- }
+ 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'];
+ }
- include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
- mass_inserts(
- IMAGES_TABLE,
- array_keys($insert),
- array($insert)
- );
+ 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);
+ $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));
+ }
// let's add links between the image and the categories
if (isset($params['categories']))
@@ -1743,10 +1795,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.'