Merge pull request #2980 from nextcloud/backport-2930-kill-group-restriction-when-not-applicable

[stable11] Remove group restrictions when those are not allowed anymore
This commit is contained in:
Morris Jobke 2017-01-10 09:59:57 +01:00 committed by GitHub
commit 90c5912eec
3 changed files with 32 additions and 0 deletions

View File

@ -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
*

View File

@ -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');
}
}
}
/**

View File

@ -61,6 +61,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
*