diff --git a/apps/systemtags/lib/Settings/Admin.php b/apps/systemtags/lib/Settings/Admin.php index c8d986414e..9e21dafed8 100644 --- a/apps/systemtags/lib/Settings/Admin.php +++ b/apps/systemtags/lib/Settings/Admin.php @@ -39,7 +39,7 @@ class Admin implements ISettings { * @return string the section ID, e.g. 'sharing' */ public function getSection() { - return 'additional'; + return 'workflow'; } /** diff --git a/apps/systemtags/tests/Settings/AdminTest.php b/apps/systemtags/tests/Settings/AdminTest.php index 174fd38215..d768ad8627 100644 --- a/apps/systemtags/tests/Settings/AdminTest.php +++ b/apps/systemtags/tests/Settings/AdminTest.php @@ -43,7 +43,7 @@ class AdminTest extends TestCase { } public function testGetSection() { - $this->assertSame('additional', $this->admin->getSection()); + $this->assertSame('workflow', $this->admin->getSection()); } public function testGetPriority() { diff --git a/apps/workflowengine/appinfo/info.xml b/apps/workflowengine/appinfo/info.xml index cc4118cb4c..751756fe5e 100644 --- a/apps/workflowengine/appinfo/info.xml +++ b/apps/workflowengine/appinfo/info.xml @@ -5,7 +5,7 @@ AGPL Morris Jobke - 1.0.0 + 1.0.1 WorkflowEngine other @@ -20,4 +20,8 @@ + + + OCA\WorkflowEngine\Settings\Section + diff --git a/apps/workflowengine/lib/Settings/Section.php b/apps/workflowengine/lib/Settings/Section.php new file mode 100644 index 0000000000..df8bb80713 --- /dev/null +++ b/apps/workflowengine/lib/Settings/Section.php @@ -0,0 +1,57 @@ + + * + * @author Lukas Reschke + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OCA\WorkflowEngine\Settings; + +use OCP\IL10N; +use OCP\Settings\ISection; + +class Section implements ISection { + /** @var IL10N */ + private $l; + + public function __construct(IL10N $l) { + $this->l = $l; + } + + /** + * {@inheritdoc} + */ + public function getID() { + return 'workflow'; + } + + /** + * {@inheritdoc} + */ + public function getName() { + return $this->l->t('Workflow'); + } + + /** + * {@inheritdoc} + */ + public function getPriority() { + return 55; + } +} diff --git a/lib/private/ServerContainer.php b/lib/private/ServerContainer.php index 1bab2587e8..df0293addf 100644 --- a/lib/private/ServerContainer.php +++ b/lib/private/ServerContainer.php @@ -23,6 +23,7 @@ namespace OC; +use OC\AppFramework\App; use OC\AppFramework\DependencyInjection\DIContainer; use OC\AppFramework\Utility\SimpleContainer; use OCP\AppFramework\QueryException; @@ -49,7 +50,7 @@ class ServerContainer extends SimpleContainer { * @param DIContainer $container */ public function registerAppContainer($appName, DIContainer $container) { - $this->appContainers[$appName] = $container; + $this->appContainers[strtolower(App::buildAppNamespace($appName, ''))] = $container; } /** diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php index 7574695d70..df2f52f816 100644 --- a/lib/private/Settings/Manager.php +++ b/lib/private/Settings/Manager.php @@ -107,7 +107,7 @@ class Manager implements IManager { if(isset($appInfo['settings'][IManager::KEY_ADMIN_SECTION])) { $this->remove(self::TABLE_ADMIN_SECTIONS, $appInfo['settings'][IManager::KEY_ADMIN_SECTION]); } - if(isset($settings['settings'][IManager::KEY_ADMIN_SETTINGS])) { + if(isset($appInfo['settings'][IManager::KEY_ADMIN_SETTINGS])) { $this->remove(self::TABLE_ADMIN_SETTINGS, $appInfo['settings'][IManager::KEY_ADMIN_SETTINGS]); } } @@ -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']] = []; diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php index cd5100eff6..942a2bb63e 100644 --- a/tests/lib/Settings/ManagerTest.php +++ b/tests/lib/Settings/ManagerTest.php @@ -136,15 +136,28 @@ 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']) + ->method('selectDistinct') + ->with('s.class') ->willReturn($qb); $qb ->expects($this->once()) + ->method('addSelect') + ->with('s.priority') + ->willReturn($qb); + $qb + ->expects($this->exactly(2)) ->method('from') - ->with('admin_sections') + ->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