Список ролей указанного (не текущего) пользователя

Прислано: mexmaster

вс, 29/08/2010 - 05:30

Другие статьи по теме:

Подскажите пожалуйста. Должна быть функция, возвращающая перечень ролей пользователя по его id. Нужно в форуме указать под ником. Сам не нашел:(

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано Ch в вс, 29/08/2010 - 06:04.

 user_load не подходит?


Опубликовано us11@drupal.org в вс, 29/08/2010 - 06:18.

"Ch" написал(а):

user_load не подходит?

Зависит от хостинга, не все потянут столько запросов


Опубликовано mexmaster в вс, 29/08/2010 - 06:31.

В "локальном":) хостинге получилось. Спасибо.


Опубликовано Ch в вс, 29/08/2010 - 06:55.

Специально вызывать  user_load для того, что бы получить список ролей, действительно накладно. Лучше сделать собственную функцию. Если не знаете как получить список ролей, посмотрите исходник  user_load.


Опубликовано mexmaster в вс, 29/08/2010 - 15:33.

Пока сделал так - залил в user.module функцию user_roles_load($uid). Возвращает массив полей для $uid:

<?php
// загрузить роли пользователя по uid
function user_roles_load($uid) {
  
$roles = array();

  if (
uid) {
    
$roles[DRUPAL_AUTHENTICATED_RID] = 'authenticated user';
  }
  else {
    
$roles[DRUPAL_ANONYMOUS_RID] = 'anonymous user';
  }
  
$result db_query('SELECT r.rid, r.name FROM {role} r INNER JOIN {users_roles} ur ON ur.rid = r.rid WHERE ur.uid = %d'$uid);
  while (
$role db_fetch_object($result)) {
    
$roles[$role->rid] = $role->name;
  }
  return 
$roles;
}
?>


Опубликовано RxB в вс, 29/08/2010 - 17:51.

"us11@drupal.org" написал(а):

Зависит от хостинга, не все потянут столько запросов

Смишной


Опубликовано us11@drupal.org в пн, 30/08/2010 - 12:37.

kosilko, писал уже на эту тему, что функция user_load не имеет статического кэша, каждый вызов будет сопровождаться глобальным вызовом hook_user и как следствие несколькими запросами в БД


Новое на сайте

Ссылки партнёров