diff options
author | plegall <plg@piwigo.org> | 2008-10-07 22:01:14 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2008-10-07 22:01:14 +0000 |
commit | 3eecf04629ce2a48208e2f9fe3189eba535d6597 (patch) | |
tree | 59008f2abfc607591cecec4dacdb6e5efdec8ae7 | |
parent | 42c665eefff16db088cf341758e62643ac3ad074 (diff) |
feature 889 added: pwg.images.exist check the existence of a photo in the
database based on its md5sum. (avoid failing on pwg.images.add).
git-svn-id: http://piwigo.org/svn/trunk@2683 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | include/ws_functions.inc.php | 39 | ||||
-rw-r--r-- | tools/piwigo_remote.pl | 19 | ||||
-rw-r--r-- | ws.php | 9 |
3 files changed, 67 insertions, 0 deletions
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php index 57a12ac3b..f14aff70a 100644 --- a/include/ws_functions.inc.php +++ b/include/ws_functions.inc.php @@ -1457,4 +1457,43 @@ function ws_tags_add($params, &$service) return $creation_output; } + +function ws_images_exist($params, &$service) +{ + 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 + ); + + $query = ' +SELECT + id, + md5sum + FROM '.IMAGES_TABLE.' + WHERE md5sum IN (\''.implode("','", $md5sums).'\') +;'; + $id_of_md5 = simple_hash_from_query($query, 'md5sum', 'id'); + + $result = array(); + + foreach ($md5sums as $md5sum) + { + $result[$md5sum] = null; + if (isset($id_of_md5[$md5sum])) + { + $result[$md5sum] = $id_of_md5[$md5sum]; + } + } + + return $result; +} ?> diff --git a/tools/piwigo_remote.pl b/tools/piwigo_remote.pl index f11e0d457..3e3031c82 100644 --- a/tools/piwigo_remote.pl +++ b/tools/piwigo_remote.pl @@ -173,6 +173,25 @@ if ($opt{action} eq 'pwg.tags.add') { print Dumper(from_json($response->content)); } +if ($opt{action} eq 'pwg.images.exist') { + $form = { + method => $opt{action}, + }; + + foreach my $key (keys %{ $opt{define} }) { + $form->{$key} = $opt{define}{$key}; + } + + my $response = $ua->post( + $conf{base_url}.'/ws.php?format=json', + $form + ); + + use Data::Dumper; + print Dumper(from_json($response->content)->{result}); + # print Dumper($response); +} + $query = pwg_ws_get_query( method => 'pwg.session.logout' ); @@ -229,6 +229,15 @@ function ws_addDefaultMethods( $arr ) ), 'administration method only' ); + + $service->addMethod( + 'pwg.images.exist', + 'ws_images_exist', + array( + 'md5sum_list'=> array(), + ), + 'check existence of a photo list' + ); } add_event_handler('ws_add_methods', 'ws_addDefaultMethods'); |