2010-08-20 75 views
1

我試圖授予一個特定的角色給訂購金額等於或大於100.00€的用戶:條件操作將會非常接近成就,但我在操作上失敗(PHP要求)。如何在Ubercart中授予特定角色?

如何在Ubercart條件操作中使用PHP操作授予角色?

+0

可能重複:// stackoverflow.com/questions/3533415/how-to-assign-role-with-php-in-drupal) – kiamlaluno 2010-08-24 05:22:47

+0

是的,你是對的,我不記得爲什麼我在同一天兩次提交相同的問題..另一個則受到了更多的關注。 – dag729 2010-08-24 19:53:02

回答

3

基於幾個relatedthreads,我想你想沿着以下(代入適當的角色名行#3)行添加一個「執行定製的PHP代碼」行動:

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'); 
+0

我寧願建議使用核心'user_multiple_role_edit()'函數:http://api.drupal.org/api/drupal/modules%21user%21user.module/function/user_multiple_role_edit/6,其中'$ accounts '必須是一個uid數組,'$ operation'必須與''add_role''相等,'$ rid'必須等於給定角色的id(你可以通過搜索來發現它user_roles()'的返回值:http://api.drupal.org/api/drupal/modules!user!user.module/function/user_roles/6)。它非常易於使用。 – Sk8erPeter 2012-03-05 21:17:56

3

提供的代碼需要關閉兩個括號。我放棄了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'); 
[如何分配與PHP在Drupal的角色?(HTTP的