]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #4361 corrects forwarding logic for closed groups
authorCash Costello <cash.costello@gmail.com>
Thu, 9 Feb 2012 12:38:30 +0000 (07:38 -0500)
committerCash Costello <cash.costello@gmail.com>
Thu, 9 Feb 2012 12:38:30 +0000 (07:38 -0500)
engine/lib/group.php

index 29330eecaec62f3206ec1259a37d83d86326faca..feb1f1e7fb3af396dfbb81a021d3203f2b8c3031 100644 (file)
@@ -261,16 +261,24 @@ function group_gatekeeper($forward = true) {
        if ($group = elgg_get_page_owner_entity()) {
                if ($group instanceof ElggGroup) {
                        $url = $group->getURL();
-                       if (
-                               ((!elgg_is_logged_in()) && (!$group->isPublicMembership())) ||
-                               ((!$group->isMember(elgg_get_logged_in_user_entity()) && (!$group->isPublicMembership())))
-                       ) {
-                               $allowed = false;
-                       }
+                       if (!$group->isPublicMembership()) {
+                               // closed group so must be member or an admin
+
+                               if (!elgg_is_logged_in()) {
+                                       $allowed = false;
+                                       if ($forward == true) {
+                                               $_SESSION['last_forward_from'] = current_page_url();
+                                               register_error(elgg_echo('loggedinrequired'));
+                                               forward('', 'login');
+                                       }
+                               } else if (!$group->isMember(elgg_get_logged_in_user_entity())) {
+                                       $allowed = false;
+                               }
 
-                       // Admin override
-                       if (elgg_is_admin_logged_in()) {
-                               $allowed = true;
+                               // Admin override
+                               if (elgg_is_admin_logged_in()) {
+                                       $allowed = true;
+                               }
                        }
                }
        }