Вы здесь

Список пользователей определённой роли

Версия системы: 
Друпал 5

Данный код выведет список пользователей роли №3. Номера ролей можно посмотреть перейдя по ссылкам «Управление → Пользователи → Роли» и наведя мышку на ссылку правки нужной роли. Последняя цифра в строке статуса будет номером роли.

<?php
$rid
= 3;
$result = db_query("SELECT u.uid, u.name, u.status FROM {users} u INNER JOIN {users_roles} ur ON u.uid=ur.uid WHERE ur.rid = %d AND u.status = 1", $rid); while ($u = db_fetch_object($result)) {
 
$items[] = l($u->name, "user/" . $u->uid);
}
return
theme('item_list', $items);
?>

То же самое, но список пользователей упорядочен по алфавиту.

<?php
$rid
= 3;
$result = db_query("SELECT u.uid, u.name, u.status FROM {users} u INNER JOIN {users_roles} ur ON u.uid=ur.uid WHERE ur.rid = %d AND u.status = 1 ORDER BY u.name ASC", $rid); while ($u = db_fetch_object($result)) {
 
$items[] = l($u->name, "user/" . $u->uid);
}
return
theme('item_list', $items);
?>

Комментарии

Изображение пользователя Анонимно

А можно сделать тоже самое, но с аватаром

Изображение пользователя Анонимно

Тоже занятная таблица:

<?php
//choose the role to list by value.
// Note ID 1 = anonymous, ID 2 = authenticated user
// so valid values here are > 2.

$rid = 6 ;
?>
  <?php

$header
= array(
array(
'data' => t ( 'Username' ), 'field' => 'u.name' , 'sort' => 'asc' ),
array(
'data' => t ( 'Status' ), 'field' => 'u.status' ),
array(
'data' => t ( 'Member for' ), 'field' => 'u.created' ),
array(
'data' => t ( 'Last access' ), 'field' => 'u.access' )
);
$sql = "SELECT u.uid, u.name, u.status, u.created, u.access FROM {users} u INNER JOIN {users_roles} ur ON u.uid=ur.uid WHERE ur.rid = $rid" ;
$sql .= tablesort_sql ( $header );
$result = pager_query ( $sql , 50 );

$status = array( t ( 'blocked' ), t ( 'active' ));
while (
$account = db_fetch_object ( $result )) {
$rows [] = array( theme ( 'username' , $account ),
$status [ $account -> status ],
format_interval ( time () - $account -> created ),
$account -> access ? t ( '%time ago' , array( '%time' => format_interval ( time () - $account -> access ))) : t ( 'never' ));
}

$output = theme ( 'table' , $header , $rows );
$output .= theme ( 'pager' , NULL , 50 , 0 );
print (
$output );
?>