Browse Source

enlist only registered sections that also have settings registered to

pull/995/head
Arthur Schiwon 9 years ago
committed by Joas Schilling
parent
commit
7972fa5527
No known key found for this signature in database GPG Key ID: E166FD8976B3BAC8
  1. 12
      lib/private/Settings/Manager.php
  2. 24
      tests/lib/Settings/ManagerTest.php

12
lib/private/Settings/Manager.php

@ -327,10 +327,6 @@ class Manager implements IManager {
* @inheritdoc
*/
public function getAdminSections() {
$query = $this->dbc->getQueryBuilder();
$query->select(['class', 'priority'])
->from(self::TABLE_ADMIN_SECTIONS);
// built-in sections
$sections = [
0 => [new Section('server', $this->l->t('Server settings'), 0)],
@ -341,7 +337,15 @@ class Manager implements IManager {
99 => [new Section('tips-tricks', $this->l->t('Tips & tricks'), 0)],
];
$query = $this->dbc->getQueryBuilder();
$query->selectDistinct('s.class')
->addSelect('s.priority')
->from(self::TABLE_ADMIN_SECTIONS, 's')
->from(self::TABLE_ADMIN_SETTINGS, 'f')
->where($query->expr()->eq('s.id', 'f.section'))
;
$result = $query->execute();
while($row = $result->fetch()) {
if(!isset($sections[$row['priority']])) {
$sections[$row['priority']] = [];

24
tests/lib/Settings/ManagerTest.php

@ -136,15 +136,33 @@ class ManagerTest extends TestCase {
public function testGetAdminSections() {
$qb = $this->getMockBuilder('\OCP\DB\QueryBuilder\IQueryBuilder')->getMock();
$expr = $this->getMockBuilder('OCP\DB\QueryBuilder\IExpressionBuilder')->getMock();
$qb
->expects($this->once())
->method('select')
->with(['class', 'priority'])
->with(['s.class', 's.priority'])
->willReturn($qb);
$qb
->expects($this->once())
->expects($this->exactly(2))
->method('from')
->with('admin_sections')
->willReturn($qb);
$qb
->expects($this->at(1))
->method('from')
->with('admin_sections', 's')
->willReturn($qb);
$qb
->expects($this->at(2))
->method('from')
->with('admin_settings', 'f')
->willReturn($qb);
$qb
->expects($this->once())
->method('expr')
->willReturn($expr);
$qb
->expects($this->once())
->method('where')
->willReturn($qb);
$stmt = $this->getMockBuilder('\Doctrine\DBAL\Driver\Statement')->getMock();
$qb

Loading…
Cancel
Save