diff options
author | plegall <plg@piwigo.org> | 2010-02-23 14:41:45 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2010-02-23 14:41:45 +0000 |
commit | 570c9055564b1de94b35ddc75d42337aaf97ab41 (patch) | |
tree | 592d478138d561e985d4ff3d0b3ea115cbd26b7f | |
parent | 9daf2aa7b6de3cb464b39a05153d42b965409b2b (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.php | 6 | ||||
-rw-r--r-- | include/ws_functions.inc.php | 80 | ||||
-rw-r--r-- | ws.php | 3 |
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]; + } } } @@ -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' ); |