mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-08-07 01:03:31 +02:00
Issue #1193 : Tag Manager redesign
* Create the new design of tag manager * Replace all actions by ajax actions * Add delete, rename, duplicate and merge tag's functions in the Piwigo API * Modification of group manager to match both designs
This commit is contained in:
@@ -220,14 +220,281 @@ function ws_tags_add($params, &$service)
|
||||
{
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
|
||||
|
||||
if (get_pwg_token() != $params['pwg_token'])
|
||||
{
|
||||
return new PwgError(403, 'Invalid security token');
|
||||
}
|
||||
|
||||
$creation_output = create_tag($params['name']);
|
||||
|
||||
if (isset($creation_output['error']))
|
||||
{
|
||||
return new PwgError(500, $creation_output['error']);
|
||||
return new PwgError(WS_ERR_INVALID_PARAM, $creation_output['error']);
|
||||
}
|
||||
|
||||
pwg_activity('tag', $creation_output['id'], 'add');
|
||||
|
||||
return $creation_output;
|
||||
}
|
||||
|
||||
function ws_tags_delete($params, &$service)
|
||||
{
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
|
||||
|
||||
if (get_pwg_token() != $params['pwg_token'])
|
||||
{
|
||||
return new PwgError(403, 'Invalid security token');
|
||||
}
|
||||
|
||||
$query = '
|
||||
SELECT COUNT(*)
|
||||
FROM `'. TAGS_TABLE .'`
|
||||
WHERE id in ('.implode(',', $params['tag_id']) .')
|
||||
;';
|
||||
list($count) = pwg_db_fetch_row(pwg_query($query));
|
||||
if ($count != count($params['tag_id']))
|
||||
{
|
||||
return new PwgError(WS_ERR_INVALID_PARAM, 'All tags does not exist.');
|
||||
}
|
||||
|
||||
|
||||
$tag_ids = $params['tag_id'];
|
||||
|
||||
if (count($tag_ids) > 0)
|
||||
{
|
||||
delete_tags($params['tag_id']);
|
||||
return array('id' => $tag_ids);
|
||||
foreach ($tag_ids as $ids) {
|
||||
pwg_activity('tag', $creation_output['id'], 'delete');
|
||||
}
|
||||
} else {
|
||||
return array('id' => array());
|
||||
}
|
||||
}
|
||||
|
||||
function ws_tags_rename($params, &$service)
|
||||
{
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
|
||||
|
||||
if (get_pwg_token() != $params['pwg_token'])
|
||||
{
|
||||
return new PwgError(403, 'Invalid security token');
|
||||
}
|
||||
|
||||
$tag_id = $params['tag_id'];
|
||||
$tag_name = $params['new_name'];
|
||||
|
||||
// does the tag exist ?
|
||||
$query = '
|
||||
SELECT COUNT(*)
|
||||
FROM `'. TAGS_TABLE .'`
|
||||
WHERE id = '. $tag_id .'
|
||||
;';
|
||||
list($count) = pwg_db_fetch_row(pwg_query($query));
|
||||
if ($count == 0)
|
||||
{
|
||||
return new PwgError(WS_ERR_INVALID_PARAM, 'This tag does not exist.');
|
||||
}
|
||||
|
||||
$query = '
|
||||
SELECT name
|
||||
FROM '.TAGS_TABLE.'
|
||||
WHERE id != '.$tag_id.'
|
||||
;';
|
||||
$existing_names = array_from_query($query, 'name');
|
||||
|
||||
$update = array();
|
||||
|
||||
if (in_array($tag_name, $existing_names))
|
||||
{
|
||||
return new PwgError(WS_ERR_INVALID_PARAM, 'This name is already token');
|
||||
}
|
||||
else if (!empty($tag_name))
|
||||
{
|
||||
$update = array(
|
||||
'name' => addslashes($tag_name),
|
||||
'url_name' => trigger_change('render_tag_url', $tag_name),
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
pwg_activity('tag', $tag_id, 'edit');
|
||||
|
||||
single_update(
|
||||
TAGS_TABLE,
|
||||
$update,
|
||||
array('id' => $tag_id)
|
||||
);
|
||||
|
||||
return array(
|
||||
'id' => $tag_id,
|
||||
'name' => addslashes($tag_name),
|
||||
'url_name' => trigger_change('render_tag_url', $tag_name)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
function ws_tags_duplicate($params, &$service) {
|
||||
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
|
||||
|
||||
if (get_pwg_token() != $params['pwg_token'])
|
||||
{
|
||||
return new PwgError(403, 'Invalid security token');
|
||||
}
|
||||
|
||||
$tag_id = $params['tag_id'];
|
||||
$copy_name = $params['copy_name'];
|
||||
|
||||
// does the tag exist ?
|
||||
$query = '
|
||||
SELECT COUNT(*)
|
||||
FROM `'. TAGS_TABLE .'`
|
||||
WHERE id = '. $tag_id .'
|
||||
;';
|
||||
list($count) = pwg_db_fetch_row(pwg_query($query));
|
||||
if ($count == 0)
|
||||
{
|
||||
return new PwgError(WS_ERR_INVALID_PARAM, 'This tag does not exist.');
|
||||
}
|
||||
|
||||
$query = '
|
||||
SELECT COUNT(*)
|
||||
FROM `'. TAGS_TABLE .'`
|
||||
WHERE name = "'. $copy_name .'"
|
||||
;';
|
||||
list($count) = pwg_db_fetch_row(pwg_query($query));
|
||||
if ($count != 0)
|
||||
{
|
||||
return new PwgError(WS_ERR_INVALID_PARAM, 'This name is already taken.');
|
||||
}
|
||||
|
||||
|
||||
single_insert(
|
||||
TAGS_TABLE,
|
||||
array(
|
||||
'name' => $copy_name,
|
||||
'url_name' => trigger_change('render_tag_url', $copy_name),
|
||||
)
|
||||
);
|
||||
$destination_tag_id = pwg_db_insert_id(TAGS_TABLE);
|
||||
|
||||
pwg_activity('tag', $destination_tag_id, 'add', array('action'=>'duplicate', 'source_tag'=>$tag_id));
|
||||
|
||||
$query = '
|
||||
SELECT image_id
|
||||
FROM '.IMAGE_TAG_TABLE.'
|
||||
WHERE tag_id = '.$tag_id.'
|
||||
;';
|
||||
$destination_tag_image_ids = array_from_query($query, 'image_id');
|
||||
|
||||
$inserts = array();
|
||||
|
||||
foreach ($destination_tag_image_ids as $image_id)
|
||||
{
|
||||
$inserts[] = array(
|
||||
'tag_id' => $destination_tag_id,
|
||||
'image_id' => $image_id
|
||||
);
|
||||
pwg_activity('image', $image_id, 'edit', array("add-tag" => $destination_tag_id));
|
||||
}
|
||||
|
||||
if (count($inserts) > 0)
|
||||
{
|
||||
mass_inserts(
|
||||
IMAGE_TAG_TABLE,
|
||||
array_keys($inserts[0]),
|
||||
$inserts
|
||||
);
|
||||
}
|
||||
|
||||
return array(
|
||||
'id' => $destination_tag_id,
|
||||
'name' => $copy_name,
|
||||
'url_name' => trigger_change('render_tag_url', $copy_name),
|
||||
);
|
||||
}
|
||||
|
||||
function ws_tags_merge($params, &$service) {
|
||||
|
||||
if (get_pwg_token() != $params['pwg_token'])
|
||||
{
|
||||
return new PwgError(403, 'Invalid security token');
|
||||
}
|
||||
|
||||
$all_tags = $params['merge_tag_id'];
|
||||
array_push($all_tags, $params['destination_tag_id']);
|
||||
|
||||
$all_tags = array_unique($all_tags);
|
||||
$merge_tag = array_diff($params['merge_tag_id'], array($params['destination_tag_id']));
|
||||
|
||||
$query = '
|
||||
SELECT COUNT(*)
|
||||
FROM `'. TAGS_TABLE .'`
|
||||
WHERE id in ('.implode(',', $all_tags) .')
|
||||
;';
|
||||
list($count) = pwg_db_fetch_row(pwg_query($query));
|
||||
if ($count != count($all_tags))
|
||||
{
|
||||
return new PwgError(WS_ERR_INVALID_PARAM, 'All tags does not exist.');
|
||||
}
|
||||
|
||||
$image_in_merge_tags = array();
|
||||
$image_in_dest = array();
|
||||
$image_to_add = array();
|
||||
|
||||
$query = '
|
||||
SELECT DISTINCT(image_id)
|
||||
FROM `'. IMAGE_TAG_TABLE .'`
|
||||
WHERE
|
||||
tag_id IN ('.implode(',', $merge_tag) .')
|
||||
;';
|
||||
$image_in_merge_tags = query2array($query, null, 'image_id');
|
||||
|
||||
$query = '
|
||||
SELECT image_id
|
||||
FROM `'. IMAGE_TAG_TABLE .'`
|
||||
WHERE tag_id = '.$params['destination_tag_id'].'
|
||||
;';
|
||||
|
||||
$image_in_dest = query2array($query, null, 'image_id');;
|
||||
|
||||
|
||||
$image_to_add = array_diff($image_in_merge_tags, $image_in_dest);
|
||||
|
||||
$inserts = array();
|
||||
foreach ($image_to_add as $image)
|
||||
{
|
||||
$inserts[] = array(
|
||||
'tag_id' => $params['destination_tag_id'],
|
||||
'image_id' => $image,
|
||||
);
|
||||
}
|
||||
|
||||
mass_inserts(
|
||||
IMAGE_TAG_TABLE,
|
||||
array('tag_id', 'image_id'),
|
||||
$inserts,
|
||||
array('ignore'=>true)
|
||||
);
|
||||
|
||||
pwg_activity('tag', $params['destination_tag_id'], 'edit');
|
||||
foreach ($image_to_add as $image_id)
|
||||
{
|
||||
pwg_activity('image', $image_id, 'edit', array("tag-add" => $params['destination_tag_id']));
|
||||
}
|
||||
|
||||
include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
|
||||
|
||||
delete_tags($merge_tag);
|
||||
|
||||
$image_in_merged = array_merge($image_in_dest, $image_to_add);
|
||||
|
||||
return array(
|
||||
"destination_tag" => $params['destination_tag_id'],
|
||||
"deleted_tag" => $params['merge_tag_id'],
|
||||
"images_in_merged_tag" => $image_in_merged
|
||||
);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user