все!
Не могли бы вы помочь мне со следующей проблемой.
Кунена 4.0.1. Я создал несколько специальных пользовательских рангов. У некоторых пользователей есть разрешение на создание новых пользователей. Задача состоит в том, чтобы установить ранг нового пользователя, отличающийся от значения по умолчанию, но одного из специальных рангов.
Я пытался сделать это с помощью пользовательского плагина, связанного с событием «onUserAfterSave». Но это не сработало. Что я делаю не так?
function onUserAfterSave ($user, $isnew)
{
if ($isnew)
{
$NewKUser = KunenaFactory::getUser(intval($user['id']));
$NewKUser->rank['rank_id'] = 11;
$NewKUser->save(true);
}
}
Задача решена:
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();
}
Также лучше создать копию этого плагина перед редактированием.