]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #1099: Using write access hook to allow group-only ACLs. Need to examine better...
authorbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Tue, 7 Jul 2009 15:09:53 +0000 (15:09 +0000)
committerbrettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544>
Tue, 7 Jul 2009 15:09:53 +0000 (15:09 +0000)
git-svn-id: https://code.elgg.org/elgg/trunk@3395 36083f99-b078-4883-b0ff-0f9b5a30f544

engine/lib/access.php
mod/groups/start.php

index aace8633591ea498187548722a80a5f6f941686c..c971495828fa2f74a7492f5d55c49fe3a446ab02 100644 (file)
                                        $access_array[$user_id] = $tmp_access_array;\r
                                }\r
                                else\r
-                                       return $tmp_access_array; // No user id logged in so we can only access public info\r
+                                       $tmp_return = $tmp_access_array; // No user id logged in so we can only access public info\r
                                \r
                                \r
                        } else {\r
                                $tmp_access_array = $access_array[$user_id];\r
                        }\r
                        \r
-                       return $access_array[$user_id];\r
+                       $tmp_return = $access_array[$user_id];\r
                        \r
+                       return trigger_plugin_hook('access:collections:read','user',array('user_id' => $user_id, 'site_id' => $site_id),$tmp_access_array);\r
                }\r
                \r
        /**\r
index b7a99d5bca14975c25211a19caacac5aad891a64..57e0a976609e5d25aea461b46bb3438e655068ab 100644 (file)
@@ -63,8 +63,9 @@
                extend_view('profile/icon','groups/icon');\r
                extend_view('css','groups/css');\r
                \r
-               // Write access permissions\r
+               // Access permissions\r
                register_plugin_hook('access:collections:write', 'all', 'groups_write_acl_plugin_hook');\r
+               //register_plugin_hook('access:collections:read', 'all', 'groups_read_acl_plugin_hook');\r
                \r
                // Notification hooks\r
                if (is_callable('register_notification_object'))\r
         */\r
        function groups_read_acl_plugin_hook($hook, $entity_type, $returnvalue, $params)\r
        {\r
-               \r
                //error_log("READ: " . var_export($returnvalue));\r
                $user = $_SESSION['user'];\r
                if ($user)\r
                {\r
-                       $membership = get_users_membership($user->guid);\r
+                       // Not using this because of recursion.\r
+                       // Joining a group automatically add user to ACL, \r
+                       // So just see if they're a member of the ACL.\r
+                       //$membership = get_users_membership($user->guid);\r
+                       \r
+                       $members = get_members_of_access_collection($group->group_acl);\r
+                       print_r($members);\r
+                       exit;\r
                        \r
                        if ($membership)\r
                        {                                       \r
        function groups_write_acl_plugin_hook($hook, $entity_type, $returnvalue, $params)\r
        {\r
                $page_owner = page_owner_entity();\r
-               \r
-               if ($page_owner instanceof ElggGroup)\r
-               {\r
-                       if (can_write_to_container())\r
-                       {\r
-                               $returnvalue[$page_owner->group_acl] = elgg_echo('groups:group') . ": " . $page_owner->name;\r
-                       \r
-                               return $returnvalue;\r
+               // get all groups if logged in\r
+               if ($loggedin = get_loggedin_user()) {\r
+                       $groups = get_entities_from_relationship('member', $loggedin->getGUID());\r
+                       if (is_array($groups)) {\r
+                               foreach ($groups as $group) {\r
+                                       $returnvalue[$group->group_acl] = elgg_echo('groups:group') . ': ' . $group->name;\r
+                               }\r
                        }\r
                }\r
+               \r
+               // This doesn't seem to do anything.\r
+               // There are no hooks to override container permissions for groups\r
+//             \r
+//             if ($page_owner instanceof ElggGroup)\r
+//             {\r
+//                     if (can_write_to_container())\r
+//                     {\r
+//                             $returnvalue[$page_owner->group_acl] = elgg_echo('groups:group') . ": " . $page_owner->name;\r
+//                     }\r
+//             }\r
+               return $returnvalue;\r
        }\r
        \r
        /**\r