的Drupal 7:使用规则将用户添加到OG然后分配OG角色
问题描述:
这样做是为了实现当添加一个新用户执行以下操作:的Drupal 7:使用规则将用户添加到OG然后分配OG角色
- 创建新组(OG)
- 保存
- 将用户添加到组保存(OG)
- 分配组角色(OG)
我使用的有机基团规则。除了分配组角色之外,一切都很好。我知道你可以添加一般系统角色,但是没有人知道如何分配一个组(OG)角色programmaticaly所以它自动发生?
任何帮助非常赞赏
答
我用下面的自定义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问题有任何想法,请随时与我们分享。 :)
最良好的祝愿
答
您可以使用og_role_grant($ group_type,$ gid,$ uid,$ rid)以编程方式将用户角色分配到有机组。
要将其与规则一起使用,您可以使用hook_rules_action_info()来定义自定义操作。
你有没有找到一个可行的解决方案呢?我正在寻找一个自己,而你从来没有选择任何一个作为答案。 – UnsettlingTrend