@@ -100,7 +100,7 @@ public function approveGroup(?UnityUser $operator = null, bool $send_mail = true
100100 if ($ this ->exists ()) {
101101 return ;
102102 }
103- \ensure (! $ this ->getOwner ()->exists ());
103+ \ensure ($ this ->getOwner ()->exists ());
104104 $ this ->init ();
105105 $ this ->SQL ->removeRequest ($ this ->getOwner ()->uid );
106106 $ operator = is_null ($ operator ) ? $ this ->getOwner ()->uid : $ operator ->uid ;
@@ -113,6 +113,7 @@ public function approveGroup(?UnityUser $operator = null, bool $send_mail = true
113113 if ($ send_mail ) {
114114 $ this ->MAILER ->sendMail ($ this ->getOwner ()->getMail (), "group_created " );
115115 }
116+ $ this ->getOwner ()->setIsQualified (true ); // having your own group makes you qualified
116117 }
117118
118119 /**
@@ -183,10 +184,17 @@ public function cancelGroupJoinRequest(UnityUser $user, bool $send_mail = true):
183184 // // now we delete the ldap entry
184185 // $this->entry->ensureExists();
185186 // $this->entry->delete();
186- // $this->REDIS->removeCacheArray("sorted_groups", "", $this->gid);
187+ // $default_value_getter = [$this->LDAP, "getSortedGroupsForRedis"];
188+ // $this->REDIS->removeCacheArray("sorted_groups", "", $this->gid, $default_value_getter);
187189 // foreach ($users as $user) {
188- // $this->REDIS->removeCacheArray($user->uid, "groups", $this->gid);
190+ // $this->REDIS->removeCacheArray(
191+ // $user->uid,
192+ // "groups",
193+ // $this->gid,
194+ // fn() => $this->getGroupMemberUIDs(true),
195+ // );
189196 // }
197+ // // FIXME group not removed from user's groups array
190198
191199 // // send email to every user of the now deleted PI group
192200 // if ($send_mail) {
@@ -207,7 +215,7 @@ public function cancelGroupJoinRequest(UnityUser $user, bool $send_mail = true):
207215 public function approveUser (UnityUser $ new_user , bool $ send_mail = true ): void
208216 {
209217 $ request = $ this ->SQL ->getRequest ($ new_user ->uid , $ this ->gid );
210- \ensure (! $ new_user ->exists ());
218+ \ensure ($ new_user ->exists ());
211219 $ this ->addUserToGroup ($ new_user );
212220 $ this ->SQL ->removeRequest ($ new_user ->uid , $ this ->gid );
213221 if ($ send_mail ) {
@@ -222,6 +230,7 @@ public function approveUser(UnityUser $new_user, bool $send_mail = true): void
222230 "org " => $ new_user ->getOrg (),
223231 ]);
224232 }
233+ $ new_user ->setIsQualified (true ); // being in a group makes you qualified
225234 }
226235
227236 public function denyUser (UnityUser $ new_user , bool $ send_mail = true ): void
@@ -374,7 +383,8 @@ private function init(): void
374383 $ this ->entry ->setAttribute ("gidnumber " , strval ($ nextGID ));
375384 $ this ->entry ->setAttribute ("memberuid " , [$ owner ->uid ]);
376385 $ this ->entry ->write ();
377- $ this ->REDIS ->appendCacheArray ("sorted_groups " , "" , $ this ->gid );
386+ $ default_value_getter = [$ this ->LDAP , "getSortedGroupsForRedis " ];
387+ $ this ->REDIS ->appendCacheArray ("sorted_groups " , "" , $ this ->gid , $ default_value_getter );
378388 // TODO if we ever make this project based,
379389 // we need to update the cache here with the memberuid
380390 }
@@ -383,16 +393,36 @@ private function addUserToGroup(UnityUser $new_user): void
383393 {
384394 $ this ->entry ->appendAttribute ("memberuid " , $ new_user ->uid );
385395 $ this ->entry ->write ();
386- $ this ->REDIS ->appendCacheArray ($ this ->gid , "members " , $ new_user ->uid );
387- $ this ->REDIS ->appendCacheArray ($ new_user ->uid , "groups " , $ this ->gid );
396+ $ this ->REDIS ->appendCacheArray (
397+ $ this ->gid ,
398+ "members " ,
399+ $ new_user ->uid ,
400+ fn () => $ this ->getGroupMemberUIDs (true ),
401+ );
402+ $ this ->REDIS ->appendCacheArray (
403+ $ new_user ->uid ,
404+ "groups " ,
405+ $ this ->gid ,
406+ fn () => $ this ->LDAP ->getPIGroupGIDsWithMemberUID ($ new_user ->uid ),
407+ );
388408 }
389409
390410 private function removeUserFromGroup (UnityUser $ old_user ): void
391411 {
392412 $ this ->entry ->removeAttributeEntryByValue ("memberuid " , $ old_user ->uid );
393413 $ this ->entry ->write ();
394- $ this ->REDIS ->removeCacheArray ($ this ->gid , "members " , $ old_user ->uid );
395- $ this ->REDIS ->removeCacheArray ($ old_user ->uid , "groups " , $ this ->gid );
414+ $ this ->REDIS ->removeCacheArray (
415+ $ this ->gid ,
416+ "members " ,
417+ $ old_user ->uid ,
418+ fn () => $ this ->getGroupMemberUIDs (true ),
419+ );
420+ $ this ->REDIS ->removeCacheArray (
421+ $ old_user ->uid ,
422+ "groups " ,
423+ $ this ->gid ,
424+ fn () => $ this ->LDAP ->getPIGroupGIDsWithMemberUID ($ old_user ->uid ),
425+ );
396426 }
397427
398428 public function memberExists (UnityUser $ user ): bool
0 commit comments