Как я могу предоставить определенную роль в Ubercart? - PullRequest
1 голос
/ 20 августа 2010

Я пытаюсь предоставить определенную роль пользователям, которые заказывают сумму, равную или превышающую 100,00 €: условные действия приближаются к достижению, но у меня не получается выполнить действие (требуется PHP).

Как я могу предоставить роль с помощью действия PHP в условных действиях Ubercart?

Ответы [ 2 ]

3 голосов
/ 15 августа 2011

Код должен содержать две скобки. Я отбросил операторы if, взял uid из заказа и исправил настройку uid (это было '1'):

  $uid = $order->uid;
  $role_name = 'customer';
  $rid = db_result(db_query("SELECT rid FROM {role} WHERE name = '%s'", $role_name));

  // Load user object
  $account = user_load(array('uid' => $uid));

  // Save the user object with the new roles.
  $roles = $account->roles + array($rid => $role_name);
  user_save($account, array('roles' => $roles));

  watchdog('user', 'uc ca added role to Ubercart created user');
3 голосов
/ 21 августа 2010

Основываясь на паре связанных потоков , я думаю, что вы хотите добавить действие «Выполнить пользовательский код PHP» в соответствии с приведенным ниже описанием (подстановка в соответствующем имени роли в строке № 3):

if($account) {
  $uid = $account->uid;
  $role_name = 'YOUR SPECIFIC ROLE NAME GOES HERE';
  $rid = db_result(db_query("SELECT rid FROM {role} WHERE name = '%s'", $role_name));

  // Load user object
  $account = user_load(array('uid' => 1));

  // Save the user object with the new roles.
  if ($account !== FALSE) {
    $roles = $account->roles + array($rid => $role_name);
    user_save($account, array('roles' => $roles));

  watchdog('user', 'uc ca added role to Ubercart created user');
...