Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
/**
 * 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;
}
Exemplo n.º 3
0
/**
 * 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;
}