aboutsummaryrefslogtreecommitdiffstats
path: root/admin/picture_modify.php
diff options
context:
space:
mode:
Diffstat (limited to 'admin/picture_modify.php')
-rw-r--r--admin/picture_modify.php37
1 files changed, 33 insertions, 4 deletions
diff --git a/admin/picture_modify.php b/admin/picture_modify.php
index a4d5d8ac5..0840414a6 100644
--- a/admin/picture_modify.php
+++ b/admin/picture_modify.php
@@ -121,13 +121,25 @@ if (isset($_POST['associate'])
and count($_POST['cat_dissociated']) > 0)
{
$datas = array();
+
foreach ($_POST['cat_dissociated'] as $category_id)
{
- array_push($datas, array('image_id' => $_GET['image_id'],
- 'category_id' => $category_id));
+ array_push(
+ $datas,
+ array(
+ 'image_id' => $_GET['image_id'],
+ 'category_id' => $category_id
+ )
+ );
}
- mass_inserts(IMAGE_CATEGORY_TABLE, array('image_id', 'category_id'), $datas);
+
+ mass_inserts(
+ IMAGE_CATEGORY_TABLE,
+ array('image_id', 'category_id'),
+ $datas
+ );
+ check_links();
update_category($_POST['cat_dissociated']);
}
// dissociate the element from categories (but not from its storage category)
@@ -135,12 +147,29 @@ if (isset($_POST['dissociate'])
and isset($_POST['cat_associated'])
and count($_POST['cat_associated']) > 0)
{
+ $associated_categories = $_POST['cat_associated'];
+
+ // If the same element is associated to a source and its destinations,
+ // dissociating the element with the source implies dissociating the
+ // element fwith the destination.
+ $destinations_of = get_destinations($_POST['cat_associated']);
+ foreach ($destinations_of as $source => $destinations)
+ {
+ $associated_categories = array_merge(
+ $associated_categories,
+ $destinations
+ );
+ }
+
$query = '
DELETE FROM '.IMAGE_CATEGORY_TABLE.'
WHERE image_id = '.$_GET['image_id'].'
- AND category_id IN ('.implode(',',$_POST['cat_associated'] ).')
+ AND category_id IN ('.implode(',', $associated_categories).')
+ AND is_storage = \'false\'
';
pwg_query($query);
+
+ check_links();
update_category($_POST['cat_associated']);
}
// elect the element to represent the given categories