Skip to content

Commit b365840

Browse files
authored
Merge pull request #14605 from nextcloud/bugfix/14112/display-reshares
returns reshares in API
2 parents cffa71a + 586a3a1 commit b365840

File tree

1 file changed

+30
-10
lines changed

1 file changed

+30
-10
lines changed

apps/files_sharing/lib/Controller/ShareAPIController.php

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -627,27 +627,47 @@ private function getSharesInDir(Node $folder): DataResponse {
627627
/** @var \OCP\Share\IShare[] $shares */
628628
$shares = [];
629629
foreach ($nodes as $node) {
630-
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_USER, $node, false, -1, 0));
631-
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_GROUP, $node, false, -1, 0));
632-
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_LINK, $node, false, -1, 0));
633-
if($this->shareManager->shareProviderExists(Share::SHARE_TYPE_EMAIL)) {
634-
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_EMAIL, $node, false, -1, 0));
630+
631+
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_USER, $node, true, -1, 0));
632+
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_GROUP, $node, true, -1, 0));
633+
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_LINK, $node, true, -1, 0));
634+
if ($this->shareManager->shareProviderExists(Share::SHARE_TYPE_EMAIL)) {
635+
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_EMAIL, $node, true, -1, 0));
635636
}
636637
if ($this->shareManager->outgoingServer2ServerSharesAllowed()) {
637-
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_REMOTE, $node, false, -1, 0));
638+
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_REMOTE, $node, true, -1, 0));
638639
}
639-
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_ROOM, $node, false, -1, 0));
640+
$shares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, Share::SHARE_TYPE_ROOM, $node, true, -1, 0));
640641
}
641642

642-
$formatted = [];
643+
$formatted = $miniFormatted = [];
644+
$resharingRight = false;
645+
$known = [];
643646
foreach ($shares as $share) {
647+
if (in_array($share->getId(), $known) || $share->getSharedWith() === $this->currentUser) {
648+
continue;
649+
}
650+
644651
try {
645-
$formatted[] = $this->formatShare($share);
646-
} catch (NotFoundException $e) {
652+
$format = $this->formatShare($share);
653+
654+
$known[] = $share->getId();
655+
$formatted[] = $format;
656+
if ($share->getSharedBy() === $this->currentUser) {
657+
$miniFormatted[] = $format;
658+
}
659+
if (!$resharingRight && $this->shareProviderResharingRights($this->currentUser, $share, $folder)) {
660+
$resharingRight = true;
661+
}
662+
} catch (\Exception $e) {
647663
//Ignore this share
648664
}
649665
}
650666

667+
if (!$resharingRight) {
668+
$formatted = $miniFormatted;
669+
}
670+
651671
return new DataResponse($formatted);
652672
}
653673

0 commit comments

Comments
 (0)