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
This commit is contained in:
plegall 2013-11-13 12:58:21 +00:00
parent 892fdb202e
commit b9233b8343
2 changed files with 41 additions and 1 deletions
include/ws_functions
ws.php

View file

@ -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)),

4
ws.php
View file

@ -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.
<br>"username", "password" and "email" are ignored if "user_id" is an array.',
<br>"username", "password" and "email" are ignored if "user_id" is an array.
<br>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)
);