Permalink
Browse files

merge r4953 from branch 2.0 to trunk

feature 1453 added: ability to check for uniqueness on filename. No change on
the default behavior: uniqueness is set on md5sum.


git-svn-id: http://piwigo.org/svn/trunk@4954 68402e56-0260-453c-a942-63ccdbb3a9ee
  • Loading branch information...
plegall committed Feb 23, 2010
1 parent 9daf2aa commit 570c9055564b1de94b35ddc75d42337aaf97ab41
Showing with 71 additions and 18 deletions.
  1. +5 −1 include/config_default.inc.php
  2. +64 −16 include/ws_functions.inc.php
  3. +2 −1 ws.php
@@ -331,6 +331,10 @@
// new user account.
$conf['no_case_sensitive_for_login'] = false;
// how should we check for unicity when adding a photo. Can be 'md5sum' or
// 'filename'
$conf['uniqueness_mode'] = 'md5sum';
// +-----------------------------------------------------------------------+
// | metadata |
// +-----------------------------------------------------------------------+
@@ -745,4 +749,4 @@
// the local data directory is used to store data such as compiled templates
// or other plugin variables etc
$conf['local_data_dir'] = dirname(dirname(__FILE__)).'/_data';
?>
?>
@@ -1204,11 +1204,20 @@ function ws_images_add($params, &$service)
}
// does the image already exists ?
if ('md5sum' == $conf['uniqueness_mode'])
{
$where_clause = "md5sum = '".$params['original_sum']."'";
}
if ('filename' == $conf['uniqueness_mode'])
{
$where_clause = "file = '".$params['original_filename']."'";
}
$query = '
SELECT
COUNT(*) AS counter
FROM '.IMAGES_TABLE.'
WHERE md5sum = \''.$params['original_sum'].'\'
WHERE '.$where_clause.'
;';
list($counter) = pwg_db_fetch_row(pwg_query($query));
if ($counter != 0) {
@@ -1597,37 +1606,76 @@ function ws_tags_add($params, &$service)
function ws_images_exist($params, &$service)
{
global $conf;
if (!is_admin() or is_adviser())
{
return new PwgError(401, 'Access denied');
}
// search among photos the list of photos already added, based on md5sum
// list
$md5sums = preg_split(
'/[\s,;\|]/',
$params['md5sum_list'],
-1,
PREG_SPLIT_NO_EMPTY
$split_pattern = '/[\s,;\|]/';
if ('md5sum' == $conf['uniqueness_mode'])
{
// search among photos the list of photos already added, based on md5sum
// list
$md5sums = preg_split(
$split_pattern,
$params['md5sum_list'],
-1,
PREG_SPLIT_NO_EMPTY
);
$query = '
$query = '
SELECT
id,
md5sum
FROM '.IMAGES_TABLE.'
WHERE md5sum IN (\''.implode("','", $md5sums).'\')
;';
$id_of_md5 = simple_hash_from_query($query, 'md5sum', 'id');
$id_of_md5 = simple_hash_from_query($query, 'md5sum', 'id');
$result = array();
$result = array();
foreach ($md5sums as $md5sum)
{
$result[$md5sum] = null;
if (isset($id_of_md5[$md5sum]))
foreach ($md5sums as $md5sum)
{
$result[$md5sum] = $id_of_md5[$md5sum];
$result[$md5sum] = null;
if (isset($id_of_md5[$md5sum]))
{
$result[$md5sum] = $id_of_md5[$md5sum];
}
}
}
if ('filename' == $conf['uniqueness_mode'])
{
// search among photos the list of photos already added, based on
// filename list
$filenames = preg_split(
$split_pattern,
$params['filename_list'],
-1,
PREG_SPLIT_NO_EMPTY
);
$query = '
SELECT
id,
file
FROM '.IMAGES_TABLE.'
WHERE file IN (\''.implode("','", $filenames).'\')
;';
$id_of_filename = simple_hash_from_query($query, 'file', 'id');
$result = array();
foreach ($filenames as $filename)
{
$result[$filename] = null;
if (isset($id_of_filename[$filename]))
{
$result[$filename] = $id_of_filename[$filename];
}
}
}
3 ws.php
@@ -257,7 +257,8 @@ function ws_addDefaultMethods( $arr )
'pwg.images.exist',
'ws_images_exist',
array(
'md5sum_list'=> array(),
'md5sum_list'=> array('default' => null),
'filename_list' => array('default' => null),
),
'check existence of a photo list'
);

0 comments on commit 570c905

Please sign in to comment.