Merge pull request #6759 from nextcloud/allow-multiple-settings-and-sections-per-app
Allow multiple settings and sections per app
This commit is contained in:
commit
8e9505e7b1
|
@ -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 {
|
||||||
) {
|
) {
|
||||||
$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 {
|
||||||
* @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 {
|
||||||
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 @@
|
||||||
"filters": [],
|
"filters": [],
|
||||||
"settings": [],
|
"settings": [],
|
||||||
"providers": []
|
"providers": []
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"admin": [],
|
||||||
|
"admin-section": [],
|
||||||
|
"personal": [],
|
||||||
|
"personal-section": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
->method('update');
|
->method('update');
|
||||||
|
|
||||||
$this->manager->setupSettings([
|
$this->manager->setupSettings([
|
||||||
$type => 'OCA\Files\Settings\Admin',
|
$type => ['OCA\Files\Settings\Admin'],
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue