Skip to content

Commit 60d7e25

Browse files
Merge pull request #62038 from nextcloud/feat/iteammanager/get-team
feat(ITeamManager): Add getTeam method
2 parents 5925e16 + a974f0b commit 60d7e25

3 files changed

Lines changed: 43 additions & 19 deletions

File tree

build/psalm-baseline.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4184,8 +4184,14 @@
41844184
</MoreSpecificImplementedParamType>
41854185
</file>
41864186
<file src="lib/private/Teams/TeamManager.php">
4187+
<LessSpecificReturnStatement>
4188+
<code><![CDATA[array_map($this->circleToTeam(...), $this->circlesManager->probeCircles())]]></code>
4189+
</LessSpecificReturnStatement>
4190+
<MoreSpecificReturnType>
4191+
<code><![CDATA[array]]></code>
4192+
</MoreSpecificReturnType>
41874193
<UndefinedDocblockClass>
4188-
<code><![CDATA[Circle]]></code>
4194+
<code><![CDATA[Circle[]]]></code>
41894195
</UndefinedDocblockClass>
41904196
</file>
41914197
<file src="lib/private/Template/Base.php">

lib/private/Teams/TeamManager.php

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

lib/public/Teams/ITeamManager.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,9 @@ public function getMembersOfTeam(string $teamId, string $userId): array;
7676
* @since 34.0.0
7777
*/
7878
public function hasTeamSupport(): bool;
79+
80+
/**
81+
* @since 35.0.0
82+
*/
83+
public function getTeam(string $teamId, ?string $userId = null): ?Team;
7984
}

0 commit comments

Comments
 (0)