Доброго времени суток!
После регистрации пользователь заполняет форму профиля и, если, форма корректно заполнена, необходимо пользователю добавить роли.
Нашла такой метод:
<?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);
}
?>
Но не нравится, то что руками нужно писать ид роли...
Что то ничего не могу нагуглить.
Может кто знает как такое реализовать грамотно.
Всем спасибо за внимание и ответы.
Комментарии
Dev version: http://drupal.org/project/autoassignrole незнаю работает версия под 7ку или нет.
Как-то так.
<?php
$roles = user_roles();
$details = array(
function _assign_user_client_role($order) // This assigns the user to "Client" role.
{
$usr = user_load($order->uid);
$client_role_id = array_search('client', $roles);
'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(
// дальше по вкусу...
?>