From c4502ab04c770452b3b8acb4f8f2f02f84163a90 Mon Sep 17 00:00:00 2001 From: marcus Date: Fri, 4 Jul 2008 09:42:52 +0000 Subject: Join requests on closed groups, full loop. Refs #109 git-svn-id: https://code.elgg.org/elgg/trunk@1284 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/groups/actions/addtogroup.php | 52 +++++++++++++++++++-------------- mod/groups/actions/joinrequest.php | 59 ++++++++++++++++++++++++-------------- 2 files changed, 68 insertions(+), 43 deletions(-) (limited to 'mod/groups/actions') diff --git a/mod/groups/actions/addtogroup.php b/mod/groups/actions/addtogroup.php index db697d573..af99c3edf 100644 --- a/mod/groups/actions/addtogroup.php +++ b/mod/groups/actions/addtogroup.php @@ -19,25 +19,27 @@ $group_guid = get_input('group_guid'); $user = get_entity($user_guid); - $group = get_entity($group); - - if ($_SESSION['user']->getGUID() == $group->getGUID()) + $group = get_entity($group_guid); + + if ($_SESSION['user']->getGUID() == $group->owner_guid) { $requests = $user->group_join_request; + if ($requests) { foreach ($requests as $request) { if ($request == $group->getGUID()) { + // User has requested to join this group previously, so we can safely add them // add them - if ($group->join($user)) + if ((!$group->isMember($user)) && ($group->join($user))) { // send welcome email - notify_user($user->getGUID(), "", + notify_user($user->getGUID(), $group->owner_guid, sprintf(elgg_echo('groups:welcome:subject'), $group->title), sprintf(elgg_echo('groups:welcome:body'), $user->name, $group->title, $group->getURL()), NULL, "email"); @@ -52,28 +54,36 @@ exit; } } + } - // Not found in request array, so send an invite and set invite flag - - // Set invite flag - if (!$user->setMetaData('group_invite', $group->getGUID(), "", true)) - system_message(elgg_echo("groups:usernotinvited")); + // Not found in request array, so send an invite and set invite flag + $methods = $user->group_invite; + if (($methods) && (!is_array($methods))) + $methods = array($methods); + if (!$methods) $methods=array(); + $methods[] = $group->getGUID(); + $methods = array_unique($methods); + + // Set invite flag + //if (!$user->setMetaData('group_invite', $group->getGUID(), "", true)) + if (!$user->group_invite = $methods) + system_message(elgg_echo("groups:usernotinvited")); + else + { + // Send email + if (notify_user($user->getGUID(), $group->owner_guid, + sprintf(elgg_echo('groups:invite:subject'), $user->name, $group->title), + sprintf(elgg_echo('groups:invite:body'), $user->name, $group->title, "{$CONFIG->url}action/groups/join?user_guid={$user->guid}&group_guid={$group->guid}"), + NULL, "email")) + system_message(elgg_echo("groups:userinvited")); else - { - // Send email - if (notify_user($user->getGUID(), "", - sprintf(elgg_echo('groups:invite:subject'), $user->name, $group->title), - sprintf(elgg_echo('groups:invite:body'), $user->name, $group->title, "http://{$CONFIG->url}action/groups/join?user_guid={$user->guid}&group_guid={$group->guid}"), - NULL, "email")) - system_message(elgg_echo("groups:userinvited")); - else - system_message(elgg_echo("groups:usernotinvited")); - } + system_message(elgg_echo("groups:usernotinvited")); } + } else system_message(elgg_echo("groups:notowner")); - forward($_SERVER['HTTP_REFERER']); + //forward($_SERVER['HTTP_REFERER']); exit; ?> \ No newline at end of file diff --git a/mod/groups/actions/joinrequest.php b/mod/groups/actions/joinrequest.php index 6288e0e76..895038f9e 100644 --- a/mod/groups/actions/joinrequest.php +++ b/mod/groups/actions/joinrequest.php @@ -17,18 +17,22 @@ $user_guid = get_input('user_guid'); $group_guid = get_input('group_guid'); - $user = get_entity($user_guid); - $group = get_entity($group); + $user = NULL; + if (!$user_guid) $user = $_SESSION['user']; + else + $user = get_entity($user_guid); + + $group = get_entity($group_guid); if (!$group->isMember($user)) - { + { $invites = $user->group_invite; - + if ($invites) { foreach ($invites as $invite) { - if ($invite = $group->getGUID()) + if ($invite == $group->getGUID()) { if ($group->join($user)) { @@ -45,25 +49,36 @@ } } - - // else email membership requiest - // set flag - - if (!$user->setMetaData('group_join_request', $group->getGUID(), "", true)) - system_message(elgg_echo("groups:joinrequestnotmade")); - else - { - // Send email - if (notify_user($group->owner_guid, "", - sprintf(elgg_echo('groups:request:subject'), $user->name, $group->title), - sprintf(elgg_echo('groups:request:body'), $group->getOwner()->name, $user->name, $group->title, $user->getURL(), "http://{$CONFIG->url}action/groups/addtogroup?user_guid={$user->guid}&group_guid={$group->guid}"), - NULL, "email")) - system_message(elgg_echo("groups:joinrequestmade")); - else - system_message(elgg_echo("groups:joinrequestnotmade")); - } } + + // else email membership requiest + // set flag + + // Permit multiple values + $methods = $user->group_join_request; + if (($methods) && (!is_array($methods))) + $methods = array($methods); + if (!$methods) $methods=array(); + $methods[] = $group->getGUID(); + $methods = array_unique($methods); + //if (!$user->setMetaData('group_join_request', $group->getGUID(), "", true)) + if (!$user->group_join_request = $methods) + system_message(elgg_echo("groups:joinrequestnotmade")); + else + { + + // Send email + if (notify_user($group->owner_guid, $user->getGUID(), + sprintf(elgg_echo('groups:request:subject'), $user->name, $group->title), + sprintf(elgg_echo('groups:request:body'), $group->getOwner()->name, $user->name, $group->title, $user->getURL(), "{$CONFIG->url}action/groups/addtogroup?user_guid={$user->guid}&group_guid={$group->guid}"), + NULL, "email")) + system_message(elgg_echo("groups:joinrequestmade")); + else + system_message(elgg_echo("groups:joinrequestnotmade")); + } + + } else system_message(elgg_echo('groups:alreadymember')); -- cgit v1.2.3