]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Refs #1926 user is now being added to access collection of invisible group
authorcash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 4 Mar 2011 02:54:37 +0000 (02:54 +0000)
committercash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544>
Fri, 4 Mar 2011 02:54:37 +0000 (02:54 +0000)
git-svn-id: http://code.elgg.org/elgg/trunk@8577 36083f99-b078-4883-b0ff-0f9b5a30f544

mod/groups/start.php

index 04f50919ad5c781e42526d6f65a75e8340a6c983..d4649c90b34c571805108ab7c81ece130836be1d 100644 (file)
@@ -85,6 +85,8 @@ function groups_init() {
        elgg_register_event_handler('pagesetup', 'system', 'groups_submenus');
        elgg_register_event_handler('annotate', 'all', 'group_object_notifications');
 
+       elgg_register_plugin_hook_handler('access:collections:add_user', 'collection', 'groups_access_collection_override');
+
        elgg_register_event_handler('upgrade', 'system', 'groups_run_upgrades');
 }
 
@@ -375,6 +377,15 @@ function groups_user_join_event_listener($event, $object_type, $object) {
        return true;
 }
 
+/**
+ * Make sure users are added to the access collection
+ */
+function groups_access_collection_override($hook, $entity_type, $returnvalue, $params) {
+       if (elgg_instanceof(get_entity($params['collection']->owner_guid), 'group')) {
+               return true;
+       }
+}
+
 /**
  * Listens to a group leave event and removes a user from the group's access control
  *
@@ -421,8 +432,21 @@ function groups_get_invited_groups($user_guid, $return_guids = FALSE) {
        return $groups;
 }
 
+/**
+ * Join a user to a group, add river event, clean-up invitations
+ *
+ * @param ElggGroup $group
+ * @param ElggUser  $user
+ * @return bool
+ */
 function groups_join_group($group, $user) {
-       if ($group->join($user)) {
+
+       // access ignore so user can be added to access collection of invisible group
+       $ia = elgg_set_ignore_access(TRUE);
+       $result = $group->join($user);
+       elgg_set_ignore_access($ia);
+       
+       if ($result) {
                // Remove any invite or join request flags
                remove_entity_relationship($group->guid, 'invited', $user->guid);
                remove_entity_relationship($user->guid, 'membership_request', $group->guid);