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); } } }
/** * 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); }
/** * 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);
/** * 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); } } }
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; } } }