Beispiel #1
0
function group_tools_join_site_handler($event, $type, $relationship)
{
    if (!empty($relationship) && $relationship instanceof ElggRelationship) {
        $user_guid = $relationship->guid_one;
        $site_guid = $relationship->guid_two;
        if ($user = get_user($user_guid)) {
            // ignore access
            $ia = elgg_set_ignore_access(true);
            // add user to the auto join groups
            if ($auto_joins = elgg_get_plugin_setting("auto_join", "group_tools")) {
                $auto_joins = string_to_tag_array($auto_joins);
                foreach ($auto_joins as $group_guid) {
                    if (($group = get_entity($group_guid)) && $group instanceof ElggGroup) {
                        if ($group->site_guid == $site_guid) {
                            // join the group
                            $group->join($user);
                        }
                    }
                }
            }
            // auto detect email invited groups
            if ($groups = group_tools_get_invited_groups_by_email($user->email, $site_guid)) {
                foreach ($groups as $group) {
                    // join the group
                    $group->join($user);
                }
            }
            // restore access settings
            elgg_set_ignore_access($ia);
        }
    }
}
Beispiel #2
0
 /**
  * Listen to the create member_of_site relationship event to handle new users
  *
  * @param string            $event        the name of the event
  * @param string            $type         the type of the event
  * @param \ElggRelationship $relationship supplied param
  *
  * @return void
  */
 public static function siteJoinEmailInvitedGroups($event, $type, $relationship)
 {
     if (!self::validateSiteJoinRelationship($relationship)) {
         return;
     }
     $user_guid = (int) $relationship->guid_one;
     $site_guid = (int) $relationship->guid_two;
     $user = get_user($user_guid);
     // ignore access
     $ia = elgg_set_ignore_access(true);
     // auto detect email invited groups
     $groups = group_tools_get_invited_groups_by_email($user->email, $site_guid);
     if (empty($groups)) {
         // restore access settings
         elgg_set_ignore_access($ia);
         return;
     }
     foreach ($groups as $group) {
         // join the group
         $group->join($user);
     }
     // restore access settings
     elgg_set_ignore_access($ia);
 }
Beispiel #3
0
/**
 * List all group invitations
 */
gatekeeper();
$user = elgg_get_page_owner_entity();
if (empty($user) || !elgg_instanceof($user, "user") || !$user->canEdit()) {
    forward();
}
// build breadcrumb
elgg_push_breadcrumb(elgg_echo("groups"), "groups/all");
$title = elgg_echo("groups:invitations");
elgg_push_breadcrumb($title);
// @todo temporary workaround for exts #287.
$invitations = groups_get_invited_groups($user->getGUID());
// get membership requests
$request_options = array("type" => "group", "relationship" => "membership_request", "relationship_guid" => $user->getGUID(), "limit" => false, "full_view" => false, "pagination" => false);
$requests = elgg_get_entities_from_relationship($request_options);
// invite by email allowed
$invite_email = false;
$email_invitations = false;
if (elgg_get_plugin_setting("invite_email", "group_tools") == "yes") {
    $invite_email = true;
    $email_invitations = group_tools_get_invited_groups_by_email($user->email);
}
$content = elgg_view("groups/invitationrequests", array("user" => $user, "invitations" => $invitations, "requests" => $requests, "invite_email" => $invite_email, "email_invitations" => $email_invitations));
// build page content
$params = array("content" => $content, "title" => $title, "filter" => "");
$body = elgg_view_layout("content", $params);
// draw page
echo elgg_view_page($title, $body);
Beispiel #4
0
/**
 * Event when the user joins a site, mostly when registering
 *
 * @param string           $event        create
 * @param string           $type         member_of_site
 * @param ElggRelationship $relationship the membership relation
 *
 * @return void
 */
function group_tools_join_site_handler($event, $type, $relationship)
{
    if (!empty($relationship) && $relationship instanceof ElggRelationship) {
        $user_guid = $relationship->guid_one;
        $site_guid = $relationship->guid_two;
        $user = get_user($user_guid);
        if (!empty($user)) {
            // ignore access
            $ia = elgg_set_ignore_access(true);
            // add user to the auto join groups
            $auto_joins = elgg_get_plugin_setting("auto_join", "group_tools");
            if (!empty($auto_joins)) {
                $auto_joins = string_to_tag_array($auto_joins);
                foreach ($auto_joins as $group_guid) {
                    $group = get_entity($group_guid);
                    if (!empty($group) && $group instanceof ElggGroup) {
                        if ($group->site_guid == $site_guid) {
                            // join the group
                            $group->join($user);
                        }
                    }
                }
            }
            // auto detect email invited groups
            $groups = group_tools_get_invited_groups_by_email($user->email, $site_guid);
            if (!empty($groups)) {
                foreach ($groups as $group) {
                    // join the group
                    $group->join($user);
                }
            }
            // check for manual email invited groups
            $group_invitecode = get_input("group_invitecode");
            if (!empty($group_invitecode)) {
                $group = group_tools_check_group_email_invitation($group_invitecode);
                if (!empty($group)) {
                    // join the group
                    $group->join($user);
                    // cleanup the invite code
                    $group_invitecode = sanitise_string($group_invitecode);
                    $options = array("guid" => $group->getGUID(), "annotation_name" => "email_invitation", "wheres" => array("(v.string = '" . $group_invitecode . "' OR v.string LIKE '" . $group_invitecode . "|%')"), "annotation_owner_guid" => $group->getGUID(), "limit" => 1);
                    // ignore access in order to cleanup the invitation
                    $ia = elgg_set_ignore_access(true);
                    elgg_delete_annotations($options);
                    // restore access
                    elgg_set_ignore_access($ia);
                }
            }
            // find domain based groups
            $groups = group_tools_get_domain_based_groups($user, $site_guid);
            if (!empty($groups)) {
                foreach ($groups as $group) {
                    // join the group
                    $group->join($user);
                }
            }
            // restore access settings
            elgg_set_ignore_access($ia);
        }
    }
}
Beispiel #5
0
function subsite_manager_groups_route_hook($hook, $entity_type, $return_value, $params)
{
    if (!subsite_manager_on_subsite()) {
        $page = elgg_extract("segments", $return_value);
        switch ($page[0]) {
            case "invitations":
                gatekeeper();
                set_input("username", $page[1]);
                $user = elgg_get_page_owner_entity();
                if (empty($user)) {
                    $user = elgg_get_logged_in_user_entity();
                }
                // set breadcrumb
                elgg_push_breadcrumb(elgg_echo("groups"), "groups/all");
                $title = elgg_echo("groups:invitations");
                elgg_push_breadcrumb($title);
                // @todo temporary workaround for exts #287.
                $ia = elgg_set_ignore_access(TRUE);
                $invitations = elgg_get_entities_from_relationship(array("type" => "group", "limit" => false, "site_guids" => false, "relationship" => "invited", "relationship_guid" => elgg_get_logged_in_user_guid(), "inverse_relationship" => true));
                elgg_set_ignore_access($ia);
                // get membership requests
                $request_options = array("type" => "group", "relationship" => "membership_request", "relationship_guid" => $user->getGUID(), "limit" => false, "full_view" => false, "pagination" => false);
                $requests = elgg_get_entities_from_relationship($request_options);
                // invite by email allowed
                $invite_email = false;
                $email_invitations = false;
                if (elgg_get_plugin_setting("invite_email", "group_tools") == "yes") {
                    $invite_email = true;
                    $email_invitations = group_tools_get_invited_groups_by_email($user->email);
                }
                $content = elgg_view("groups/invitationrequests", array("user" => $user, "invitations" => $invitations, "requests" => $requests, "invite_email" => $invite_email, "email_invitations" => $email_invitations));
                $params = array("content" => $content, "title" => $title, "filter" => "");
                $body = elgg_view_layout("content", $params);
                echo elgg_view_page($title, $body);
                return false;
                break;
            case "member":
                set_input("username", $page[1]);
                $page_owner = elgg_get_page_owner_entity();
                // set breadcrumb
                elgg_push_breadcrumb(elgg_echo("groups"), "groups/all");
                $title = elgg_echo("groups:yours");
                elgg_push_breadcrumb($title);
                elgg_register_title_button();
                $options = array("type" => "group", "relationship" => "member", "relationship_guid" => $page_owner->getGUID(), "inverse_relationship" => false, "full_view" => false);
                if ($page_owner->getGUID() == elgg_get_logged_in_user_guid()) {
                    $options["site_guids"] = false;
                }
                if (!($content = elgg_list_entities_from_relationship_count($options))) {
                    $content = elgg_echo("groups:none");
                }
                $params = array("content" => $content, "title" => $title, "filter" => "");
                $body = elgg_view_layout("content", $params);
                echo elgg_view_page($title, $body);
                return false;
                break;
        }
    }
}