aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog10
-rw-r--r--include/functions_user.inc.php31
2 files changed, 33 insertions, 8 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index cdbee6e5c..f308b844d 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,6 +1,14 @@
2005-08-18 Pierrick LE GALL
- * bug 133 fixed : "Nb of images incorectly rendered in "tool tip"
+ * bug 133 fixed : (report from branch 1.4) Deleting user favorites
+ is too restrictive. Instead of deleting a favorite because it
+ belongs to at least one forbidden category, a favorite is deleted
+ if it belongs to no authorized category (which was the expected
+ behaviour).
+
+2005-08-18 Pierrick LE GALL
+
+ * bug 134 fixed : "Nb of images incorectly rendered in "tool tip"
near category in category menu". Correction reported (and
improved) from branch 1.4
diff --git a/include/functions_user.inc.php b/include/functions_user.inc.php
index 94bf7b562..492d9a6fc 100644
--- a/include/functions_user.inc.php
+++ b/include/functions_user.inc.php
@@ -9,6 +9,7 @@
// | last update : $Date$
// | last modifier : $Author$
// | revision : $Revision$
+// | revision : $Revision$
// +-----------------------------------------------------------------------+
// | This program is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
@@ -235,26 +236,42 @@ function check_user_favorites()
{
return;
}
-
+
+ // retrieving images allowed : belonging to at least one authorized
+ // category
$query = '
-SELECT f.image_id
+SELECT DISTINCT f.image_id
FROM '.FAVORITES_TABLE.' AS f INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic
ON f.image_id = ic.image_id
WHERE f.user_id = '.$user['id'].'
- AND ic.category_id IN ('.$user['forbidden_categories'].')
+ AND ic.category_id NOT IN ('.$user['forbidden_categories'].')
;';
$result = pwg_query($query);
- $elements = array();
+ $authorizeds = array();
while ($row = mysql_fetch_array($result))
{
- array_push($elements, $row['image_id']);
+ array_push($authorizeds, $row['image_id']);
}
- if (count($elements) > 0)
+ $query = '
+SELECT image_id
+ FROM '.FAVORITES_TABLE.'
+ WHERE user_id = '.$user['id'].'
+;';
+ $result = pwg_query($query);
+ $favorites = array();
+ while ($row = mysql_fetch_array($result))
+ {
+ array_push($favorites, $row['image_id']);
+ }
+
+ $to_deletes = array_diff($favorites, $authorizeds);
+
+ if (count($to_deletes) > 0)
{
$query = '
DELETE FROM '.FAVORITES_TABLE.'
- WHERE image_id IN ('.implode(',', $elements).')
+ WHERE image_id IN ('.implode(',', $to_deletes).')
AND user_id = '.$user['id'].'
;';
pwg_query($query);