diff options
author | Julien Veyssier <julien-nc@posteo.net> | 2025-06-03 15:40:44 +0200 |
---|---|---|
committer | Marcel Klehr <mklehr@gmx.net> | 2025-07-15 09:15:16 +0200 |
commit | cb221c8211c5859deb476cfe1e368466a901585c (patch) | |
tree | 9e0d984b0677789c261bce72fa083760b170c817 | |
parent | a2aeec0f4b155e86c7dde2a580d542c58a86d50d (diff) | |
download | nextcloud-server-cb221c8211c5859deb476cfe1e368466a901585c.tar.gz nextcloud-server-cb221c8211c5859deb476cfe1e368466a901585c.zip |
fix(FileAccess*): Change the way home dir root is found, remove the excludeTrashbinMounts param of getDistinctMounts
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
-rw-r--r-- | lib/private/Files/Cache/FileAccess.php | 8 | ||||
-rw-r--r-- | lib/public/Files/Cache/IFileAccess.php | 5 | ||||
-rw-r--r-- | tests/lib/Files/Cache/FileAccessTest.php | 37 |
3 files changed, 4 insertions, 46 deletions
diff --git a/lib/private/Files/Cache/FileAccess.php b/lib/private/Files/Cache/FileAccess.php index 0a3f1983d27..a7a6e3a222f 100644 --- a/lib/private/Files/Cache/FileAccess.php +++ b/lib/private/Files/Cache/FileAccess.php @@ -158,7 +158,7 @@ class FileAccess implements IFileAccess { $files->closeCursor(); } - public function getDistinctMounts(array $mountProviders = [], bool $excludeTrashbinMounts = true, bool $rewriteHomeDirectories = true): \Generator { + public function getDistinctMounts(array $mountProviders = [], bool $rewriteHomeDirectories = true): \Generator { $qb = $this->connection->getQueryBuilder(); $qb->selectDistinct(['root_id', 'storage_id', 'mount_provider_class']) ->from('mounts'); @@ -188,11 +188,7 @@ class FileAccess implements IFileAccess { ->from('filecache') ->where($qb->expr()->eq('storage', $qb->createNamedParameter($storageId, IQueryBuilder::PARAM_INT))) ->andWhere($qb->expr()->eq('parent', $qb->createNamedParameter($rootId, IQueryBuilder::PARAM_INT))) - ->andWhere($qb->expr()->eq('name', $qb->createNamedParameter('files'))); - if ($excludeTrashbinMounts === true) { - $qb->andWhere($qb->expr()->notLike('path', $qb->createNamedParameter('files_trashbin/%'))) - ->andWhere($qb->expr()->notLike('path', $qb->createNamedParameter('__groupfolders/trash/%'))); - } + ->andWhere($qb->expr()->eq('path', $qb->createNamedParameter('files'))); /** @var array|false $root */ $root = $qb->executeQuery()->fetch(); if ($root !== false) { diff --git a/lib/public/Files/Cache/IFileAccess.php b/lib/public/Files/Cache/IFileAccess.php index 61e28318034..be6257382ad 100644 --- a/lib/public/Files/Cache/IFileAccess.php +++ b/lib/public/Files/Cache/IFileAccess.php @@ -100,16 +100,15 @@ interface IFileAccess { /** * Retrieves a list of all distinct mounts. - * Allows filtering by specific mount providers and excluding certain mount points. + * Allows filtering by specific mount providers. * Optionally rewrites home directory root paths to avoid cache and trashbin. * * @param list<string> $mountProviders An array of mount provider class names to filter. If empty, all providers will be included. - * @param bool $excludeTrashbinMounts Whether to include mounts that mount a directory in a user's trashbin. * @param bool $rewriteHomeDirectories Whether to rewrite the root path IDs for home directories to only include user files. * @return \Generator<array{storage_id: int, root_id: int, overridden_root: int}> A generator yielding mount configurations as an array containing 'storage_id', 'root_id', and 'override_root'. * @throws \OCP\DB\Exception * * @since 32.0.0 */ - public function getDistinctMounts(array $mountProviders = [], bool $excludeTrashbinMounts = true, bool $rewriteHomeDirectories = true): \Generator; + public function getDistinctMounts(array $mountProviders = [], bool $rewriteHomeDirectories = true): \Generator; } diff --git a/tests/lib/Files/Cache/FileAccessTest.php b/tests/lib/Files/Cache/FileAccessTest.php index 4cad5299966..ed82674d4c5 100644 --- a/tests/lib/Files/Cache/FileAccessTest.php +++ b/tests/lib/Files/Cache/FileAccessTest.php @@ -64,16 +64,6 @@ class FileAccessTest extends TestCase { $queryBuilder->insert('mounts') ->values([ - 'storage_id' => $queryBuilder->createNamedParameter(2, IQueryBuilder::PARAM_INT), - 'root_id' => $queryBuilder->createNamedParameter(20, IQueryBuilder::PARAM_INT), - 'mount_provider_class' => $queryBuilder->createNamedParameter('TestProviderClass2'), - 'mount_point' => $queryBuilder->createNamedParameter('/foobar/files_trashbin/test'), - 'user_id' => $queryBuilder->createNamedParameter('test'), - ]) - ->executeStatement(); - - $queryBuilder->insert('mounts') - ->values([ 'storage_id' => $queryBuilder->createNamedParameter(3, IQueryBuilder::PARAM_INT), 'root_id' => $queryBuilder->createNamedParameter(30, IQueryBuilder::PARAM_INT), 'mount_provider_class' => $queryBuilder->createNamedParameter('TestProviderClass1'), @@ -126,33 +116,6 @@ class FileAccessTest extends TestCase { } /** - * Test that getDistinctMounts excludes certain mount points - */ - public function testGetDistinctMountsWithExclusionFilter(): void { - $result = iterator_to_array($this->fileAccess->getDistinctMounts([], false)); - - $this->assertCount(3, $result); - - $this->assertEquals([ - 'storage_id' => 1, - 'root_id' => 10, - 'overridden_root' => 10, - ], $result[0]); - - $this->assertEquals([ - 'storage_id' => 2, - 'root_id' => 20, - 'overridden_root' => 20, - ], $result[1]); - - $this->assertEquals([ - 'storage_id' => 3, - 'root_id' => 30, - 'overridden_root' => 30, - ], $result[2]); - } - - /** * Test that getDistinctMounts rewrites home directory paths */ public function testGetDistinctMountsWithRewriteHomeDirectories(): void { |