aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2010-02-23 14:38:38 +0000
committerplegall <plg@piwigo.org>2010-02-23 14:38:38 +0000
commitd0f215731db408a463257789d9497b20a4d26bab (patch)
treed349c06c5fcdaba4780ee32f17c9998ebaf19bf2
parent6e6ba78b1bdde7974eb576ba931acfd657c4c146 (diff)
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/branches/2.0@4953 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--include/config_default.inc.php4
-rw-r--r--include/ws_functions.inc.php80
-rw-r--r--ws.php3
3 files changed, 70 insertions, 17 deletions
diff --git a/include/config_default.inc.php b/include/config_default.inc.php
index 5983c392c..822ef7c5e 100644
--- a/include/config_default.inc.php
+++ b/include/config_default.inc.php
@@ -322,6 +322,10 @@ $conf['default_redirect_method'] = 'http';
// Define using double password type in admin's users management panel
$conf['double_password_type_in_admin'] = false;
+// how should we check for unicity when adding a photo. Can be 'md5sum' or
+// 'filename'
+$conf['uniqueness_mode'] = 'md5sum';
+
// +-----------------------------------------------------------------------+
// | metadata |
// +-----------------------------------------------------------------------+
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php
index bad46a12e..4b4f8e7fd 100644
--- a/include/ws_functions.inc.php
+++ b/include/ws_functions.inc.php
@@ -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) = mysql_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];
+ }
}
}
diff --git a/ws.php b/ws.php
index 11fce7aa3..6e73d4c89 100644
--- a/ws.php
+++ b/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'
);