aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Veyssier <julien-nc@posteo.net>2025-06-03 15:40:44 +0200
committerMarcel Klehr <mklehr@gmx.net>2025-07-15 09:15:16 +0200
commitcb221c8211c5859deb476cfe1e368466a901585c (patch)
tree9e0d984b0677789c261bce72fa083760b170c817
parenta2aeec0f4b155e86c7dde2a580d542c58a86d50d (diff)
downloadnextcloud-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.php8
-rw-r--r--lib/public/Files/Cache/IFileAccess.php5
-rw-r--r--tests/lib/Files/Cache/FileAccessTest.php37
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 {