Esempio n. 1
0
/**
 * Setup My status menu
 *
 * @param string         $hook   "register"
 * @param string         $type   "menu:groups:my_status"
 * @param ElggMenuItem[] $return Menu
 * @param array          $params Hook params
 * @return ElggMenuItem[]
 */
function group_profile_my_status_menu_setup($hook, $type, $return, $params)
{
    $entity = elgg_extract('entity', $params, elgg_get_page_owner_entity());
    $user = elgg_get_logged_in_user_entity();
    if (!$entity instanceof ElggGroup || !$user instanceof ElggUser) {
        return;
    }
    $identifier = is_callable('group_subtypes_get_identifier') ? group_subtypes_get_identifier($entity) : 'groups';
    if ($entity->owner_guid == $user->guid) {
        $return[] = ElggMenuItem::factory(array('name' => 'membership_status', 'text' => '<a>' . elgg_echo("{$identifier}:my_status:group_owner") . '</a>', 'href' => false));
    } else {
        if ($entity->isMember($user)) {
            $return[] = ElggMenuItem::factory(array('name' => 'membership_status', 'text' => '<a>' . elgg_echo("{$identifier}:my_status:group_member") . '</a>', 'href' => false));
        } else {
            if (check_entity_relationship($user->guid, 'membership_request', $entity->guid)) {
                $return[] = ElggMenuItem::factory(array('name' => 'membership_status', 'text' => '<a>' . elgg_echo("{$identifier}:my_status:membership_request_pending") . '</a>', 'href' => false));
            } else {
                $return[] = ElggMenuItem::factory(array('name' => 'membership_status', 'text' => $entity->isPublicMembership() ? elgg_echo("{$identifier}:join") : elgg_echo("{$identifier}:joinrequest"), 'href' => "/action/groups/join?group_guid={$entity->guid}", 'is_action' => true));
            }
        }
    }
    if (elgg_is_active_plugin('notifications') && $entity->isMember($user)) {
        $subscribed = false;
        $NOTIFICATION_HANDLERS = _elgg_services()->notifications->getMethods();
        foreach ($NOTIFICATION_HANDLERS as $method => $foo) {
            $relationship = check_entity_relationship($user->guid, 'notify' . $method, $entity->guid);
            if ($relationship) {
                $subscribed = true;
                break;
            }
        }
        if ($subscribed) {
            $return[] = ElggMenuItem::factory(array('name' => 'subscription_status', 'text' => elgg_echo("{$identifier}:subscribed"), 'href' => "notifications/group/{$user->username}", 'is_action' => true));
        } else {
            $return[] = ElggMenuItem::factory(array('name' => 'subscription_status', 'text' => elgg_echo("{$identifier}:unsubscribed"), 'href' => "notifications/group/{$user->username}"));
        }
    }
    return $return;
}
Esempio n. 2
0
<?php

/**
 * Search for content in this group
 *
 * @uses vars['entity'] ElggGroup
 */
$entity = elgg_extract('entity', $vars, elgg_get_page_owner_entity());
if (!elgg_group_gatekeeper(false, $entity->guid)) {
    return;
}
$identifier = is_callable('group_subtypes_get_identifier') ? group_subtypes_get_identifier($entity) : 'groups';
$url = elgg_get_site_url() . 'search';
$body = elgg_view_form('groups/search', array('action' => $url, 'method' => 'get', 'disable_security' => true), $vars);
echo elgg_view_module('aside', elgg_echo("{$identifier}:search_in_group"), $body);
/**
 * Setup group membership menu
 * 
 * @param string         $hook   "register"
 * @param sring          $type   "menu:membership"
 * @param ElggMenuItem[] $return Menu
 * @param array          $params Hook params
 * @return ElggMenuItem[]
 */
function group_membership_menu_setup($hook, $type, $return, $params)
{
    $user = elgg_extract('entity', $params);
    $group = elgg_extract('group', $params, elgg_get_page_owner_entity());
    if (!$user instanceof ElggUser || !$group instanceof ElggGroup) {
        return;
    }
    $identifier = is_callable('group_subtypes_get_identifier') ? group_subtypes_get_identifier($group) : 'groups';
    if ($group->isMember($user)) {
        if ($group->canEdit()) {
            if (($admin = check_entity_relationship($user->guid, 'group_admin', $group->guid)) || $group->owner_guid == $user->guid) {
                // subtitle element will be added identifying group administrator
                if ($admin && $user->guid != elgg_get_logged_in_user_guid()) {
                    $return[] = ElggMenuItem::factory(array('name' => "{$identifier}:removeadmin", 'href' => "action/groups/remove_admin?user_guid={$user->guid}&group_guid={$group->guid}", 'text' => elgg_echo("{$identifier}:removeadmin"), 'confirm' => true));
                }
            } else {
                $return[] = ElggMenuItem::factory(array('name' => "{$identifier}:removeuser", 'href' => "action/groups/remove?user_guid={$user->guid}&group_guid={$group->guid}", 'text' => elgg_echo("{$identifier}:removeuser"), 'confirm' => true));
                $return[] = ElggMenuItem::factory(array('name' => "{$identifier}:makeadmin", 'href' => "action/groups/make_admin?user_guid={$user->guid}&group_guid={$group->guid}", 'text' => elgg_echo("{$identifier}:makeadmin"), 'confirm' => true));
            }
        }
    } else {
        if (check_entity_relationship($user->guid, 'membership_request', $group->guid)) {
            $return[] = ElggMenuItem::factory(array('name' => "{$identifier}:request:accept", 'href' => $url = "action/groups/addtogroup?user_guid={$user->guid}&group_guid={$group->guid}", 'text' => elgg_echo("{$identifier}:request:accept")));
            $return[] = ElggMenuItem::factory(array('name' => "{$identifier}:request:decline", 'href' => "action/groups/killrequest?user_guid={$user->guid}&group_guid={$group->guid}", 'confirm' => elgg_echo('groups:joinrequest:remove:check'), 'text' => elgg_echo("{$identifier}:request:decline")));
        } else {
            if (check_entity_relationship($group->guid, 'invited', $user->guid)) {
                $return[] = ElggMenuItem::factory(array('name' => "{$identifier}:invitation:revoke", 'text' => elgg_echo("{$identifier}:invitation:revoke"), 'href' => "action/groups/killinvitation?user_guid={$user->guid}&group_guid={$group->guid}", 'confirm' => true));
            }
        }
    }
    return $return;
}
Esempio n. 4
0
/**
 * Returns menu items to be registered in the title menu of the group profile
 *
 * @param ElggGroup $entity Group entity
 * @return ElggMenuItem[]
 */
function group_list_get_profile_buttons(ElggGroup $entity)
{
    if (!elgg_is_logged_in()) {
        return [];
    }
    $identifier = is_callable('group_subtypes_get_identifier') ? group_subtypes_get_identifier($entity) : 'groups';
    $items = elgg_trigger_plugin_hook('profile_buttons', 'group', ['entity' => $entity], []);
    $unset = array('groups:edit', 'groups:invite', 'groups:leave', 'groups:join', 'groups:joinrequest');
    foreach ($items as $key => $item) {
        if (in_array($item->getName(), $unset)) {
            unset($items[$key]);
        }
    }
    if (elgg_is_admin_logged_in()) {
        $isFeatured = $entity->featured_group == "yes";
        $items[] = ElggMenuItem::factory(array('name' => 'feature', 'text' => elgg_echo("{$identifier}:makefeatured"), 'href' => elgg_add_action_tokens_to_url("action/groups/featured?group_guid={$entity->guid}&action_type=feature"), 'item_class' => $isFeatured ? 'hidden' : ''));
        $items[] = ElggMenuItem::factory(array('name' => 'unfeature', 'text' => elgg_echo("{$identifier}:makeunfeatured"), 'href' => elgg_add_action_tokens_to_url("action/groups/featured?group_guid={$entity->guid}&action_type=unfeature"), 'item_class' => $isFeatured ? '' : 'hidden'));
    }
    $actions = [];
    $user = elgg_get_logged_in_user_entity();
    if ($user && $entity->isMember($user)) {
        if ($entity->owner_guid != $user->guid) {
            // a member can leave a group if he/she doesn't own it
            $actions["{$identifier}:leave"] = "action/groups/leave?group_guid={$entity->guid}";
        }
    } else {
        if ($user && check_entity_relationship($entity->guid, 'invited', $user->guid)) {
            $actions["{$identifier}:invitation:accept"] = elgg_http_add_url_query_elements('action/groups/join', array('user_guid' => $user->guid, 'group_guid' => $entity->guid));
            $actions["{$identifier}:invitation:decline"] = elgg_http_add_url_query_elements('action/groups/killinvitation', array('user_guid' => $user->guid, 'group_guid' => $entity->guid));
        } else {
            if ($user && check_entity_relationship($user->guid, 'membership_request', $entity->guid)) {
                $actions["{$identifier}:killrequest"] = elgg_http_add_url_query_elements('action/groups/killrequest', array('user_guid' => $user->guid, 'group_guid' => $entity->guid));
            } else {
                if ($user) {
                    $url = "action/groups/join?group_guid={$entity->guid}";
                    if ($entity->isPublicMembership() || $entity->canEdit()) {
                        // admins can always join
                        // non-admins can join if membership is public
                        $actions["{$identifier}:join"] = $url;
                    } else {
                        // request membership
                        $actions["{$identifier}:joinrequest"] = $url;
                    }
                }
            }
        }
    }
    if ($entity->canEdit() || $entity->isMember() && $entity->invites_enable == 'yes') {
        $actions["{$identifier}:invite"] = "{$identifier}/invite/{$entity->guid}";
    }
    if ($entity->canEdit()) {
        $actions["{$identifier}:edit"] = "{$identifier}/edit/{$entity->guid}";
        if (!$entity->isPublicMembership()) {
            $count = elgg_get_entities_from_relationship(array('type' => 'user', 'relationship' => 'membership_request', 'relationship_guid' => $entity->guid, 'inverse_relationship' => true, 'count' => true));
            if ($count) {
                $text = elgg_echo("{$identifier}:membershiprequests:pending", array($count));
                $items[] = ElggMenuItem::factory(array('name' => 'membership_requests', 'text' => $text, 'href' => "{$identifier}/requests/{$entity->guid}"));
            }
        }
    }
    foreach ($actions as $action => $url) {
        $items[] = ElggMenuItem::factory(array('name' => $action, 'href' => elgg_normalize_url($url), 'text' => elgg_echo($action), 'is_action' => 0 === strpos($url, 'action'), 'confirm' => in_array($action, array("{$identifier}:leave", "{$identifier}:invitation:decline", "{$identifier}:killrequest"))));
    }
    foreach ($items as &$item) {
        if (!$item instanceof ElggMenuItem) {
            continue;
        }
        $link_class = $item->getLinkClass();
        $link_class = trim(preg_replace("/(elgg-button-action|elgg-button-submit|elgg-button|mlm)/", '', $link_class));
        $item->setLinkClass($link_class);
    }
    return $items;
}
Esempio n. 5
0
/**
 * Rewrite group urls to match configured identifier
 * 
 * @param string $hook   "entity:url"
 * @param string $type   "group"
 * @param string $return URL
 * @param array  $params Hook params
 * @return string
 */
function group_subtypes_rewrite_group_urls($hook, $type, $return, $params)
{
    $entity = elgg_extract('entity', $params);
    if (!$entity instanceof ElggGroup) {
        return;
    }
    $subtype = $entity->getSubtype();
    if (!$subtype) {
        return;
    }
    $identifier = group_subtypes_get_identifier($entity);
    if ($identifier != 'groups') {
        $title = elgg_get_friendly_title($entity->name);
        return elgg_normalize_url("{$identifier}/profile/{$entity->guid}/{$title}");
    }
}