2016-07-25 37 views
0

everyone! 請幫我解決以下問題。Kunena論壇。使用自定義插件爲新用戶設置特殊排名

Kunena 4.0.1。我創建了幾個特殊的用戶等級。某些用戶有權創建新用戶。任務是設置新用戶的等級與默認值不同,但是其中一個特殊等級。 我試圖用與「onUserAfterSave」事件相關的自定義插件來做到這一點。但它沒有奏效。我做錯了什麼?

function onUserAfterSave ($user, $isnew) 
    { 

    if ($isnew) 
    { 
    $NewKUser = KunenaFactory::getUser(intval($user['id'])); 
    $NewKUser->rank['rank_id'] = 11;     
    $NewKUser->save(true); 
    } 
    } 
+0

請詳細說明。你製作了什麼樣的插件,例如系統插件。 kunena插件等?另外你給了什麼類名?它會幫助你調試你的代碼。 –

+0

感謝您的回覆!這是一個用戶插件。類plgUsersetraion擴展了JPlugin –

回答

0

問題解決了:

function onUserAfterSave ($user, $isnew) { 
    if ($isnew) { 
    /*Current user rank*/ 
    $SelfUser = KunenaUserHelper::getMyself(); 
    $SelfUserRank = $SelfUser->getRank(0, false); 
    /*If current user has custom rank...*/ 
    if ($SelfUserRank->rank_id >=11) { 
     /*Setting new user's rank equal to the current user's rank*/ 
     $NewKUser = KunenaUser::getInstance(intval($user['id']), false); 
    $NewKUser->rank = $SelfUserRank->rank_id; 
    $NewKUser->save(); 
    } 
    } 
0

而且我得到了另一種解決方案,一個襯墊代碼,但你需要編輯現有的插件。所以當用戶在joomla註冊時,它會被自動分配一個等級。

爲此,您需要編輯kunena系統插件,您可以在plugins->system->kunena找到該插件。 如果打開kunena.php你會發現一個功能

public function onUserAfterSave($user, $isnew, $success, $msg){ 
.... 
.... 
if ($isnew && intval($user ['id'])) 
     { 
      $kuser = KunenaFactory::getUser(intval($user ['id'])); 
      $kuser->save(); 
     } 

其更改或添加一行$kuser->rank

public function onUserAfterSave($user, $isnew, $success, $msg){ 
    .... 
    .... 
if ($isnew && intval($user ['id'])) 
     { 
      $kuser = KunenaFactory::getUser(intval($user ['id'])); 
      $kuser->rank=11; // The rank which you want 
      $kuser->save(); 
     } 

修改也是它更好的編輯之前創建的插件的副本。