aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2010-02-23 14:41:45 +0000
committerplegall <plg@piwigo.org>2010-02-23 14:41:45 +0000
commit570c9055564b1de94b35ddc75d42337aaf97ab41 (patch)
tree592d478138d561e985d4ff3d0b3ea115cbd26b7f
parent9daf2aa7b6de3cb464b39a05153d42b965409b2b (diff)
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
-rw-r--r--include/config_default.inc.php6
-rw-r--r--include/ws_functions.inc.php80
-rw-r--r--ws.php3
3 files changed, 71 insertions, 18 deletions
diff --git a/include/config_default.inc.php b/include/config_default.inc.php
index 45ef18468..c685002bb 100644
--- a/include/config_default.inc.php
+++ b/include/config_default.inc.php
@@ -331,6 +331,10 @@ $conf['double_password_type_in_admin'] = false;
// 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 @@ $conf['light_slideshow'] = true;
// 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';
-?> \ No newline at end of file
+?>
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php
index edd6296b2..20a70d936 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) = 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];
+ }
}
}
diff --git a/ws.php b/ws.php
index 702ff769a..947adcbbd 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'
);