mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-05-08 14:25:02 +02:00
feature:2424
ability to duplicate tags git-svn-id: http://piwigo.org/svn/trunk@16526 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
+115
-2
@@ -99,6 +99,115 @@ SELECT id, name
|
||||
$updates
|
||||
);
|
||||
}
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | dulicate tags |
|
||||
// +-----------------------------------------------------------------------+
|
||||
|
||||
if (isset($_POST['duplic_submit']))
|
||||
{
|
||||
$query = '
|
||||
SELECT name
|
||||
FROM '.TAGS_TABLE.'
|
||||
;';
|
||||
$existing_names = array_from_query($query, 'name');
|
||||
|
||||
|
||||
$current_name_of = array();
|
||||
$query = '
|
||||
SELECT id, name
|
||||
FROM '.TAGS_TABLE.'
|
||||
WHERE id IN ('.$_POST['edit_list'].')
|
||||
;';
|
||||
$result = pwg_query($query);
|
||||
while ($row = pwg_db_fetch_assoc($result))
|
||||
{
|
||||
$current_name_of[ $row['id'] ] = $row['name'];
|
||||
}
|
||||
|
||||
$updates = array();
|
||||
// we must not rename tag with an already existing name
|
||||
foreach (explode(',', $_POST['edit_list']) as $tag_id)
|
||||
{
|
||||
$tag_name = stripslashes($_POST['tag_name-'.$tag_id]);
|
||||
|
||||
if ($tag_name != $current_name_of[$tag_id])
|
||||
{
|
||||
if (in_array($tag_name, $existing_names))
|
||||
{
|
||||
array_push(
|
||||
$page['errors'],
|
||||
sprintf(
|
||||
l10n('Tag "%s" already exists'),
|
||||
$tag_name
|
||||
)
|
||||
);
|
||||
}
|
||||
else if (!empty($tag_name))
|
||||
{
|
||||
mass_inserts(
|
||||
TAGS_TABLE,
|
||||
array('name', 'url_name'),
|
||||
array(
|
||||
array(
|
||||
'name' => $tag_name,
|
||||
'url_name' => trigger_event('render_tag_url', $tag_name),
|
||||
)
|
||||
)
|
||||
);
|
||||
$query = '
|
||||
SELECT id
|
||||
FROM '.TAGS_TABLE.'
|
||||
WHERE name = \''.$tag_name.'\'
|
||||
;';
|
||||
$destination_tag = array_from_query($query, 'id');
|
||||
$destination_tag_id = $destination_tag[0];
|
||||
$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)
|
||||
{
|
||||
array_push(
|
||||
$inserts,
|
||||
array(
|
||||
'tag_id' => $destination_tag_id,
|
||||
'image_id' => $image_id
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (count($inserts) > 0)
|
||||
{
|
||||
mass_inserts(
|
||||
IMAGE_TAG_TABLE,
|
||||
array_keys($inserts[0]),
|
||||
$inserts
|
||||
);
|
||||
}
|
||||
array_push(
|
||||
$page['infos'],
|
||||
sprintf(
|
||||
l10n('Tag "%s" is now a duplicate of "%s"'),
|
||||
stripslashes($tag_name),
|
||||
$current_name_of[$tag_id]
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
mass_updates(
|
||||
TAGS_TABLE,
|
||||
array(
|
||||
'primary' => array('id'),
|
||||
'update' => array('name', 'url_name'),
|
||||
),
|
||||
$updates
|
||||
);
|
||||
}
|
||||
|
||||
// +-----------------------------------------------------------------------+
|
||||
// | merge tags |
|
||||
@@ -340,10 +449,14 @@ $template->assign(
|
||||
)
|
||||
);
|
||||
|
||||
if ((isset($_POST['edit']) or isset($_POST['merge'])) and isset($_POST['tags']))
|
||||
if ((isset($_POST['edit']) or isset($_POST['duplicate']) or isset($_POST['merge'])) and isset($_POST['tags']))
|
||||
{
|
||||
$list_name = 'EDIT_TAGS_LIST';
|
||||
if (isset($_POST['merge']))
|
||||
if (isset($_POST['duplicate']))
|
||||
{
|
||||
$list_name = 'DUPLIC_TAGS_LIST';
|
||||
}
|
||||
elseif (isset($_POST['merge']))
|
||||
{
|
||||
$list_name = 'MERGE_TAGS_LIST';
|
||||
}
|
||||
|
||||
@@ -52,6 +52,30 @@ jQuery(document).ready(function(){
|
||||
</p>
|
||||
</fieldset>
|
||||
{/if}
|
||||
{if isset($DUPLIC_TAGS_LIST)}
|
||||
<fieldset>
|
||||
<legend>{'Edit tags'|@translate}</legend>
|
||||
<input type="hidden" name="edit_list" value="{$DUPLIC_TAGS_LIST}">
|
||||
<table class="table2">
|
||||
<tr class="throw">
|
||||
<th>{'Source tag'|@translate}</th>
|
||||
<th>{'Name of the duplicate'|@translate}</th>
|
||||
</tr>
|
||||
{foreach from=$tags item=tag}
|
||||
<tr>
|
||||
<td>{$tag.NAME}</td>
|
||||
<td><input type="text" name="tag_name-{$tag.ID}" value="{$tag.NAME}" size="30"></td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
|
||||
<input class="submit" type="submit" name="duplic_submit" value="{'Submit'|@translate}">
|
||||
<input class="submit" type="reset" value="{'Reset'|@translate}">
|
||||
</p>
|
||||
</fieldset>
|
||||
{/if}
|
||||
|
||||
{if isset($MERGE_TAGS_LIST)}
|
||||
<input type="hidden" name="merge_list" value="{$MERGE_TAGS_LIST}">
|
||||
@@ -85,6 +109,7 @@ jQuery(document).ready(function(){
|
||||
<p>
|
||||
<input type="hidden" name="pwg_token" value="{$PWG_TOKEN}">
|
||||
<input class="submit" type="submit" name="edit" value="{'Edit selected tags'|@translate}">
|
||||
<input class="submit" type="submit" name="duplicate" value="{'Duplicate selected tags'|@translate}">
|
||||
<input class="submit" type="submit" name="merge" value="{'Merge selected tags'|@translate}">
|
||||
<input class="submit" type="submit" name="delete" value="{'Delete selected tags'|@translate}" onclick="return confirm('{'Are you sure?'|@translate}');">
|
||||
</p>
|
||||
|
||||
Reference in New Issue
Block a user