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 name as value.

17 calls to user_roles()
AccountFormController::form in drupal/core/modules/user/lib/Drupal/user/AccountFormController.php
Overrides Drupal\Core\Entity\EntityFormController::form().
block_admin_configure in drupal/core/modules/block/block.admin.inc
Form constructor for the block configuration form.
FilterFormatAccessTest::testFormatRoles in drupal/core/modules/filter/lib/Drupal/filter/Tests/FilterFormatAccessTest.php
Tests if text format is available to a role.
FilterPluginBase::buildExposeForm in drupal/core/modules/views/lib/Drupal/views/Plugin/views/filter/FilterPluginBase.php
Options form subform for exposed filter options.
filter_admin_format_form in drupal/core/modules/filter/filter.admin.inc
Form constructor for the text format add/edit form.

... See full list

1 string reference to 'user_roles'
user_views_data in drupal/core/modules/user/user.views.inc
Implements hook_views_data().

File

drupal/core/modules/user/user.module, line 2056
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];
    }
  }
  $query = db_select('role', 'r');
  $query
    ->addTag('translatable');
  $query
    ->fields('r', array(
    'rid',
    'name',
  ));
  $query
    ->orderBy('weight');
  $query
    ->orderBy('name');
  if (!empty($permission)) {
    $query
      ->innerJoin('role_permission', 'p', 'r.rid = p.rid');
    $query
      ->condition('p.permission', $permission);
  }
  if ($membersonly) {
    $query
      ->condition('r.rid', DRUPAL_ANONYMOUS_RID, '!=');
  }
  $roles = $query
    ->execute()
    ->fetchAllKeyed();
  if (empty($permission)) {
    $user_roles[$cid] = $roles;
    return $user_roles[$cid];
  }
  return $roles;
}