您可以使用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。我没有找到一种不需要进入数据库就能检索组列表的方法,但是 this 可能会有所帮助。
我的(未编辑)用户组数据库截图:
JUserHelper::setUserGroups($joomlaId, array(10));
在此,$joomlaId是我想更改的用户ID。这将用户设置为仅属于10号组,并立即将更改保存到用户数据库。
在这里,我采用了不同的方法,因为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 平台 11.1 版本起可用)
JUserHelper::addUserToGroup (JFactory::getUser()->id, 3); // 3 Is the group number
例如,如果您的用户以前在“已注册”组(id=2)中,那么执行此操作后,他/她也将被分配到第3组。
类似地,还有一个removeUserFromGroup方法,它执行相反的操作。
根据文档,值得注意的是setUserGroups方法支持组的数组,而我在这里提到的其他两种方法支持整数。
setUserGroups(integer $userId, array $groups):布尔值
addUserToGroup(integer $userId, integer $groupId):布尔值
removeUserFromGroup(integer $userId, integer $groupId):布尔值
$db = JFactory::getDbo();
$db->setQuery("replace into xo6uf_user_usergroup_map values ($user_id, $group_id)");
$db->query();