Permalink
Browse files

merge r4459 from branch 2.0 to trunk

feature 1316 added: we now have the ability to only fill the single value
properties that are currently empty in the database instead of automatically
replacing.

feature 1312: as a matter of consistency, I have changed the replace_mode
(that was only for multiple values properties) into multiple_value_mode +
single_value_mode.


git-svn-id: http://piwigo.org/svn/trunk@4460 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information...
plegall committed Dec 9, 2009
1 parent 4f09b78 commit 57db55318ad254446c6d3837e18bc302eb645bca
Showing with 43 additions and 19 deletions.
  1. +38 −17 include/ws_functions.inc.php
  2. +5 −2 ws.php
@@ -1665,13 +1665,6 @@ function ws_images_setInfo($params, &$service)
return new PwgError(401, 'Access denied');
}
// name
// category_id
// file_content
// file_sum
// thumbnail_content
// thumbnail_sum
$params['image_id'] = (int)$params['image_id'];
if ($params['image_id'] <= 0)
{
@@ -1691,9 +1684,7 @@ function ws_images_setInfo($params, &$service)
}
// database registration
$update = array(
'id' => $params['image_id'],
);
$update = array();
$info_columns = array(
'name',
@@ -1703,18 +1694,38 @@ function ws_images_setInfo($params, &$service)
'date_creation',
);
$perform_update = false;
foreach ($info_columns as $key)
{
if (isset($params[$key]))
{
$perform_update = true;
$update[$key] = $params[$key];
if ('fill_if_empty' == $params['single_value_mode'])
{
if (empty($image_row[$key]))
{
$update[$key] = $params[$key];
}
}
elseif ('replace' == $params['single_value_mode'])
{
$update[$key] = $params[$key];
}
else
{
new PwgError(
500,
'[ws_images_setInfo]'
.' invalid parameter single_value_mode "'.$params['single_value_mode'].'"'
.', possible values are {fill_if_empty, replace}.'
);
exit();
}
}
}
if ($perform_update)
if (count(array_keys($update)) > 0)
{
$update['id'] = $params['image_id'];
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
mass_updates(
IMAGES_TABLE,
@@ -1731,7 +1742,7 @@ function ws_images_setInfo($params, &$service)
ws_add_image_category_relations(
$params['image_id'],
$params['categories'],
$params['replace_mode']
('replace' == $params['multiple_value_mode'] ? true : false)
);
}
@@ -1742,20 +1753,30 @@ function ws_images_setInfo($params, &$service)
$tag_ids = explode(',', $params['tag_ids']);
if ($params['replace_mode'])
if ('replace' == $params['multiple_value_mode'])
{
set_tags(
$tag_ids,
$params['image_id']
);
}
else
elseif ('append' == $params['multiple_value_mode'])
{
add_tags(
$tag_ids,
array($params['image_id'])
);
}
else
{
new PwgError(
500,
'[ws_images_setInfo]'
.' invalid parameter multiple_value_mode "'.$params['multiple_value_mode'].'"'
.', possible values are {replace, append}.'
);
exit();
}
}
invalidate_user_cache();
View
7 ws.php
@@ -289,10 +289,13 @@ function ws_addDefaultMethods( $arr )
'default' => 0,
'maxValue' => $conf['available_permission_levels']
),
'replace_mode' => array('default' => false),
'single_value_mode' => array('default' => 'fill_if_empty'),
'multiple_value_mode' => array('default' => 'append'),
),
'POST method only. Admin 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.'
<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.
<br><b>single_value_mode</b> can be "fill_if_empty" (only use the input value if the corresponding values is currently empty) or "replace" (overwrite any existing value) and applies to single values properties like name/author/date_creation/comment
<br><b>multiple_value_mode</b> can be "append" (no change on existing values, add the new values) or "replace" and applies to multiple values properties like tag_ids/categories'
);
$service->addMethod(

0 comments on commit 57db553

Please sign in to comment.