大家好!你能帮我解决以下问题吗。
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);
}
}
问题已解决:
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();
}
此外,最好在编辑之前创建该插件的副本。