function user_roles

Retrieve an array of roles matching specified conditions.

Parameters

$membersonly: Set this to TRUE to exclude the 'anonymous' role.

$permission: A string containing a permission. If set, only roles containing that permission are returned.

Return value

An associative array with the role id as the key and the role object as value.

6 calls to user_roles()
4 string references to 'user_roles'

File

drupal/core/modules/user/user.module, line 1832
Enables the user registration and login system.

Code

function user_roles($membersonly = FALSE, $permission = NULL) {
  $user_roles =& drupal_static(__FUNCTION__);

  // Do not cache roles for specific permissions. This data is not requested
  // frequently enough to justify the additional memory use.
  if (empty($permission)) {
    $cid = $membersonly ? DRUPAL_AUTHENTICATED_RID : DRUPAL_ANONYMOUS_RID;
    if (isset($user_roles[$cid])) {
      return $user_roles[$cid];
    }
  }
  $roles = entity_load_multiple('user_role');
  if ($membersonly) {
    unset($roles[DRUPAL_ANONYMOUS_RID]);
  }
  if (!empty($permission)) {
    $result = db_select('role_permission', 'p')
      ->fields('p', array(
      'rid',
    ))
      ->condition('p.rid', array_keys($roles))
      ->condition('p.permission', $permission)
      ->execute()
      ->fetchCol();
    $roles = array_intersect_key($roles, array_flip($result));
  }
  if (empty($permission)) {
    $user_roles[$cid] = $roles;
  }
  return $roles;
}