- 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 deletedif it belongs to no
  authorized category (which was the expected behaviour).


git-svn-id: http://piwigo.org/svn/trunk@832 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
plegall 2005-08-18 21:40:59 +00:00
parent 5834354491
commit c8bf225cd4
2 changed files with 33 additions and 8 deletions

View file

@ -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);