function user_multiple_role_edit in Drupal 7
Same name and namespace in other branches
- 5 modules/user/user.module \user_multiple_role_edit()
- 6 modules/user/user.module \user_multiple_role_edit()
Callback function for admin mass adding/deleting a user role.
1 string reference to 'user_multiple_role_edit'
- user_user_operations in modules/
user/ user.module - Implements hook_user_operations().
File
- modules/
user/ user.module, line 3329 - Enables the user registration and login system.
Code
function user_multiple_role_edit($accounts, $operation, $rid) {
// The role name is not necessary as user_save() will reload the user
// object, but some modules' hook_user() may look at this first.
$role_name = db_query('SELECT name FROM {role} WHERE rid = :rid', array(
':rid' => $rid,
))
->fetchField();
switch ($operation) {
case 'add_role':
$accounts = user_load_multiple($accounts);
foreach ($accounts as $account) {
// Skip adding the role to the user if they already have it.
if ($account !== FALSE && !isset($account->roles[$rid])) {
$roles = $account->roles + array(
$rid => $role_name,
);
// For efficiency manually save the original account before applying
// any changes.
$account->original = clone $account;
user_save($account, array(
'roles' => $roles,
));
}
}
break;
case 'remove_role':
$accounts = user_load_multiple($accounts);
foreach ($accounts as $account) {
// Skip removing the role from the user if they already don't have it.
if ($account !== FALSE && isset($account->roles[$rid])) {
$roles = array_diff($account->roles, array(
$rid => $role_name,
));
// For efficiency manually save the original account before applying
// any changes.
$account->original = clone $account;
user_save($account, array(
'roles' => $roles,
));
}
}
break;
}
}