summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2017-01-04 10:40:14 +0100
committerJoas Schilling <coding@schilljs.com>2017-01-04 10:40:14 +0100
commitec4b0d1e8468302c96173934b60dbad6e0e8a070 (patch)
tree4470cfced33f2c7749342599c8f58a94e2a089e0 /lib
parenta75cfb601ec4d20f2eeddb25d1eb3ba745b71944 (diff)
downloadnextcloud-server-ec4b0d1e8468302c96173934b60dbad6e0e8a070.tar.gz
nextcloud-server-ec4b0d1e8468302c96173934b60dbad6e0e8a070.zip
Remove group restrictions when those are not allowed anymore
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/private/App/AppManager.php15
-rw-r--r--lib/private/legacy/app.php8
-rw-r--r--lib/public/App/IAppManager.php9
3 files changed, 32 insertions, 0 deletions
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
@@ -221,6 +221,21 @@ class AppManager implements IAppManager {
}
/**
+ * 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
*
* @param string $appId
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');
+ }
+ }
}
/**
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index 057a964ce0a..72c99777124 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -62,6 +62,15 @@ interface IAppManager {
public function enableApp($appId);
/**
+ * Whether a list of types contains a protected app type
+ *
+ * @param string[] $types
+ * @return bool
+ * @since 12.0.0
+ */
+ public function hasProtectedAppType($types);
+
+ /**
* Enable an app only for specific groups
*
* @param string $appId