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 ++++++++++++++++++++++++-------------- mod/groups/languages/en.php | 24 ++++++++-------- mod/groups/start.php | 2 +- 4 files changed, 81 insertions(+), 56 deletions(-) (limited to 'mod') 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')); diff --git a/mod/groups/languages/en.php b/mod/groups/languages/en.php index 469f70717..4e1b8f3fb 100644 --- a/mod/groups/languages/en.php +++ b/mod/groups/languages/en.php @@ -50,30 +50,30 @@ 'groups:userinvited' => 'User has been invited.', 'groups:usernotinvited' => 'User could not be invited.', - 'groups:invite:subject' => '%s you have been invited to join \'%s\'!', - 'groups:invite:body' => 'Hi %s, + 'groups:invite:subject' => "%s you have been invited to join %s!", + 'groups:invite:body' => "Hi %s, -You have been invited to join the \'%s\' group, click below to confirm: +You have been invited to join the '%s' group, click below to confirm: -%s', +%s", - 'groups:welcome:subject' => 'Welcome to the \'%s\' group!', - 'groups:welcome:body' => 'Hi %s! + 'groups:welcome:subject' => "Welcome to the %s group!", + 'groups:welcome:body' => "Hi %s! -You are now a member of the \'%s\' group! Click below to begin posting! +You are now a member of the '%s' group! Click below to begin posting! -%s', +%s", - 'groups:request:subject' => '%s has requested to join \'%s\'', - 'groups:request:body' => 'Hi %s, + 'groups:request:subject' => "%s has requested to join %s", + 'groups:request:body' => "Hi %s, -%s has requested to join the \'%s\' group, click below to view their profile: +%s has requested to join the '%s' group, click below to view their profile: %s or click below to confirm request: -%s', +%s", ); diff --git a/mod/groups/start.php b/mod/groups/start.php index b6c177a7d..b6b49b32c 100644 --- a/mod/groups/start.php +++ b/mod/groups/start.php @@ -48,7 +48,7 @@ register_action("groups/leave",false, $CONFIG->pluginspath . "groups/actions/leave.php"); register_action("groups/joinrequest",false, $CONFIG->pluginspath . "groups/actions/joinrequest.php"); - register_action("groups/adduser",false, $CONFIG->pluginspath . "groups/actions/adduser.php"); + register_action("groups/addtogroup",false, $CONFIG->pluginspath . "groups/actions/addtogroup.php"); // For now, we'll hard code the groups profile items as follows: -- cgit v1.2.3