aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.'