function _user_resource_update in Services 6.3
Same name and namespace in other branches
- 7.3 resources/user_resource.inc \_user_resource_update()
Update an existing user.
This function uses drupal_execute() and as such exepects all input to match the submitting form in question.
Parameters
$uid: Unique identifier for this user
$account: Fields to modify for this user.
Return value
The modified user object.
1 string reference to '_user_resource_update'
- _user_resource_definition in resources/
user_resource.inc - @file This file will define the resources for dealing with the user object
File
- resources/
user_resource.inc, line 274 - This file will define the resources for dealing with the user object
Code
function _user_resource_update($uid, $account) {
// Adds backwards compatability with regression fixed in #1083242
$account = _services_arg_value($account, 'data');
$account['uid'] = $uid;
$account_loaded = user_load($uid);
// Load the required includes for saving profile information
// with drupal_form_submit().
module_load_include('inc', 'user', 'user.pages');
// If a profile category was passed in, use it. Otherwise default
// to 'account' (for saving core user data.)
$category = 'account';
if (isset($account['category'])) {
$category = $account['category'];
unset($account['category']);
}
// Drop any passed in values into the $account var. Anything
// unused by the form just gets ignored. We handle roles and
// password separately.
foreach ($account as $key => $value) {
if ($key != 'pass' && $key != 'roles') {
$form_state['values'][$key] = $value;
}
}
// Prepare values of roles. Check user's permission before allowing changes to roles.
if (!isset($account['roles']) || !user_access('administer users')) {
$account['roles'] = $account_loaded->roles;
}
foreach ($account['roles'] as $key => $value) {
if (!empty($value)) {
$form_state['values']['roles'][$key] = $key;
}
}
unset($form_state['values']['roles'][2]);
// Prepare values for password.
if (isset($account['pass'])) {
$form_state['values']['pass']['pass1'] = $account['pass'];
$form_state['values']['pass']['pass2'] = $account['pass'];
}
// If user is changing name, make sure they have permission.
if (isset($account['name']) && $account['name'] != $account_loaded->name && !(user_access('change own username') || user_access('administer users'))) {
return services_error(t('You are not allowed to change your username.'), 406);
}
$form_state['values']['op'] = variable_get('services_user_save_button_resource_update', t('Save'));
$form_state['values']['#user_category'] = $category;
$form_state['values']['#account'] = $account_loaded;
$form_state['programmed_bypass_access_check'] = FALSE;
$ret = drupal_execute('user_profile_form', $form_state, $account_loaded, $category);
// Error if needed.
if ($errors = form_get_errors()) {
return services_error(implode(" ", $errors), 406, array(
'form_errors' => $errors,
));
}
else {
services_remove_user_data($account);
return $account;
}
}