的Drupal 7:使用规则将用户添加到OG然后分配OG角色

问题描述:

这样做是为了实现当添加一个新用户执行以下操作:的Drupal 7:使用规则将用户添加到OG然后分配OG角色

  • 创建新组(OG)
  • 保存
  • 将用户添加到组保存(OG)
  • 分配组角色(OG)

我使用的有机基团规则。除了分配组角色之外,一切都很好。我知道你可以添加一般系统角色,但是没有人知道如何分配一个组(OG)角色programmaticaly所以它自动发生?

任何帮助非常赞赏

+0

你有没有找到一个可行的解决方案呢?我正在寻找一个自己,而你从来没有选择任何一个作为答案。 – UnsettlingTrend

我用下面的自定义PHP行动的规则,将用户添加到组,然后分配OG作用。

OG角色编号显示为按照OG角色的顺序,如通过admin/config OG条目查看的那样。

global $user; 

// Load the user we want to add to the group 
$account = user_load($user->uid);  

// Add the user to the group - hard code group 18 which is my group as cant 
// get PID from Ubercart order, to pull gid from nid. User, current user, active, 
// etc., all default in 2nd array() param to og_group. 
og_group(18); 

// Changes the users role in the group (1 = non-member, 2 = member, 3 = administrator member, 4 = Forum Administrator) 
og_role_grant(18, $account->uid, 2); 

注意,OG的作用4(论坛管理员)是我创建了一个自定义的OG作用。另外,我相信'member'(2)是默认的,但是我把它放在了这里,所以我会记住如果将来我需要分配其他OG角色。

我不是一个PHP大师不幸的是,我仍然还没有制定出如何从产品的Ubercart有序的,所以我可以得到它的GID,因此没有硬编码的18

的GID节点拉PID

希望上面的代码(主要是og_role_grant)作为一个规则动作自定义php代码片段(记住不要在顶部和底部包含php标签,因为规则为您执行此操作)。

如果您对我的订购ubercart产品的gid问题有任何想法,请随时与我们分享。 :)

最良好的祝愿

有一个建议有机基团补丁添加此功能有机基团规则整合。

你可以在这里找到补丁:https://drupal.org/node/1327326

它增加了GRANT和REVOKE角色的行动。

您可以使用og_role_grant($ group_type,$ gid,$ uid,$ rid)以编程方式将用户角色分配到有机组。

要将其与规则一起使用,您可以使用hook_rules_action_info()来定义自定义操作。