From d4b33dcb95496d9fed31d631fc70f05517dc3a6b Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Wed, 17 Jan 2024 02:21:23 -0100 Subject: [PATCH 1/2] fix search on circles share Signed-off-by: Maxence Lange --- lib/Db/CoreQueryBuilder.php | 22 +++++++++++++++------- lib/Db/ShareWrapperRequest.php | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php index 193b0fe09..fd586013a 100644 --- a/lib/Db/CoreQueryBuilder.php +++ b/lib/Db/CoreQueryBuilder.php @@ -1564,16 +1564,24 @@ public function leftJoinShareChild(string $aliasShare, string $aliasShareMembers * @param FederatedUser $federatedUser * @param bool $reshares */ - public function limitToShareOwner(string $alias, FederatedUser $federatedUser, bool $reshares): void { + public function limitToShareOwner( + string $alias, + FederatedUser $federatedUser, + bool $reshares, + int $nodeId = 0 + ): void { $expr = $this->expr(); - $orX = $expr->orX($this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias)); - - if ($reshares) { - $orX->add($this->exprLimit('uid_owner', $federatedUser->getUserId(), $alias)); + if ($reshares === false) { + $this->andWhere($this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias)); + } else if ($nodeId === 0) { + $this->andWhere( + $expr->orX( + $this->exprLimit('uid_owner', $federatedUser->getUserId(), $alias), + $this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias) + ) + ); } - - $this->andWhere($orX); } diff --git a/lib/Db/ShareWrapperRequest.php b/lib/Db/ShareWrapperRequest.php index 8f84f3b55..957f0c993 100644 --- a/lib/Db/ShareWrapperRequest.php +++ b/lib/Db/ShareWrapperRequest.php @@ -343,7 +343,7 @@ public function getSharesBy( $qb->setOptions([CoreQueryBuilder::SHARE], ['getData' => $getData]); $qb->leftJoinCircle(CoreQueryBuilder::SHARE, null, 'share_with'); - $qb->limitToShareOwner(CoreQueryBuilder::SHARE, $federatedUser, $reshares); + $qb->limitToShareOwner(CoreQueryBuilder::SHARE, $federatedUser, $reshares, $nodeId); $qb->limitNull('parent', false); if ($nodeId > 0) { From 24fe04206705d63683deeb5774ecf6184dac169c Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Mon, 22 Jan 2024 18:25:38 -0100 Subject: [PATCH 2/2] fix lint Signed-off-by: Maxence Lange --- lib/Db/CoreQueryBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Db/CoreQueryBuilder.php b/lib/Db/CoreQueryBuilder.php index fd586013a..f70c432a6 100644 --- a/lib/Db/CoreQueryBuilder.php +++ b/lib/Db/CoreQueryBuilder.php @@ -1574,7 +1574,7 @@ public function limitToShareOwner( if ($reshares === false) { $this->andWhere($this->exprLimit('uid_initiator', $federatedUser->getUserId(), $alias)); - } else if ($nodeId === 0) { + } elseif ($nodeId === 0) { $this->andWhere( $expr->orX( $this->exprLimit('uid_owner', $federatedUser->getUserId(), $alias),