summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/files_external/service/dbconfigservice.php13
-rw-r--r--apps/files_external/tests/service/dbconfigservicetest.php11
2 files changed, 22 insertions, 2 deletions
diff --git a/apps/files_external/service/dbconfigservice.php b/apps/files_external/service/dbconfigservice.php
index a37c541f045..9f7061eb938 100644
--- a/apps/files_external/service/dbconfigservice.php
+++ b/apps/files_external/service/dbconfigservice.php
@@ -322,10 +322,19 @@ class DBConfigService {
private function getMountsFromQuery(IQueryBuilder $query) {
$result = $query->execute();
$mounts = $result->fetchAll();
+ $uniqueMounts = [];
+ foreach ($mounts as $mount) {
+ $id = $mount['mount_id'];
+ if (!isset($uniqueMounts[$id])) {
+ $uniqueMounts[$id] = $mount;
+ }
+ }
+ $uniqueMounts = array_values($uniqueMounts);
$mountIds = array_map(function ($mount) {
return $mount['mount_id'];
- }, $mounts);
+ }, $uniqueMounts);
+ $mountIds = array_values(array_unique($mountIds));
$applicable = $this->getApplicableForMounts($mountIds);
$config = $this->getConfigForMounts($mountIds);
@@ -338,7 +347,7 @@ class DBConfigService {
$mount['config'] = $config;
$mount['options'] = $options;
return $mount;
- }, $mounts, $applicable, $config, $options);
+ }, $uniqueMounts, $applicable, $config, $options);
}
/**
diff --git a/apps/files_external/tests/service/dbconfigservicetest.php b/apps/files_external/tests/service/dbconfigservicetest.php
index c6d1add36b6..b088a7078d1 100644
--- a/apps/files_external/tests/service/dbconfigservicetest.php
+++ b/apps/files_external/tests/service/dbconfigservicetest.php
@@ -271,4 +271,15 @@ class DBConfigServiceTest extends TestCase {
$mount = $this->dbConfig->getMountById($id2);
$this->assertEquals('bar', $mount['auth_backend']);
}
+
+ public function testGetMountsForDuplicateByGroup() {
+ $id1 = $this->addMount('/test', 'foo', 'bar', 100, DBConfigService::MOUNT_TYPE_ADMIN);
+
+ $this->dbConfig->addApplicable($id1, DBConfigService::APPLICABLE_TYPE_GROUP, 'group1');
+ $this->dbConfig->addApplicable($id1, DBConfigService::APPLICABLE_TYPE_GROUP, 'group2');
+
+ $mounts = $this->dbConfig->getAdminMountsForMultiple(DBConfigService::APPLICABLE_TYPE_GROUP, ['group1', 'group2']);
+ $this->assertCount(1, $mounts);
+ $this->assertEquals($id1, $mounts[0]['mount_id']);
+ }
}