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:
parent
aa30ee72d2
commit
a9445d2975
4 changed files with 35 additions and 10 deletions
|
@ -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']))
|
||||
|
|
|
@ -527,6 +527,13 @@ if (count($page['cat_elements_id']) > 0)
|
|||
$is_category = true;
|
||||
}
|
||||
|
||||
if (isset($_SESSION['bulk_manager_filter']['prefilter'])
|
||||
and 'duplicates' == $_SESSION['bulk_manager_filter']['prefilter'])
|
||||
{
|
||||
$conf['order_by'] = ' ORDER BY file, id';
|
||||
}
|
||||
|
||||
|
||||
$query = '
|
||||
SELECT id,path,tn_ext,file,filesize,level,name
|
||||
FROM '.IMAGES_TABLE;
|
||||
|
|
|
@ -150,14 +150,6 @@ $template->assign(
|
|||
|
||||
$advanced_features = array();
|
||||
|
||||
array_push(
|
||||
$advanced_features,
|
||||
array(
|
||||
'CAPTION' => l10n('Files with same name in more than one physical album'),
|
||||
'URL' => get_root_url().'admin.php?page=element_set&cat=duplicates'
|
||||
)
|
||||
);
|
||||
|
||||
//$advanced_features is array of array composed of CAPTION & URL
|
||||
$advanced_features = trigger_event(
|
||||
'get_admin_advanced_features_links',
|
||||
|
|
|
@ -356,8 +356,8 @@ a.removeFilter:hover {background: url(admin/themes/default/icon/remove_filter_ho
|
|||
{if $ENABLE_SYNCHRONIZATION}
|
||||
<option value="with no virtual album" {if $filter.prefilter eq 'with no virtual album'}selected="selected"{/if}>with no virtual album</option>
|
||||
{/if}
|
||||
<option value="duplicates" {if $filter.prefilter eq 'duplicates'}selected="selected"{/if}>duplicates</option>
|
||||
<!-- <option value="with no album">with no album</option> -->
|
||||
<!-- <option value="with no virtual album">with no virtual album</option> -->
|
||||
<!-- <option value="with no tag">with no tag</option> -->
|
||||
</select>
|
||||
</li>
|
||||
|
|
Loading…
Add table
Reference in a new issue