fixes #2173 allow comma separated list for image_id in pwg.images.syncMetadata

This commit is contained in:
plegall
2024-07-09 15:42:21 +02:00
parent 3b376edfb1
commit 6e6a74c348
3 changed files with 36 additions and 10 deletions
@@ -212,7 +212,7 @@ jQuery('#applyAction').click(function(e) {
var todo = 0;
var syncBlockSize = Math.min(
Number((elements.length/2).toFixed()),
500
1000
);
var image_ids = Array();
@@ -235,7 +235,7 @@ jQuery('#applyAction').click(function(e) {
dataType: "json",
data: {
pwg_token: jQuery("input[name=pwg_token]").val(),
image_id: ids
image_id: ids.join(',')
},
success: function(data) {
todo += thisBatchSize;
+33 -5
View File
@@ -2615,24 +2615,52 @@ function ws_images_syncMetadata($params, $service)
return new PwgError(403, 'Invalid security token');
}
if (!is_array($params['image_id']))
{
$params['image_id'] = preg_split(
'/[\s,;\|]/',
$params['image_id'],
-1,
PREG_SPLIT_NO_EMPTY
);
}
$image_ids = array();
foreach ($params['image_id'] as $image_id)
{
$image_id = trim($image_id);
if (!preg_match(PATTERN_ID, $image_id))
{
return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid image_id "'.$image_id.'"');
}
$image_ids[] = $image_id;
}
if (empty($image_ids))
{
return new PwgError(WS_ERR_INVALID_PARAM, 'Invalid image_id (no value after filters)');
}
$query = '
SELECT id
FROM '.IMAGES_TABLE.'
WHERE id IN ('.implode(', ', $params['image_id']).')
WHERE id IN ('.implode(', ', $image_ids).')
;';
$params['image_id'] = query2array($query, null, 'id');
$image_ids = query2array($query, null, 'id');
if (empty($params['image_id']))
if (empty($image_ids))
{
return new PwgError(403, 'No image found');
}
include_once(PHPWG_ROOT_PATH.'admin/include/functions_metadata.php');
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
sync_metadata($params['image_id']);
sync_metadata($image_ids);
return array(
'nb_synchronized' => count($params['image_id'])
'nb_synchronized' => count($image_ids)
);
}
+1 -3
View File
@@ -567,9 +567,7 @@ function ws_addDefaultMethods( $arr )
'pwg.images.syncMetadata',
'ws_images_syncMetadata',
array(
'image_id' => array('default'=>null,
'type'=>WS_TYPE_ID|WS_TYPE_POSITIVE,
'flags'=>WS_PARAM_FORCE_ARRAY),
'image_id' => array('flags'=>WS_PARAM_ACCEPT_ARRAY, 'info'=>'Comma separated ids or array of id'),
'pwg_token' => array(),
),
'Sync metadatas, by blocks. Returns how many images were synchronized',