@@ -79,7 +79,7 @@ public function getSharedWith(string $teamId, string $userId): array {
7979 $ probe = new CircleProbe ();
8080 $ probe ->mustBeMember ();
8181
82- if ($ this ->getTeam ($ teamId , $ userId , $ probe ) === null ) {
82+ if ($ this ->getTeamInternal ($ teamId , $ userId , $ probe ) === null ) {
8383 return [];
8484 }
8585
@@ -119,16 +119,10 @@ public function getTeamsForResource(string $providerId, string $resourceId, stri
119119 }
120120
121121 $ provider = $ this ->getProvider ($ providerId );
122- return array_map (function (Circle $ team ) {
123- return new Team (
124- $ team ->getSingleId (),
125- $ team ->getDisplayName (),
126- $ this ->urlGenerator ->linkToRouteAbsolute ('contacts.contacts.directcircle ' , ['singleId ' => $ team ->getSingleId ()]),
127- );
128- }, $ this ->getTeams ($ provider ->getTeamsForResource ($ resourceId ), $ userId ));
122+ return array_map ($ this ->circleToTeam (...), $ this ->getTeams ($ provider ->getTeamsForResource ($ resourceId ), $ userId ));
129123 }
130124
131- private function getTeam (string $ teamId , string $ userId , ?CircleProbe $ probe = null ): ?Circle {
125+ private function getTeamInternal (string $ teamId , string $ userId , ?CircleProbe $ probe = null ): ?Circle {
132126 if (!$ this ->hasTeamSupport ()) {
133127 return null ;
134128 }
@@ -149,7 +143,7 @@ private function getTeam(string $teamId, string $userId, ?CircleProbe $probe = n
149143 */
150144 #[\Override]
151145 public function getMembersOfTeam (string $ teamId , string $ userId ): array {
152- $ team = $ this ->getTeam ($ teamId , $ userId );
146+ $ team = $ this ->getTeamInternal ($ teamId , $ userId );
153147 if ($ team === null ) {
154148 return [];
155149 }
@@ -182,15 +176,34 @@ public function getTeamsForUser(string $userId): array {
182176
183177 $ federatedUser = $ this ->circlesManager ->getFederatedUser ($ userId , Member::TYPE_USER );
184178 $ this ->circlesManager ->startSession ($ federatedUser );
185- $ teams = [];
186- foreach ($ this ->circlesManager ->probeCircles () as $ team ) {
187- $ teams [] = new Team (
188- $ team ->getSingleId (),
189- $ team ->getDisplayName (),
190- $ this ->urlGenerator ->linkToRouteAbsolute ('contacts.contacts.directcircle ' , ['singleId ' => $ team ->getSingleId ()]),
191- );
179+
180+ return array_map ($ this ->circleToTeam (...), $ this ->circlesManager ->probeCircles ());
181+ }
182+
183+ #[\Override]
184+ public function getTeam (string $ teamId , ?string $ userId = null ): ?Team {
185+ if (!$ this ->hasTeamSupport ()) {
186+ return null ;
187+ }
188+
189+ if ($ userId !== null ) {
190+ $ this ->circlesManager ->startSession ($ this ->circlesManager ->getLocalFederatedUser ($ userId ));
191+ } else {
192+ $ this ->circlesManager ->startSuperSession ();
192193 }
193194
194- return $ teams ;
195+ try {
196+ return $ this ->circleToTeam ($ this ->circlesManager ->getCircle ($ teamId ));
197+ } catch (CircleNotFoundException ) {
198+ return null ;
199+ }
200+ }
201+
202+ private function circleToTeam (Circle $ circle ): Team {
203+ return new Team (
204+ $ circle ->getSingleId (),
205+ $ circle ->getDisplayName (),
206+ $ this ->urlGenerator ->linkToRouteAbsolute ('contacts.contacts.directcircle ' , ['singleId ' => $ circle ->getSingleId ()]),
207+ );
195208 }
196209}
0 commit comments