From ec4b0d1e8468302c96173934b60dbad6e0e8a070 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 4 Jan 2017 10:40:14 +0100 Subject: Remove group restrictions when those are not allowed anymore Signed-off-by: Joas Schilling --- lib/private/App/AppManager.php | 15 +++++++++++++++ lib/private/legacy/app.php | 8 ++++++++ 2 files changed, 23 insertions(+) (limited to 'lib/private') diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php index fca5c9b87ac..6b819ef7ac1 100644 --- a/lib/private/App/AppManager.php +++ b/lib/private/App/AppManager.php @@ -220,6 +220,21 @@ class AppManager implements IAppManager { $this->clearAppsCache(); } + /** + * Whether a list of types contains a protected app type + * + * @param string[] $types + * @return bool + */ + public function hasProtectedAppType($types) { + if (empty($types)) { + return false; + } + + $protectedTypes = array_intersect($this->protectedAppTypes, $types); + return !empty($protectedTypes); + } + /** * Enable an app only for specific groups * diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index adf29601ac6..8ef7e08c733 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -273,9 +273,17 @@ class OC_App { $appTypes = implode(',', $appData['types']); } else { $appTypes = ''; + $appData['types'] = []; } \OC::$server->getAppConfig()->setValue($app, 'types', $appTypes); + + if (\OC::$server->getAppManager()->hasProtectedAppType($appData['types'])) { + $enabled = \OC::$server->getAppConfig()->getValue($app, 'enabled', 'yes'); + if ($enabled !== 'yes' && $enabled !== 'no') { + \OC::$server->getAppConfig()->setValue($app, 'enabled', 'yes'); + } + } } /** -- cgit v1.2.3