/** * Show the group access status indicator * * @param string $hook the name of the hook * @param string $type the type of the hook * @param \ElggMenuItem[] $return_value current return vaue * @param array $params supplied params * * @return void|\ElggMenuItem[] */ public static function showGroupHiddenIndicator($hook, $type, $return_value, $params) { $entity = elgg_extract('entity', $params); if (!$entity instanceof \ElggGroup) { return; } if (!group_tools_show_hidden_indicator($entity)) { return; } $access_id_string = get_readable_access_level($entity->access_id); $text = elgg_format_element('span', ['title' => $access_id_string], elgg_view_icon('eye')); $return_value[] = \ElggMenuItem::factory(['name' => 'hidden_indicator', 'text' => $text, 'href' => false, 'priority' => 1]); return $return_value; }
/** * Modify the entity menu. * * @param string $hook the 'register' hook * @param string $type for the 'menu:entity' menu * @param array $return_value the menu items to show * @param array $params params to help extend the menu items * * @return ElggMenuItem[] a list of menu items */ function group_tools_menu_entity_handler($hook, $type, $return_value, $params) { $result = $return_value; if (!empty($params) && is_array($params)) { $entity = elgg_extract("entity", $params); $page_owner = elgg_get_page_owner_entity(); if (elgg_in_context("group_tools_related_groups") && !empty($page_owner) && elgg_instanceof($page_owner, "group") && $page_owner->canEdit() && elgg_instanceof($entity, "group")) { // remove related group $result[] = ElggMenuItem::factory(array("name" => "related_group", "text" => elgg_echo("group_tools:related_groups:entity:remove"), "href" => "action/group_tools/remove_related_groups?group_guid=" . $page_owner->getGUID() . "&guid=" . $entity->getGUID(), "confirm" => elgg_echo("question:areyousure"))); } elseif (elgg_in_context("widgets_groups_show_members") && elgg_instanceof($entity, "group")) { // number of members $num_members = $entity->getMembers(10, 0, true); $result[] = ElggMenuItem::factory(array("name" => "members", "text" => $num_members . " " . elgg_echo("groups:member"), "href" => false, "priority" => 200)); } elseif (elgg_instanceof($entity, "object", "groupforumtopic") && $entity->canEdit()) { $result[] = ElggMenuItem::factory(array("name" => "status_change_open", "text" => elgg_echo("open"), "confirm" => elgg_echo("group_tools:discussion:confirm:open"), "href" => "action/discussion/toggle_status?guid=" . $entity->getGUID(), "is_trusted" => true, "priority" => 200, "item_class" => $entity->status == "closed" ? "" : "hidden")); $result[] = ElggMenuItem::factory(array("name" => "status_change_close", "text" => elgg_echo("close"), "confirm" => elgg_echo("group_tools:discussion:confirm:close"), "href" => "action/discussion/toggle_status?guid=" . $entity->getGUID(), "is_trusted" => true, "priority" => 201, "item_class" => $entity->status == "closed" ? "hidden" : "")); } elseif (elgg_instanceof($entity, "group") && group_tools_show_hidden_indicator($entity)) { $access_id_string = get_readable_access_level($entity->access_id); $access_id_string = htmlspecialchars($access_id_string, ENT_QUOTES, "UTF-8", false); $text = "<span title='" . $access_id_string . "'>" . elgg_view_icon("eye") . "</span>"; $result[] = ElggMenuItem::factory(array("name" => "hidden_indicator", "text" => $text, "href" => false, "priority" => 1)); } elseif (!elgg_in_context("widgets") && !empty($page_owner) && elgg_instanceof($page_owner, "group") && $page_owner->canEdit() && elgg_instanceof($entity, "user")) { // user listing in a group if ($page_owner->getOwnerGUID() != $entity->getGUID() && $entity->getGUID() != elgg_get_logged_in_user_guid() && $page_owner->isMember($entity)) { // remove user from group $result[] = ElggMenuItem::factory(array("name" => "removeuser", "text" => elgg_echo('groups:removeuser'), "href" => "action/groups/remove?user_guid=" . $entity->getGUID() . "&group_guid=" . $page_owner->getGUID(), "confirm" => elgg_echo("question:areyousure"), "priority" => 900)); // add/remove group admins if (group_tools_group_multiple_admin_enabled($page_owner)) { $is_admin = check_entity_relationship($entity->getGUID(), "group_admin", $page_owner->getGUID()); $result[] = ElggMenuItem::factory(array("name" => "group_admin", "text" => elgg_echo("group_tools:multiple_admin:profile_actions:add"), "href" => "action/group_tools/toggle_admin?group_guid=" . $page_owner->getGUID() . "&user_guid=" . $entity->getGUID(), "is_action" => true, "priority" => 800, "item_class" => $is_admin ? "hidden" : "")); $result[] = ElggMenuItem::factory(array("name" => "group_admin_remove", "text" => elgg_echo("group_tools:multiple_admin:profile_actions:remove"), "href" => "action/group_tools/toggle_admin?group_guid=" . $page_owner->getGUID() . "&user_guid=" . $entity->getGUID(), "is_action" => true, "priority" => 801, "item_class" => $is_admin ? "" : "hidden")); } } } } return $result; }
/** * Modify the entity menu. * * @param string $hook the 'register' hook * @param string $type for the 'menu:entity' menu * @param array $return_value the menu items to show * @param array $params params to help extend the menu items * * @return ElggMenuItem[] a list of menu items */ function group_tools_menu_entity_handler($hook, $type, $return_value, $params) { $result = $return_value; if (!empty($params) && is_array($params)) { $entity = elgg_extract("entity", $params); $page_owner = elgg_get_page_owner_entity(); if (elgg_in_context("group_tools_related_groups") && !empty($page_owner) && elgg_instanceof($page_owner, "group") && $page_owner->canEdit() && elgg_instanceof($entity, "group")) { // remove relatede group $result[] = ElggMenuItem::factory(array("name" => "related_group", "text" => elgg_echo("group_tools:related_groups:entity:remove"), "href" => "action/group_tools/remove_related_groups?group_guid=" . $page_owner->getGUID() . "&guid=" . $entity->getGUID(), "confirm" => elgg_echo("question:areyousure"))); } elseif (elgg_in_context("widgets_groups_show_members") && elgg_instanceof($entity, "group")) { // number of members $num_members = $entity->getMembers(10, 0, true); $result[] = ElggMenuItem::factory(array("name" => "members", "text" => $num_members . " " . elgg_echo("groups:member"), "href" => false, "priority" => 200)); } elseif (elgg_instanceof($entity, "object", "groupforumtopic") && $entity->canEdit()) { $text = elgg_echo("close"); $confirm = elgg_echo("group_tools:discussion:confirm:close"); if ($entity->status == "closed") { $text = elgg_echo("open"); $confirm = elgg_echo("group_tools:discussion:confirm:open"); } $result[] = ElggMenuItem::factory(array("name" => "status_change", "text" => $text, "confirm" => $confirm, "href" => "action/discussion/toggle_status?guid=" . $entity->getGUID(), "is_trusted" => true, "priority" => 200)); } elseif (elgg_instanceof($entity, "group") && group_tools_show_hidden_indicator($entity)) { $access_id_string = get_readable_access_level($entity->access_id); $access_id_string = htmlspecialchars($access_id_string, ENT_QUOTES, "UTF-8", false); $text = "<span title='" . $access_id_string . "'>" . elgg_view_icon("eye") . "</span>"; $result[] = ElggMenuItem::factory(array("name" => "hidden_indicator", "text" => $text, "href" => false, "priority" => 1)); } } return $result; }