aboutsummaryrefslogtreecommitdiffstats
path: root/include
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 /include
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
Diffstat (limited to 'include')
-rw-r--r--include/config_default.inc.php6
-rw-r--r--include/ws_functions.inc.php80
2 files changed, 69 insertions, 17 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];
+ }
}
}