From: Robin Appelman Date: Thu, 17 Mar 2022 16:19:24 +0000 (+0100) Subject: fix shared mount roots not being returned from `getSharesInFolder` X-Git-Tag: v24.0.0rc1~31^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F31610%2Fhead;p=nextcloud-server.git fix shared mount roots not being returned from `getSharesInFolder` Signed-off-by: Robin Appelman --- diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php index 6e8d9105a76..9638706025b 100644 --- a/lib/private/Share20/DefaultShareProvider.php +++ b/lib/private/Share20/DefaultShareProvider.php @@ -670,8 +670,21 @@ class DefaultShareProvider implements IShareProvider { ); } + // todo? maybe get these from the oc_mounts table + $childMountNodes = array_filter($node->getDirectoryListing(), function (Node $node) { + return $node->getInternalPath() === ''; + }); + $childMountRootIds = array_map(function (Node $node) { + return $node->getId(); + }, $childMountNodes); + $qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid')); - $qb->andWhere($qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId()))); + $qb->andWhere( + $qb->expr()->orX( + $qb->expr()->eq('f.parent', $qb->createNamedParameter($node->getId())), + $qb->expr()->in('f.fileid', $qb->createNamedParameter($childMountRootIds, IQueryBuilder::PARAM_INT_ARRAY)) + ) + ); $qb->orderBy('id');