Кунена форум. Установка специального ранга для нового пользователя с помощью пользовательского плагина

Все! Не могли бы вы помочь мне со следующей проблемой.

Кунена 4.0.1. Я создал несколько специальных пользовательских рангов. У некоторых пользователей есть разрешение на создание новых пользователей. Задача состоит в том, чтобы установить ранг нового пользователя, отличающийся от значения по умолчанию, но одного из специальных рангов. Я пытался сделать это с помощью пользовательского плагина, связанного с событием "onUserAfterSave". Но это не сработало. Что я делаю не так?

 function onUserAfterSave ($user, $isnew) 
  {

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

2 ответа

Задача решена:

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();
    }
   }

Также у меня есть другое решение, код с одним вкладышем, но вам нужно отредактировать существующий плагин. Поэтому, когда пользователь регистрируется в 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();
        }

Также лучше создать копию этого плагина перед редактированием.

Другие вопросы по тегам