繁体   English   中英

如何用php更改Joomla用户组

[英]How to change a Joomla User Group with php

在Joomla 2.5站点中,我想在完成表单后将注册用户分配给另一个组。 用户在完成将在Fabrik中创建的表单时将登录,以便我可以添加PHP脚本以在保存时运行。 我的PHP技能很简陋。 php中的行看起来会将当前用户添加到组中?

您可以使用JUserHelper :: setUserGroups来设置用户的组。

要检索当前用户,您可以使用JFactory :: getUser

当你有这个用户时,你可以(我还没有证实这一点)可能马上获得你的身份 一些未经测试的代码,希望能帮助您:

 $user = JFactory::getUser();
 $userId = $user->id;
 JUserHelper::setUserGroups($userId, 3);

或者简而言之:

 JUserHelper::setUserGroups(JFactory::getUser()->id, 3); // 3 Is the group number

您可以通过进入table-prefix_usergroups表并检索主键来查找组ID。 我还没有找到一个方法来检索组的列表没有进入数据库,但是可能会有帮助。

我的(未编辑的)数据库与用户组的屏幕截图:

用户组joomla 2.5

在这里,我使用了一种不同的方法,因为JUserHelper :: setUserGroups方法总是因我的Joomla 3.3.1安装而失败。

$user = JFactory::getUser();//get current user
$g = array('2'=>2,'3'=>3);//2 for registered user, 3 for author
$user->groups = $g;
$user->save();

您可能还想查看addUserToGroup方法(从Joomla Platform 11.1开始)

JUserHelper::addUserToGroup (JFactory::getUser()->id, 3); // 3 Is the group number

因此,例如,如果您的用户之前处于“已注册”组(id = 2),则此后他/她也将被分配到第3组。

类似地,还有removeUserFromGroup方法,它执行相反的操作。

根据文档,注意setUserGroups方法支持组的数组可能是有用的,而我在这里提到的其他2个方法支持整数。

setUserGroups(integer $ userId,array $ groups):boolean

addUserToGroup(integer $ userId,integer $ groupId):boolean

removeUserFromGroup(integer $ userId,integer $ groupId):boolean

https://api.joomla.org/cms-3/classes/JUserHelper.html

我正在使用Joomla 3.7.5,这种方法对我有用:

JUserHelper::setUserGroups($joomlaId, array(10));

其中,$ joomlaId是我想要更改的用户的id。 这将用户设置为仅作为组10的成员,并立即将更改保存到用户DB。

我在joomla 3中找不到任何有用的方法来做到这一点,所以对于那些只需要这个工作的人来说,这是一个快速的方法:

$db = JFactory::getDbo();
$db->setQuery("replace into xo6uf_user_usergroup_map values ($user_id, $group_id)");
$db->query();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM