summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2017-01-06 15:38:13 +0100
committerGitHub <noreply@github.com>2017-01-06 15:38:13 +0100
commit4a2fbe9a5b6fd17781dd6de78b1247824618d717 (patch)
treeb573b7979431a312b0827453b6a0869b760d7f6d /lib
parent3ab22c2df53c8b86cbd72037ab407327b18cce11 (diff)
parentec4b0d1e8468302c96173934b60dbad6e0e8a070 (diff)
downloadnextcloud-server-4a2fbe9a5b6fd17781dd6de78b1247824618d717.tar.gz
nextcloud-server-4a2fbe9a5b6fd17781dd6de78b1247824618d717.zip
Merge pull request #2930 from nextcloud/kill-group-restriction-when-not-applicable
Remove group restrictions when those are not allowed anymore
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