2011-03-12 28 views
0

我最近使用phpBB的3作为后端的Drupal 7转移a Flash/Perl card game和它一直运作良好,但我犹豫(重新)启用论坛 - 因为我旧址的一些用户一直在吓跑我。增加对他的登录/删除用户角色 - 基于非Drupal的表

我想再次提供我的网站的论坛,但只给用户,谁在玩足够长的时间,在我的网站,并有足够好的口碑。这两个信息(有多少游戏+声望)由我的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点在我的游戏 - 在游戏进行计数并在那里的声誉正在被改变 - 然后调用“插入/删除其中users_roles where uid =?',但也许在Drupal有更好的地方,我可以更改用户角色登录

I.e.一个用户(重新)访问我的网站,他的信誉游戏数量通过对我的非Drupal表的2个快速选择查询进行检查,然后将其添加(或删除 - 如果他的声望降低)到受信任用户的作用,并可以在论坛上写。

谢谢! 亚历

回答

0

根据用户的数量,这可能是一个更好的主意性能明智的,实际上给他们必要的角色时,他们做什么,而不是在每一个页面加载执行两个查询。

如果你想这样做,你可以使用hook_init()将角色添加到全局的$用户对象。

0

用户Rules控制点和不断变化的用户角色。还启用PHP过滤器模块在规则中执行自定义PHP代码以运行自定义查询。

0

你检查hook_user_login?您需要将其放入自定义模块中,但是应该可以在通过该挂钩登录后将角色添加到用户。

+0

你好jdwfly,我试过hook_user_login,但它似乎只有当用户提交他的密码时才会调用。我希望有一些其他的钩子可用,例如,当用户重新访问Drupal 7网站,但不必输入密码,因为饼干仍然有效... –

+0

这是真的,钩只火当他们真正登录时。您可以使用像Nikit建议的规则,并在查看页面时触发规则,然后您可以触发您的自定义php。这显然会在每个页面视图上运行,因此您需要确保优化它,以便在不需要时不进行查询。 – jdwfly

+0

您可以使用像hook_init()那样早调用的任何钩子,然后更改全局$用户。 – Berdir