我最近已将a Flash/Perl card game从使用phpBB 3作为后端转移到Drupal 7并且它运行良好,但我对(重新)启用论坛犹豫不决 - 因为我旧网站上的一些用户一直在吓坏我出去了。
我想再次在我的网站上提供论坛,但仅限于在我的网站上玩得足够长并且声誉良好的用户。两个信息(玩了多少游戏+声誉)都由我的Perl游戏维护,并保存在非Drupal表中(但与Drupal表在同一个数据库中)。我创建了受信任用户的Drupal用户角色:
# select * from drupal_role;
rid | name | weight
-----+--------------------+--------
1 | anonymous user | 0
2 | authenticated user | 1
3 | trusted user | 2
(3 rows)
我可以在我的游戏中修改2个点 - 计算游戏的位置和信誉的变化 - 然后调用'insert / delete from users_roles,其中uid =?',但也许在Drupal中有更好的位置,我可以在登录时更改用户角色?
即。用户(重新)访问我的网站,他的信誉和游戏数量通过针对我的非Drupal表的2个快速选择查询进行检查,然后添加(或删除 - 如果他的声誉已降低)到可信用户角色并且可以在论坛中写作。
谢谢! 亚历
答案 0 :(得分:0)
用户Rules用于控制点和更改用户角色。还启用PHP过滤器模块,以在规则中执行自定义PHP代码以运行自定义查询。
答案 1 :(得分:0)
您检查了hook_user_login吗?您需要将它放在自定义模块中,但是您应该能够在通过该挂钩登录后将该角色添加到用户。
答案 2 :(得分:0)
根据用户数量的不同,在执行某些操作时实际为其提供必要的角色,而不是在每个页面加载时执行两个查询,这在性能方面可能更好。
如果您想这样做,可以使用hook_init()将角色添加到全局$ user对象。