* @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)],
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']] = [];
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