]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #5332 cleans up group invite action
authorcash <cash.costello@gmail.com>
Sat, 20 Apr 2013 16:43:26 +0000 (12:43 -0400)
committercash <cash.costello@gmail.com>
Sat, 20 Apr 2013 16:43:26 +0000 (12:43 -0400)
mod/groups/actions/groups/membership/invite.php

index db90ecf3a692cc6a2fc5decf8db76b333560c64b..a96165b0e526f1a0e445fe9613f6e914b126a890 100644 (file)
@@ -7,43 +7,48 @@
 
 $logged_in_user = elgg_get_logged_in_user_entity();
 
-$user_guid = get_input('user_guid');
-if (!is_array($user_guid)) {
-       $user_guid = array($user_guid);
+$user_guids = get_input('user_guid');
+if (!is_array($user_guids)) {
+       $user_guids = array($user_guids);
 }
 $group_guid = get_input('group_guid');
+$group = get_entity($group_guid);
 
-if (sizeof($user_guid)) {
-       foreach ($user_guid as $u_id) {
-               $user = get_entity($u_id);
-               $group = get_entity($group_guid);
-
-               if ($user && $group && ($group instanceof ElggGroup) && $group->canEdit()) {
-
-                       if (!check_entity_relationship($group->guid, 'invited', $user->guid)) {
-
-                               // Create relationship
-                               add_entity_relationship($group->guid, 'invited', $user->guid);
-
-                               // Send email
-                               $url = elgg_normalize_url("groups/invitations/$user->username");
-                               $result = notify_user($user->getGUID(), $group->owner_guid,
-                                               elgg_echo('groups:invite:subject', array($user->name, $group->name)),
-                                               elgg_echo('groups:invite:body', array(
-                                                       $user->name,
-                                                       $logged_in_user->name,
-                                                       $group->name,
-                                                       $url,
-                                               )),
-                                               NULL);
-                               if ($result) {
-                                       system_message(elgg_echo("groups:userinvited"));
-                               } else {
-                                       register_error(elgg_echo("groups:usernotinvited"));
-                               }
-                       } else {
-                               register_error(elgg_echo("groups:useralreadyinvited"));
-                       }
+if (count($user_guids) > 0 && elgg_instanceof($group, 'group') && $group->canEdit()) {
+       foreach ($user_guids as $guid) {
+               $user = get_user($guid);
+               if (!$user) {
+                       continue;
+               }
+
+               if (check_entity_relationship($group->guid, 'invited', $user->guid)) {
+                       register_error(elgg_echo("groups:useralreadyinvited"));
+                       continue;
+               }
+
+               if (check_entity_relationship($user->guid, 'member', $group->guid)) {
+                       // @todo add error message
+                       continue;
+               }
+
+               // Create relationship
+               add_entity_relationship($group->guid, 'invited', $user->guid);
+
+               // Send notification
+               $url = elgg_normalize_url("groups/invitations/$user->username");
+               $result = notify_user($user->getGUID(), $group->owner_guid,
+                               elgg_echo('groups:invite:subject', array($user->name, $group->name)),
+                               elgg_echo('groups:invite:body', array(
+                                       $user->name,
+                                       $logged_in_user->name,
+                                       $group->name,
+                                       $url,
+                               )),
+                               NULL);
+               if ($result) {
+                       system_message(elgg_echo("groups:userinvited"));
+               } else {
+                       register_error(elgg_echo("groups:usernotinvited"));
                }
        }
 }