aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorplegall <plg@piwigo.org>2008-10-01 21:08:51 +0000
committerplegall <plg@piwigo.org>2008-10-01 21:08:51 +0000
commit600e2d87ecc359b3bd202c4b471c042f319e1e2b (patch)
treee3c09337a0e31213fa12b6233ec74a4f01259852
parent610e5ada6e8e5876a7275e827abf45b849dba06b (diff)
feature 874 added: new Web API method pwg.tags.add.
git-svn-id: http://piwigo.org/svn/trunk@2634 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--admin/include/functions.php45
-rw-r--r--include/ws_functions.inc.php19
-rw-r--r--tools/piwigo_remote.pl15
-rw-r--r--ws.php9
4 files changed, 88 insertions, 0 deletions
diff --git a/admin/include/functions.php b/admin/include/functions.php
index b239b08a1..8f6514d19 100644
--- a/admin/include/functions.php
+++ b/admin/include/functions.php
@@ -1816,4 +1816,49 @@ function get_extents($start='')
return $extents;
}
+function create_tag($tag_name)
+{
+ $tag_name = mysql_real_escape_string($tag_name);
+
+ // does the tag already exists?
+ $query = '
+SELECT id
+ FROM '.TAGS_TABLE.'
+ WHERE name = \''.$tag_name.'\'
+;';
+ $existing_tags = array_from_query($query, 'id');
+
+ if (count($existing_tags) == 0)
+ {
+ mass_inserts(
+ TAGS_TABLE,
+ array('name', 'url_name'),
+ array(
+ array(
+ 'name' => $tag_name,
+ 'url_name' => str2url($tag_name),
+ )
+ )
+ );
+
+ $inserted_id = mysql_insert_id();
+
+ return array(
+ 'info' => sprintf(
+ l10n('Tag "%s" was added'),
+ stripslashes($tag_name)
+ ),
+ 'id' => $inserted_id,
+ );
+ }
+ else
+ {
+ return array(
+ 'error' => sprintf(
+ l10n('Tag "%s" already exists'),
+ stripslashes($tag_name)
+ )
+ );
+ }
+}
?> \ No newline at end of file
diff --git a/include/ws_functions.inc.php b/include/ws_functions.inc.php
index 82635a213..2462832e5 100644
--- a/include/ws_functions.inc.php
+++ b/include/ws_functions.inc.php
@@ -1397,4 +1397,23 @@ function ws_categories_add($params, &$service)
return $creation_output;
}
+
+function ws_tags_add($params, &$service)
+{
+ if (!is_admin() or is_adviser())
+ {
+ return new PwgError(401, 'Access denied');
+ }
+
+ include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
+
+ $creation_output = create_tag($params['name']);
+
+ if (isset($creation_output['error']))
+ {
+ return new PwgError(500, $creation_output['error']);
+ }
+
+ return $creation_output;
+}
?>
diff --git a/tools/piwigo_remote.pl b/tools/piwigo_remote.pl
index 02e447eab..776802589 100644
--- a/tools/piwigo_remote.pl
+++ b/tools/piwigo_remote.pl
@@ -152,6 +152,21 @@ if ($opt{action} eq 'pwg.categories.add') {
print Dumper(from_json($response->content));
}
+if ($opt{action} eq 'pwg.tags.add') {
+ $form = {
+ method => 'pwg.tags.add',
+ name => $opt{define}{name},
+ };
+
+ my $response = $ua->post(
+ $conf{base_url}.'/ws.php?format=json',
+ $form
+ );
+
+ use Data::Dumper;
+ print Dumper(from_json($response->content));
+}
+
$query = pwg_ws_get_query(
method => 'pwg.session.logout'
);
diff --git a/ws.php b/ws.php
index b98d21e65..0c63e0fb5 100644
--- a/ws.php
+++ b/ws.php
@@ -218,6 +218,15 @@ function ws_addDefaultMethods( $arr )
array(),
'administration method only'
);
+
+ $service->addMethod(
+ 'pwg.tags.add',
+ 'ws_tags_add',
+ array(
+ 'name' => array(),
+ ),
+ 'administration method only'
+ );
}
add_event_handler('ws_add_methods', 'ws_addDefaultMethods');