Merge pull request #24244 from owncloud/mount-unique
don't get the config for the same mount multiple times
This commit is contained in:
commit
5e57d3a0b9
|
@ -322,10 +322,19 @@ class DBConfigService {
|
||||||
private function getMountsFromQuery(IQueryBuilder $query) {
|
private function getMountsFromQuery(IQueryBuilder $query) {
|
||||||
$result = $query->execute();
|
$result = $query->execute();
|
||||||
$mounts = $result->fetchAll();
|
$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) {
|
$mountIds = array_map(function ($mount) {
|
||||||
return $mount['mount_id'];
|
return $mount['mount_id'];
|
||||||
}, $mounts);
|
}, $uniqueMounts);
|
||||||
|
$mountIds = array_values(array_unique($mountIds));
|
||||||
|
|
||||||
$applicable = $this->getApplicableForMounts($mountIds);
|
$applicable = $this->getApplicableForMounts($mountIds);
|
||||||
$config = $this->getConfigForMounts($mountIds);
|
$config = $this->getConfigForMounts($mountIds);
|
||||||
|
@ -338,7 +347,7 @@ class DBConfigService {
|
||||||
$mount['config'] = $config;
|
$mount['config'] = $config;
|
||||||
$mount['options'] = $options;
|
$mount['options'] = $options;
|
||||||
return $mount;
|
return $mount;
|
||||||
}, $mounts, $applicable, $config, $options);
|
}, $uniqueMounts, $applicable, $config, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -271,4 +271,15 @@ class DBConfigServiceTest extends TestCase {
|
||||||
$mount = $this->dbConfig->getMountById($id2);
|
$mount = $this->dbConfig->getMountById($id2);
|
||||||
$this->assertEquals('bar', $mount['auth_backend']);
|
$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']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue