diff options
author | patdenice <patdenice@piwigo.org> | 2011-04-10 08:59:02 +0000 |
---|---|---|
committer | patdenice <patdenice@piwigo.org> | 2011-04-10 08:59:02 +0000 |
commit | 89803639acb3e3a57ed3b6fcbecb4db0d80bde06 (patch) | |
tree | dd313ddcdec2bfeb37bd5e94e1f00f09094fd284 /include | |
parent | 2d20fe461a795a42bc5216b8f933bf86ee9c7df7 (diff) |
feature:2259
Add web service method: pwg.images.resize
git-svn-id: http://piwigo.org/svn/trunk@10235 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include')
-rw-r--r-- | include/ws_functions.inc.php | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php index 3f322cf61..a2442530f 100644 --- a/include/ws_functions.inc.php +++ b/include/ws_functions.inc.php @@ -2658,4 +2658,76 @@ function ws_themes_performAction($params, &$service) return true; } } + +function ws_images_resize($params, &$service) +{ + global $conf; + + if (!is_admin()) + { + return new PwgError(401, 'Access denied'); + } + + if (!in_array($params['type'], array('thumbnail', 'websize'))) + { + return new PwgError(403, 'Unknown type (only "thumbnail" or "websize" are accepted'); + } + + $resize_params = array('maxwidth', 'maxheight', 'quality'); + $type = $params['type'] == 'thumbnail' ? 'thumb' : 'websize'; + foreach ($resize_params as $param) + { + if (empty($params[$param])) + $params[$param] = $conf['upload_form_'.$type.'_'.$param]; + } + + $query=' +SELECT id, path, tn_ext, has_high +FROM '.IMAGES_TABLE.' +WHERE id = '.(int)$params['image_id'].' +;'; + $image = pwg_db_fetch_assoc(pwg_query($query)); + + if ($image == null) + { + return new PwgError(403, "image_id not found"); + } + + include_once(PHPWG_ROOT_PATH.'admin/include/functions_upload.inc.php'); + + if (!is_valid_image_extension(get_extension($image['path']))) + { + return new PwgError(403, "image can't be resized"); + } + + if ($params['type'] == 'thumbnail' and !empty($image['tn_ext'])) + { + trigger_event( + 'upload_thumbnail_resize', + false, + $image['path'], + get_thumbnail_path($image), + $params['maxwidth'], + $params['maxheight'], + $params['quality'], + true + ); + return true; + } + elseif (!empty($image['has_high'])) + { + trigger_event( + 'upload_image_resize', + false, + file_path_for_type($image['path'], 'high'), + $image['path'], + $params['maxwidth'], + $params['maxheight'], + $params['quality'], + false + ); + return true; + } + return false; +} ?> |