3

在 Joomla 2.5 站点中,我想在注册用户完成表单后将其分配到另一个组。用户将在完成将在 Fabrik 中创建的表单时登录,以便我可以添加一个 PHP 脚本以在保存时运行。我的php技能很初级。将当前用户添加到组的 php 中的行是什么样的?

4

5 回答 5

4

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

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

当您拥有该用户时,您可以(我尚未确认)可能立即获得该 ID。一些未经测试的代码有望让您上路:

 $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

于 2012-11-21T16:26:47.773 回答
2

在这里,我使用了一种不同的方法,因为 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();
于 2014-08-27T14:19:58.100 回答
2

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

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

其中,$joomlaId 是我要更改的用户的 ID。这将用户设置为仅组 10 的成员,并立即将更改保存到用户数据库。

于 2017-09-06T17:18:35.363 回答
1

您可能还想查看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

于 2016-01-28T20:54:34.390 回答
0

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

$db = JFactory::getDbo();
$db->setQuery("replace into xo6uf_user_usergroup_map values ($user_id, $group_id)");
$db->query();
于 2014-08-28T19:01:52.570 回答