From b9233b8343509c0de1abee3fc5465a5bd177efda Mon Sep 17 00:00:00 2001 From: plegall Date: Wed, 13 Nov 2013 12:58:21 +0000 Subject: feature 2976: ability to set group association with pwg.users.setInfo git-svn-id: http://piwigo.org/svn/trunk@25474 68402e56-0260-453c-a942-63ccdbb3a9ee --- include/ws_functions/pwg.users.php | 38 ++++++++++++++++++++++++++++++++++++++ ws.php | 4 +++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/include/ws_functions/pwg.users.php b/include/ws_functions/pwg.users.php index 42a362ec2..cbc988343 100644 --- a/include/ws_functions/pwg.users.php +++ b/include/ws_functions/pwg.users.php @@ -516,6 +516,44 @@ UPDATE '. USER_INFOS_TABLE .' SET '; pwg_query($query); } + // manage association to groups + if (!empty($params['group_id'])) + { + $query = ' +DELETE + FROM '.USER_GROUP_TABLE.' + WHERE user_id IN ('.implode(',', $params['user_id']).') +;'; + pwg_query($query); + + // we remove all provided groups that do not really exist + $query = ' +SELECT + id + FROM '.GROUPS_TABLE.' + WHERE id IN ('.implode(',', $params['group_id']).') +;'; + $group_ids = array_from_query($query, 'id'); + + // if only -1 (a group id that can't exist) is in the list, then no + // group is associated + + if (count($group_ids) > 0) + { + $inserts = array(); + + foreach ($group_ids as $group_id) + { + foreach ($params['user_id'] as $user_id) + { + $inserts[] = array('user_id' => $user_id, 'group_id' => $group_id); + } + } + + mass_inserts(USER_GROUP_TABLE, array_keys($inserts[0]), $inserts); + } + } + return $service->invoke('pwg.users.getList', array( 'user_id' => $params['user_id'], 'display' => 'basics,'.implode(',', array_keys($updates_infos)), diff --git a/ws.php b/ws.php index b3f7c0076..94ea92503 100644 --- a/ws.php +++ b/ws.php @@ -884,6 +884,7 @@ enabled_high, registration_date, registration_date_string, registration_date_sin 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), 'language' => array('flags'=>WS_PARAM_OPTIONAL), 'theme' => array('flags'=>WS_PARAM_OPTIONAL), + 'group_id' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, 'type'=>WS_TYPE_INT), // bellow are parameters removed in a future version 'nb_image_page' => array('flags'=>WS_PARAM_OPTIONAL, 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE|WS_TYPE_NOTNULL), @@ -899,7 +900,8 @@ enabled_high, registration_date, registration_date_string, registration_date_sin 'type'=>WS_TYPE_BOOL), ), 'Updates a user. Leave a field blank to keep the current value. -
"username", "password" and "email" are ignored if "user_id" is an array.', +
"username", "password" and "email" are ignored if "user_id" is an array. +
set "group_id" to -1 if you want to dissociate users from all groups', $ws_functions_root . 'pwg.users.php', array('admin_only'=>true, 'post_only'=>true) ); -- cgit v1.2.3