Skip to content

Commit 1d8c2ef

Browse files
committed
occ should get full details
Signed-off-by: Maxence Lange <[email protected]>
1 parent b754c91 commit 1d8c2ef

5 files changed

Lines changed: 37 additions & 4 deletions

File tree

lib/Command/MembersList.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ private function getMembers(
307307
}
308308
} else {
309309
$this->federatedUserService->commandLineInitiator($initiator, $initiatorType, $circleId, true);
310-
$members = $this->memberService->getMembers($circleId);
310+
$members = $this->memberService->getMembers($circleId, true);
311311
}
312312

313313
if (!is_null($tree)) {

lib/Controller/RemoteController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ public function members(string $circleId): DataResponse {
306306
}
307307

308308
try {
309-
$members = $this->memberService->getMembers($circleId);
309+
$members = $this->memberService->getMembers($circleId, true);
310310

311311
return new DataResponse($members);
312312
} catch (Exception $e) {

lib/Db/CoreQueryBuilder.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,32 @@ public function leftJoinCircle(
740740
$this->leftJoinOwner($aliasCircle);
741741
}
742742

743+
/**
744+
* @param string $aliasMember
745+
*
746+
* @throws RequestBuilderException
747+
*/
748+
public function leftJoinInvitedBy(string $aliasMember): void {
749+
if ($this->getType() !== QueryBuilder::SELECT) {
750+
return;
751+
}
752+
753+
try {
754+
$aliasInvitedBy = $this->generateAlias($aliasMember, self::INVITED_BY);
755+
} catch (RequestBuilderException $e) {
756+
return;
757+
}
758+
759+
$expr = $this->expr();
760+
$this->generateCircleSelectAlias($aliasInvitedBy)
761+
->leftJoin(
762+
$aliasMember, CoreRequestBuilder::TABLE_CIRCLE, $aliasInvitedBy,
763+
$expr->eq($aliasMember . '.invited_by', $aliasInvitedBy . '.unique_id')
764+
);
765+
766+
$this->leftJoinOwner($aliasInvitedBy);
767+
}
768+
743769
/**
744770
* @param string $aliasMember
745771
* @param IFederatedUser|null $initiator

lib/Db/MemberRequest.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ public function getMembers(
199199
?IFederatedUser $initiator = null,
200200
?MemberProbe $probe = null,
201201
int $limit = 0,
202+
bool $fullDetails = false
202203
): array {
203204
if (is_null($probe)) {
204205
$probe = new MemberProbe();
@@ -218,6 +219,11 @@ public function getMembers(
218219
)
219220
);
220221

222+
if ($fullDetails) {
223+
$qb->leftJoinCircle(CoreQueryBuilder::MEMBER, $initiator);
224+
$qb->leftJoinInvitedBy(CoreQueryBuilder::MEMBER);
225+
}
226+
221227
if ($probe->hasFilterRemoteInstance()) {
222228
$aliasCircle = $qb->generateAlias(CoreQueryBuilder::MEMBER, CoreQueryBuilder::CIRCLE);
223229
$qb->limitToRemoteInstance(

lib/Service/MemberService.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public function getMemberById(
151151
* @throws InitiatorNotFoundException
152152
* @throws RequestBuilderException
153153
*/
154-
public function getMembers(string $circleId): array {
154+
public function getMembers(string $circleId, bool $fullDetails = false): array {
155155
$this->federatedUserService->mustHaveCurrentUser();
156156

157157
$probe = new MemberProbe();
@@ -164,7 +164,8 @@ public function getMembers(string $circleId): array {
164164
return $this->memberRequest->getMembers(
165165
$circleId,
166166
$this->federatedUserService->getCurrentUser(),
167-
$probe
167+
$probe,
168+
fullDetails: $fullDetails
168169
);
169170
}
170171

0 commit comments

Comments
 (0)