feature 2089: add the "duplicates" feature to the new Batch Manager and

simplify the algorithm. The duplicates do not rely on physical albums, just
on duplicate filenames.


git-svn-id: http://piwigo.org/svn/trunk@8404 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
plegall
2010-12-31 12:34:01 +00:00
parent aa30ee72d2
commit a9445d2975
4 changed files with 35 additions and 10 deletions
+27 -1
View File
@@ -54,7 +54,7 @@ if (isset($_POST['submitFilter']))
if (isset($_POST['filter_prefilter_use']))
{
$prefilters = array('caddie', 'last import', 'with no album', 'with no tag', 'with no virtual album');
$prefilters = array('caddie', 'last import', 'with no album', 'with no tag', 'with no virtual album', 'duplicates');
if (in_array($_POST['filter_prefilter'], $prefilters))
{
$_SESSION['bulk_manager_filter']['prefilter'] = $_POST['filter_prefilter'];
@@ -175,6 +175,32 @@ SELECT id
array_diff($all_elements, $linked_to_virtual)
);
}
if ('duplicates' == $_SESSION['bulk_manager_filter']['prefilter'])
{
// we could use the group_concat MySQL function to retrieve the list of
// image_ids but it would not be compatible with PostgreSQL, so let's
// perform 2 queries instead. We hope there are not too many duplicates.
$query = '
SELECT file
FROM '.IMAGES_TABLE.'
GROUP BY file
HAVING COUNT(*) > 1
;';
$duplicate_files = array_from_query($query, 'file');
$query = '
SELECT id
FROM '.IMAGES_TABLE.'
WHERE file IN (\''.implode("','", $duplicate_files).'\')
;';
array_push(
$filter_sets,
array_from_query($query, 'id')
);
}
}
if (isset($_SESSION['bulk_manager_filter']['category']))