owner_guid != $user->getGUID() )) return $returnvalue; $result = $returnvalue; if(!empty($params) && is_array($params) && ($user = elgg_get_logged_in_user_entity())){ $entity = elgg_extract("entity", $params); if(elgg_instanceof($entity, "user") && ($entity->getGUID() != $user->getGUID())){ if(!empty($result) && !is_array($result)){ $result = array($result); } elseif(empty($result)){ $result = array(); } if(check_entity_relationship($page_owner->getGUID(), "manager", $entity->getGUID())){ // pending request $result[] = ElggMenuItem::factory(array( "name" => "set_group_manager", "text" => elgg_echo("group:setmanager"), "href" => "groups/setmanager/" . $page_owner->getGUID(). "/".$entity->getGUID(), "is_action" => true, "priority" => 503 )); } else { // add as friend $result[] = ElggMenuItem::factory(array( "name" => "set_group_manager", "text" => elgg_echo("group:removemanager"), "href" =>"groups/removemanager/" . $page_owner->getGUID(). "/".$entity->getGUID(), "is_action" => true, "priority" => 503 )); } } } return $result; } function au_subgroups_bugfix_20121024a() { $options = array( 'types' => 'group', 'limit' => 0 ); // using ElggBatch because there may be many, many groups in the installation // try to avoid oom errors $batch = new ElggBatch('elgg_get_entities', $options, 'au_subgroups_fix_acls_20121024a', 50); } function au_subgroups_fix_acls_20121024a($result, $getter, $options) { if ($result->group_acl === NULL) { // group has no acl... create it and add all the members $ac_name = elgg_echo('groups:group') . ": " . $result->name; $group_acl = create_access_collection($ac_name, $result->guid); $result->group_acl = $group_acl; // now add all members of the group to the acl $members = $result->getMembers(0, 0, false); if (is_array($members) && count($members)) { foreach ($members as $member) { add_user_to_access_collection($member->guid, $group_acl); } } } } function subgroups_entity_menu_setup($hook, $type, $return, $params) { if (elgg_in_context('widgets')) { return $return; } /* @var ElggGroup $entity */ $entity = $params['entity']; $handler = elgg_extract('handler', $params, false); if ($handler != 'groups') { return $return; } // group members if ($entity->isMember(elgg_get_logged_in_user_entity())) { if ($entity->getOwnerGUID() != elgg_get_logged_in_user_guid()) { // leave $url = elgg_get_site_url() . "action/groups/leave?group_guid={$entity->getGUID()}"; $url = elgg_add_action_tokens_to_url($url); //$actions[$url] = 'groups:leave'; $options = array( 'name' => 'leave', 'text' => elgg_echo('groups:leave'), 'href' => $url, 'priority' => 201, ); } } elseif (elgg_is_logged_in()) { // join - admins can always join. $url = elgg_get_site_url() . "action/groups/join?group_guid={$entity->getGUID()}"; $url = elgg_add_action_tokens_to_url($url); if ($entity->isPublicMembership() || $entity->canEdit()) { $text = elgg_echo('groups:join'); } else { // request membership $text = elgg_echo('groups:joinrequest'); } $options = array( 'name' => 'join', 'text' => $text, 'href' => $url, 'priority' => 202, ); } $return[] = ElggMenuItem::factory($options); }