Skip to content
Snippets Groups Projects
Unverified Commit 6292f665 authored by Joas Schilling's avatar Joas Schilling
Browse files

Allow multiple settings and sections per app

parent 060eac40
No related branches found
No related tags found
No related merge requests found
...@@ -122,6 +122,21 @@ class InfoParser { ...@@ -122,6 +122,21 @@ class InfoParser {
if (!array_key_exists('providers', $array['activity'])) { if (!array_key_exists('providers', $array['activity'])) {
$array['activity']['providers'] = []; $array['activity']['providers'] = [];
} }
if (!array_key_exists('settings', $array)) {
$array['settings'] = [];
}
if (!array_key_exists('admin', $array['settings'])) {
$array['settings']['admin'] = [];
}
if (!array_key_exists('admin-section', $array['settings'])) {
$array['settings']['admin-section'] = [];
}
if (!array_key_exists('personal', $array['settings'])) {
$array['settings']['personal'] = [];
}
if (!array_key_exists('personal-section', $array['settings'])) {
$array['settings']['personal-section'] = [];
}
if (array_key_exists('types', $array)) { if (array_key_exists('types', $array)) {
if (is_array($array['types'])) { if (is_array($array['types'])) {
...@@ -171,6 +186,18 @@ class InfoParser { ...@@ -171,6 +186,18 @@ class InfoParser {
) { ) {
$array['collaboration']['collaborators']['searchPlugins'] = $array['collaboration']['collaborators']['searchPlugins']['searchPlugin']; $array['collaboration']['collaborators']['searchPlugins'] = $array['collaboration']['collaborators']['searchPlugins']['searchPlugin'];
} }
if (isset($array['settings']['admin']) && !is_array($array['settings']['admin'])) {
$array['settings']['admin'] = [$array['settings']['admin']];
}
if (isset($array['settings']['admin-section']) && !is_array($array['settings']['admin-section'])) {
$array['settings']['admin-section'] = [$array['settings']['admin-section']];
}
if (isset($array['settings']['personal']) && !is_array($array['settings']['personal'])) {
$array['settings']['personal'] = [$array['settings']['personal']];
}
if (isset($array['settings']['personal-section']) && !is_array($array['settings']['personal-section'])) {
$array['settings']['personal-section'] = [$array['settings']['personal-section']];
}
if(!is_null($this->cache)) { if(!is_null($this->cache)) {
$this->cache->set($fileCacheKey, json_encode($array)); $this->cache->set($fileCacheKey, json_encode($array));
......
...@@ -127,18 +127,26 @@ class Manager implements IManager { ...@@ -127,18 +127,26 @@ class Manager implements IManager {
* @inheritdoc * @inheritdoc
*/ */
public function setupSettings(array $settings) { public function setupSettings(array $settings) {
if (isset($settings[IManager::KEY_ADMIN_SECTION])) { if (!empty($settings[IManager::KEY_ADMIN_SECTION])) {
$this->setupSectionEntry($settings[IManager::KEY_ADMIN_SECTION], 'admin'); foreach ($settings[IManager::KEY_ADMIN_SECTION] as $className) {
$this->setupSectionEntry($className, 'admin');
}
} }
if (isset($settings[IManager::KEY_ADMIN_SETTINGS])) { if (!empty($settings[IManager::KEY_ADMIN_SETTINGS])) {
$this->setupSettingsEntry($settings[IManager::KEY_ADMIN_SETTINGS], 'admin'); foreach ($settings[IManager::KEY_ADMIN_SETTINGS] as $className) {
$this->setupSettingsEntry($className, 'admin');
}
} }
if (isset($settings[IManager::KEY_PERSONAL_SECTION])) { if (!empty($settings[IManager::KEY_PERSONAL_SECTION])) {
$this->setupSectionEntry($settings[IManager::KEY_PERSONAL_SECTION], 'personal'); foreach ($settings[IManager::KEY_PERSONAL_SECTION] as $className) {
$this->setupSectionEntry($className, 'personal');
}
} }
if (isset($settings[IManager::KEY_PERSONAL_SETTINGS])) { if (!empty($settings[IManager::KEY_PERSONAL_SETTINGS])) {
$this->setupSettingsEntry($settings[IManager::KEY_PERSONAL_SETTINGS], 'personal'); foreach ($settings[IManager::KEY_PERSONAL_SETTINGS] as $className) {
$this->setupSettingsEntry($className, 'personal');
}
} }
} }
...@@ -153,18 +161,26 @@ class Manager implements IManager { ...@@ -153,18 +161,26 @@ class Manager implements IManager {
public function onAppDisabled($appId) { public function onAppDisabled($appId) {
$appInfo = \OC_App::getAppInfo($appId); // hello static legacy $appInfo = \OC_App::getAppInfo($appId); // hello static legacy
if (isset($appInfo['settings'][IManager::KEY_ADMIN_SECTION])) { if (!empty($appInfo['settings'][IManager::KEY_ADMIN_SECTION])) {
$this->mapper->remove(Mapper::TABLE_ADMIN_SECTIONS, trim($appInfo['settings'][IManager::KEY_ADMIN_SECTION], '\\')); foreach ($appInfo['settings'][IManager::KEY_ADMIN_SECTION] as $className) {
$this->mapper->remove(Mapper::TABLE_ADMIN_SECTIONS, trim($className, '\\'));
}
} }
if (isset($appInfo['settings'][IManager::KEY_ADMIN_SETTINGS])) { if (!empty($appInfo['settings'][IManager::KEY_ADMIN_SETTINGS])) {
$this->mapper->remove(Mapper::TABLE_ADMIN_SETTINGS, trim($appInfo['settings'][IManager::KEY_ADMIN_SETTINGS], '\\')); foreach ($appInfo['settings'][IManager::KEY_ADMIN_SETTINGS] as $className) {
$this->mapper->remove(Mapper::TABLE_ADMIN_SETTINGS, trim($className, '\\'));
}
} }
if (isset($appInfo['settings'][IManager::KEY_PERSONAL_SECTION])) { if (!empty($appInfo['settings'][IManager::KEY_PERSONAL_SECTION])) {
$this->mapper->remove(Mapper::TABLE_PERSONAL_SECTIONS, trim($appInfo['settings'][IManager::KEY_PERSONAL_SECTION], '\\')); foreach ($appInfo['settings'][IManager::KEY_PERSONAL_SECTION] as $className) {
$this->mapper->remove(Mapper::TABLE_PERSONAL_SECTIONS, trim($className, '\\'));
}
} }
if (isset($appInfo['settings'][IManager::KEY_PERSONAL_SETTINGS])) { if (!empty($appInfo['settings'][IManager::KEY_PERSONAL_SETTINGS])) {
$this->mapper->remove(Mapper::TABLE_PERSONAL_SETTINGS, trim($appInfo['settings'][IManager::KEY_PERSONAL_SETTINGS], '\\')); foreach ($appInfo['settings'][IManager::KEY_PERSONAL_SETTINGS] as $className) {
$this->mapper->remove(Mapper::TABLE_PERSONAL_SETTINGS, trim($className, '\\'));
}
} }
} }
......
...@@ -81,5 +81,11 @@ ...@@ -81,5 +81,11 @@
"filters": [], "filters": [],
"settings": [], "settings": [],
"providers": [] "providers": []
},
"settings": {
"admin": [],
"admin-section": [],
"personal": [],
"personal-section": []
} }
} }
...@@ -147,7 +147,7 @@ class ManagerTest extends TestCase { ...@@ -147,7 +147,7 @@ class ManagerTest extends TestCase {
->method('add'); ->method('add');
$this->manager->setupSettings([ $this->manager->setupSettings([
$type => $className, $type => [$className],
]); ]);
} }
...@@ -174,7 +174,7 @@ class ManagerTest extends TestCase { ...@@ -174,7 +174,7 @@ class ManagerTest extends TestCase {
->method('update'); ->method('update');
$this->manager->setupSettings([ $this->manager->setupSettings([
$type => 'OCA\Files\Settings\Admin', $type => ['OCA\Files\Settings\Admin'],
]); ]);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment