function user_role_permissions

Same name in other branches
  1. 9 core/modules/user/user.module \user_role_permissions()
  2. 8.9.x core/modules/user/user.module \user_role_permissions()
  3. 10 core/modules/user/user.module \user_role_permissions()

Determine the permissions for one or more roles.

Parameters

$roles: An array whose keys are the role IDs of interest, such as $user->roles.

Return value

If $roles is a non-empty array, an array indexed by role ID is returned. Each value is an array whose keys are the permission strings for the given role ID. If $roles is empty nothing is returned.

2 calls to user_role_permissions()
user_access in modules/user/user.module
Determine whether the user has a given privilege.
user_admin_permissions in modules/user/user.admin.inc
Menu callback: administer permissions.
5 string references to 'user_role_permissions'
UserPermissionsTestCase::testUserPermissionChanges in modules/user/user.test
Change user permissions and check user_access().
user_role_delete in modules/user/user.module
Delete a user role from database.
user_role_grant_permissions in modules/user/user.module
Grant permissions to a user role.
user_role_revoke_permissions in modules/user/user.module
Revoke permissions from a user role.
user_role_save in modules/user/user.module
Save a user role to the database.

File

modules/user/user.module, line 756

Code

function user_role_permissions($roles = array()) {
    $cache =& drupal_static(__FUNCTION__, array());
    $role_permissions = $fetch = array();
    if ($roles) {
        foreach ($roles as $rid => $name) {
            if (isset($cache[$rid])) {
                $role_permissions[$rid] = $cache[$rid];
            }
            else {
                // Add this rid to the list of those needing to be fetched.
                $fetch[] = $rid;
                // Prepare in case no permissions are returned.
                $cache[$rid] = array();
            }
        }
        if ($fetch) {
            // Get from the database permissions that were not in the static variable.
            // Only role IDs with at least one permission assigned will return rows.
            $result = db_query("SELECT rid, permission FROM {role_permission} WHERE rid IN (:fetch)", array(
                ':fetch' => $fetch,
            ));
            foreach ($result as $row) {
                $cache[$row->rid][$row->permission] = TRUE;
            }
            foreach ($fetch as $rid) {
                // For every rid, we know we at least assigned an empty array.
                $role_permissions[$rid] = $cache[$rid];
            }
        }
    }
    return $role_permissions;
}

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