Как получить список пользователей в определенной роли?

Я создаю модуль в Drupal 7, которому нужно получить список пользователей из определенной роли. Я видел примеры, показывающие, как получить роль вошедшего в систему пользователя и список ролей, но я не видел ничего, что помогло бы мне получить список пользователей в определенной роли. Есть ли способ сделать это? Я пытался использовать user_role, но это дало мне только список существующих ролей. Есть ли что-то еще, что я должен делать с этим?


person Jesse Samson    schedule 06.08.2013    source источник


Ответы (1)


user_roles() фактически реализован таким образом, что он выполняет поиск в таблице базы данных roles для извлечения всех ролей. Вы можете сделать то же самое и найти в таблице users заданную роль. Пожалуйста, посмотрите на функцию ниже

function getUsersByRole($rid = 1) { // rid = Role Id from users_roles table
    $query = db_select('users', 'u');
    $query->fields('u', array('uid', 'name'));
    $query->innerJoin('users_roles', 'r', 'r.uid = u.uid');
    $query->condition('r.rid', $rid);
    $query->orderBy('u.name');

    $result = $query->execute();

    $users = array();
    foreach ($result as $user) {
        $users[] = $user;
    }

    return $users;
}

$users = getUsersByRole(3);
var_dump($users);

Убедитесь, что вы будете запускать его в среде Drupal.

person Patryk    schedule 06.08.2013