Список ролей указанного (не текущего) пользователя
Прислано: mexmaster
вс, 29/08/2010 - 05:30
Подскажите пожалуйста. Должна быть функция, возвращающая перечень ролей пользователя по его id. Нужно в форуме указать под ником. Сам не нашел:(
- mexmaster's blog
- Для комментирования войдите или зарегистрируйтесь
user_load не подходит?
- Для комментирования войдите или зарегистрируйтесь
user_load не подходит?
Зависит от хостинга, не все потянут столько запросов
- Для комментирования войдите или зарегистрируйтесь
В "локальном":) хостинге получилось. Спасибо.
- Для комментирования войдите или зарегистрируйтесь
Специально вызывать
user_load для того, что бы получить список ролей, действительно накладно. Лучше сделать собственную функцию. Если не знаете как получить список ролей, посмотрите исходник
user_load.
- Для комментирования войдите или зарегистрируйтесь
Пока сделал так - залил в 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;
}
?>- Для комментирования войдите или зарегистрируйтесь
Зависит от хостинга, не все потянут столько запросов
Смишной
- Для комментирования войдите или зарегистрируйтесь
kosilko, писал уже на эту тему, что функция user_load не имеет статического кэша, каждый вызов будет сопровождаться глобальным вызовом hook_user и как следствие несколькими запросами в БД
- Для комментирования войдите или зарегистрируйтесь


Комментарии