From 4b49f810b720ddf65dfe6384f9cb3b6d4975c4e2 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 15 Feb 2018 16:49:42 +0100 Subject: Re-enable apps that got automatically disabled while updating Signed-off-by: Joas Schilling --- lib/private/Updater.php | 9 ++++++++- lib/private/legacy/app.php | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 02b3138f30f..31c0397429b 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -250,6 +250,7 @@ class Updater extends BasicEmitter { // upgrade appstore apps $this->upgradeAppStoreApps(\OC::$server->getAppManager()->getInstalledApps()); + $this->upgradeAppStoreApps(\OC_App::$autoDisabledApps, true); // install new shipped apps on upgrade OC_App::loadApps(['authentication']); @@ -430,9 +431,10 @@ class Updater extends BasicEmitter { /** * @param array $disabledApps + * @param bool $reenable * @throws \Exception */ - private function upgradeAppStoreApps(array $disabledApps) { + private function upgradeAppStoreApps(array $disabledApps, $reenable = false) { foreach($disabledApps as $app) { try { $this->emit('\OC\Updater', 'checkAppStoreAppBefore', [$app]); @@ -441,6 +443,11 @@ class Updater extends BasicEmitter { $this->installer->updateAppstoreApp($app); } $this->emit('\OC\Updater', 'checkAppStoreApp', [$app]); + + if ($reenable) { + $ocApp = new \OC_App(); + $ocApp->enable($app); + } } catch (\Exception $ex) { $this->log->logException($ex, ['app' => 'core']); } diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index 0a5d31a9873..ab52a68caeb 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -70,6 +70,7 @@ class OC_App { static private $loadedApps = []; static private $altLogin = []; static private $alreadyRegistered = []; + static public $autoDisabledApps = []; const officialApp = 200; /** @@ -156,6 +157,7 @@ class OC_App { if (!\OC::$server->getAppManager()->isShipped($app)) { // Only disable apps which are not shipped \OC::$server->getAppManager()->disableApp($app); + self::$autoDisabledApps[] = $app; } } \OC::$server->getEventLogger()->end('load_app_' . $app); -- cgit v1.2.3