diff --git a/commons_groups.module b/commons_groups.module index 60ca2c1..89c1a20 100644 --- a/commons_groups.module +++ b/commons_groups.module @@ -415,26 +415,22 @@ function commons_groups_og_user_access_alter(&$perm, $context) { return; } - - $wrapper = entity_metadata_wrapper($group_type, $group); - if ($wrapper->field_og_subscribe_settings->value() == 'anyone') { - // Group is public. - return; - } - if (og_is_member($group_type, $group->nid, 'user', $account)) { // The user is a group member, so comply to the OG permissions. return; } - // Make sure user can view group (i.e. it's not private). - if (!entity_access('view', $group_type, $group)) { - return; + $wrapper = entity_metadata_wrapper($group_type, $group); + $access_create = FALSE; + if ($wrapper->field_og_subscribe_settings->value() == 'anyone') { + // Group is public. + $access_create = FALSE; } + // Make sure user can view group (i.e. it's not private). $commons_groups_entity_types = commons_groups_get_group_content_entity_types(); foreach (array_keys($commons_groups_entity_types['node']) as $type) { - $perm["create $type content"] = FALSE; + $perm["create $type content"] = $access_create; } }