Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
I use this to show a block:
1) only in a group;
2) only if the user has access (for example, block won't show if the node is unpublished, even if the user owns the node/group);
3) only in groups of a particular named type; and/or
4) only to group admins.
//check og module exists
if (module_exists('og')){
//check we've got a group, rights to view the group,
// and of type "group_type" - change this to whichever group you want to restrict the block to
//or remove the condition entirely
if (($group = og_get_group_context()) && node_access('view', $group) && ($group->type == 'group_type') ) {
//check current user is a team admin
if (og_is_node_admin($group)) return TRUE;
}
}
Comments
different in Drupal 6
og_is_node_admin($group)
is nowog_is_group_admin($group)
Membership requests
I did a filtering for membership request type of a group (approved, invite-only etc.)
I just added
($group->og_selective == '2')
to the if statement.0 is for open, 1 is for moderated, 2 is for invite-only, 3 is for closed groups.
The final code was:
Make visible to all members of particular group
I'd like to make a certain block visible to only members of group "Exhibitors"
However, I'd like this block to be visible on both group and non-group pages (so, anywhere on the site).
I've set the block to only show if the following php returns true:
But it does not appear for any users. I'm assuming it's because it's missing an argument and og_get_group_context() is coming up without results.
Does anyone know how to remedy this problem?
Thanks
Potential solution
Hey madmatter23,
After working on this for a while (had I think the same need as you), I came up with the following that seems to work:
See also http://drupalcontrib.org/api/function/og_is_group_member/6
That's where I got the idea.
trying to do this in d7
here is what I have so far:
This does work however, only for site admin. Any other user, despite being the group admin, does not have the associative array ['3'].
Any help would be appreciated.
Use og_user_access()
You can use og_user_access() to check if user is admin. However you have to assume that "administer group" permission is only given to group admin. If that is the case then you can use: og_user_access()
Regards,
Subhojit Paul