【问题标题】:How to change a Joomla User Group with php如何使用 php 更改 Joomla 用户组
【发布时间】:2012-11-20 10:25:25
【问题描述】:

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

【问题讨论】:

标签: php joomla2.5


【解决方案1】:

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

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

当您拥有该用户时,您可以(我尚未确认)可能立即get the 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 可能会有所帮助。

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

【讨论】:

  • 请注意,如果在 Joomla 3.x 中使用,这似乎会引发 SQL 错误
【解决方案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();

【讨论】:

  • 这对我也很有效 (J!3.3.x),并且从使用直接数据库命令中抽象出来
【解决方案3】:

我使用的是 Joomla 3.7.5,这个方法对我有用:

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

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

【讨论】:

  • 我确认它适用于最新的 Joomla 3.x 版本。您可以将一个用户分配给多个组,将他们的编号插入到数组中。组的id可以在后台看到,不需要访问db。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-26
      • 1970-01-01
      • 2020-05-20
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多