Drupal 7. Добавить роль пользователю

Главные вкладки

Аватар пользователя anzebra anzebra 22 декабря 2011 в 15:33

Доброго времени суток!

После регистрации пользователь заполняет форму профиля и, если, форма корректно заполнена, необходимо пользователю добавить роли.

Нашла такой метод:

<?php
 
function _assign_user_client_role($order// This assigns the user to "Client" role.
{
    
$usr user_load($order->uid);
    
$details = array(
        
'uid' => $order->uid,
        
'roles' => array(
            
'6' => 'client' 
            
)
        );
    
user_save($usr$details);
}
?>

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

Что то ничего не могу нагуглить.

Может кто знает как такое реализовать грамотно.

Всем спасибо за внимание и ответы.

Комментарии

Аватар пользователя OldWarrior OldWarrior 22 декабря 2011 в 21:42

"anzebra" wrote:
Но не нравится, то что руками нужно писать ид роли...

Как-то так.

<?php
function _assign_user_client_role($order// This assigns the user to "Client" role.
{
    
$usr user_load($order->uid);

    

$roles user_roles();
    
$client_role_id array_search('client'$roles);

    

$details = array(
        
'uid' => $order->uid,
        
'roles' => array(
            
$client_role_id => $roles[$client_role_id
            )
        );
    
user_save($usr$details);
}
?>

PS. И - да, это будет работать, только если роль 'client' существует.
Поскольку проверка результатов array_search('client', $roles) здесь не производится.
Если нужна более строгая проверка, то следует проверить состояние $client_role_id.

<?php
    
....

    

$roles user_roles();
    
$client_role_id array_search('client'$roles);

    if (

$client_role_id) {
      
$details = array(
      
// дальше по вкусу...

    

....
?>