function 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 3347

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;
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.