mirror of
https://github.com/nextcloud/server.git
synced 2026-06-09 00:32:29 -04:00
Make the auto-disabled list more broad
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
f6c3424039
commit
810ee7d811
4 changed files with 28 additions and 15 deletions
|
|
@ -91,6 +91,9 @@ class AppManager implements IAppManager {
|
|||
/** @var array */
|
||||
private $appVersions = [];
|
||||
|
||||
/** @var array */
|
||||
private $autoDisabledApps = [];
|
||||
|
||||
/**
|
||||
* @param IUserSession $userSession
|
||||
* @param AppConfig $appConfig
|
||||
|
|
@ -167,6 +170,13 @@ class AppManager implements IAppManager {
|
|||
return array_keys($appsForGroups);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getAutoDisabledApps(): array {
|
||||
return $this->autoDisabledApps;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $appId
|
||||
* @return array
|
||||
|
|
@ -351,12 +361,18 @@ class AppManager implements IAppManager {
|
|||
* Disable an app for every user
|
||||
*
|
||||
* @param string $appId
|
||||
* @param bool $automaticDisabled
|
||||
* @throws \Exception if app can't be disabled
|
||||
*/
|
||||
public function disableApp($appId) {
|
||||
public function disableApp($appId, $automaticDisabled = false) {
|
||||
if ($this->isAlwaysEnabled($appId)) {
|
||||
throw new \Exception("$appId can't be disabled.");
|
||||
}
|
||||
|
||||
if ($automaticDisabled) {
|
||||
$this->autoDisabledApps[] = $appId;
|
||||
}
|
||||
|
||||
unset($this->installedAppsCache[$appId]);
|
||||
$this->appConfig->setValue($appId, 'enabled', 'no');
|
||||
|
||||
|
|
|
|||
|
|
@ -74,13 +74,6 @@ class Updater extends BasicEmitter {
|
|||
4 => 'Fatal',
|
||||
];
|
||||
|
||||
/**
|
||||
* List of appIds that have automatically been disabled during upgrade
|
||||
*
|
||||
* @var String[]
|
||||
*/
|
||||
private $autoDisabledApps = [];
|
||||
|
||||
/**
|
||||
* @param IConfig $config
|
||||
* @param Checker $checker
|
||||
|
|
@ -263,7 +256,7 @@ class Updater extends BasicEmitter {
|
|||
|
||||
// upgrade appstore apps
|
||||
$this->upgradeAppStoreApps(\OC::$server->getAppManager()->getInstalledApps());
|
||||
$autoDisabledApps = array_merge(\OC_App::$autoDisabledApps, $this->autoDisabledApps);
|
||||
$autoDisabledApps = \OC::$server->getAppManager()->getAutoDisabledApps();
|
||||
$this->upgradeAppStoreApps($autoDisabledApps, true);
|
||||
|
||||
// install new shipped apps on upgrade
|
||||
|
|
@ -412,8 +405,7 @@ class Updater extends BasicEmitter {
|
|||
if ($appManager->isShipped($app)) {
|
||||
throw new \UnexpectedValueException('The files of the app "' . $app . '" were not correctly replaced before running the update');
|
||||
}
|
||||
\OC::$server->getAppManager()->disableApp($app);
|
||||
$this->autoDisabledApps[] = $app;
|
||||
\OC::$server->getAppManager()->disableApp($app, true);
|
||||
$this->emit('\OC\Updater', 'incompatibleAppDisabled', array($app));
|
||||
}
|
||||
// no need to disable any app in case this is a non-core upgrade
|
||||
|
|
|
|||
|
|
@ -70,7 +70,6 @@ class OC_App {
|
|||
static private $loadedApps = [];
|
||||
static private $altLogin = [];
|
||||
static private $alreadyRegistered = [];
|
||||
static public $autoDisabledApps = [];
|
||||
const supportedApp = 300;
|
||||
const officialApp = 200;
|
||||
|
||||
|
|
@ -157,8 +156,7 @@ class OC_App {
|
|||
\OC::$server->getLogger()->logException($ex);
|
||||
if (!\OC::$server->getAppManager()->isShipped($app)) {
|
||||
// Only disable apps which are not shipped
|
||||
\OC::$server->getAppManager()->disableApp($app);
|
||||
self::$autoDisabledApps[] = $app;
|
||||
\OC::$server->getAppManager()->disableApp($app, true);
|
||||
}
|
||||
}
|
||||
\OC::$server->getEventLogger()->end('load_app_' . $app);
|
||||
|
|
|
|||
|
|
@ -110,9 +110,10 @@ interface IAppManager {
|
|||
* Disable an app for every user
|
||||
*
|
||||
* @param string $appId
|
||||
* @param bool $automaticDisabled
|
||||
* @since 8.0.0
|
||||
*/
|
||||
public function disableApp($appId);
|
||||
public function disableApp($appId, $automaticDisabled = false);
|
||||
|
||||
/**
|
||||
* Get the directory for the given app.
|
||||
|
|
@ -167,6 +168,12 @@ interface IAppManager {
|
|||
*/
|
||||
public function getEnabledAppsForGroup(IGroup $group): array;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @since 17.0.0
|
||||
*/
|
||||
public function getAutoDisabledApps(): array;
|
||||
|
||||
/**
|
||||
* @param String $appId
|
||||
* @return string[]
|
||||
|
|
|
|||
Loading…
Reference in a new issue