From: Robin Appelman Date: Wed, 17 Aug 2022 09:58:57 +0000 (+0200) Subject: directly build the search filter for shared storage instead of setting up the source... X-Git-Tag: v24.0.5rc1~6^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9cadbe811eb6931ea29dd43745d10cdbe2f99b1f;p=nextcloud-server.git directly build the search filter for shared storage instead of setting up the source cache Signed-off-by: Robin Appelman --- diff --git a/apps/files_sharing/lib/Cache.php b/apps/files_sharing/lib/Cache.php index d245727b138..99f4f006997 100644 --- a/apps/files_sharing/lib/Cache.php +++ b/apps/files_sharing/lib/Cache.php @@ -182,16 +182,18 @@ class Cache extends CacheJail { } public function getQueryFilterForStorage(): ISearchOperator { + $storageFilter = \OC\Files\Cache\Cache::getQueryFilterForStorage(); + // Do the normal jail behavior for non files if ($this->storage->getItemType() !== 'file') { - return parent::getQueryFilterForStorage(); + return $this->addJailFilterQuery($storageFilter); } // for single file shares we don't need to do the LIKE return new SearchBinaryOperator( ISearchBinaryOperator::OPERATOR_AND, [ - \OC\Files\Cache\Cache::getQueryFilterForStorage(), + $storageFilter, new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'path', $this->getGetUnjailedRoot()), ] ); diff --git a/lib/private/Files/Cache/Wrapper/CacheJail.php b/lib/private/Files/Cache/Wrapper/CacheJail.php index 7183a6c0d2a..ffd446dae30 100644 --- a/lib/private/Files/Cache/Wrapper/CacheJail.php +++ b/lib/private/Files/Cache/Wrapper/CacheJail.php @@ -306,10 +306,14 @@ class CacheJail extends CacheWrapper { } public function getQueryFilterForStorage(): ISearchOperator { + return $this->addJailFilterQuery($this->getCache()->getQueryFilterForStorage()); + } + + protected function addJailFilterQuery(ISearchOperator $filter): ISearchOperator { if ($this->getGetUnjailedRoot() !== '' && $this->getGetUnjailedRoot() !== '/') { return new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_AND, [ - $this->getCache()->getQueryFilterForStorage(), + $filter, new SearchBinaryOperator(ISearchBinaryOperator::OPERATOR_OR, [ new SearchComparison(ISearchComparison::COMPARE_EQUAL, 'path', $this->getGetUnjailedRoot()), @@ -319,7 +323,7 @@ class CacheJail extends CacheWrapper { ] ); } else { - return $this->getCache()->getQueryFilterForStorage(); + return $filter; } }