diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-03-06 17:57:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-06 17:57:10 +0100 |
commit | 846b0d6a42ba5997f57a46be399f8067acfa854d (patch) | |
tree | f219029c0a935c7c965ed82a94e25cfe138edb36 /lib | |
parent | d0de8e4905ed8ccd8a014ea79767788bf5228201 (diff) | |
parent | b2a9ea08a3f27eb5f218dd54cd1d1c58582e4f3e (diff) | |
download | nextcloud-server-846b0d6a42ba5997f57a46be399f8067acfa854d.tar.gz nextcloud-server-846b0d6a42ba5997f57a46be399f8067acfa854d.zip |
Merge pull request #5833 from nextcloud/fix_uninstall_rep_step
Run repair steps on uninstall in all cases
Diffstat (limited to 'lib')
-rw-r--r-- | lib/base.php | 2 | ||||
-rw-r--r-- | lib/private/App/AppManager.php | 7 | ||||
-rw-r--r-- | lib/private/Updater.php | 2 | ||||
-rw-r--r-- | lib/private/legacy/app.php | 39 |
4 files changed, 10 insertions, 40 deletions
diff --git a/lib/base.php b/lib/base.php index c5eabe1910a..f0e139d92c8 100644 --- a/lib/base.php +++ b/lib/base.php @@ -949,7 +949,7 @@ class OC { $appIds = (array)$request->getParam('appid'); foreach($appIds as $appId) { $appId = \OC_App::cleanAppId($appId); - \OC_App::disable($appId); + \OC::$server->getAppManager()->disableApp($appId); } \OC_JSON::success(); exit(); diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php index 4bf15c23fab..81f1369cb5e 100644 --- a/lib/private/App/AppManager.php +++ b/lib/private/App/AppManager.php @@ -287,6 +287,13 @@ class AppManager implements IAppManager { } unset($this->installedAppsCache[$appId]); $this->appConfig->setValue($appId, 'enabled', 'no'); + + // run uninstall steps + $appData = $this->getAppInfo($appId); + if (!is_null($appData)) { + \OC_App::executeRepairSteps($appId, $appData['repair-steps']['uninstall']); + } + $this->dispatcher->dispatch(ManagerEvent::EVENT_APP_DISABLE, new ManagerEvent( ManagerEvent::EVENT_APP_DISABLE, $appId )); diff --git a/lib/private/Updater.php b/lib/private/Updater.php index c70113e1c7d..4dc8edc0272 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -395,7 +395,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_App::disable($app); + \OC::$server->getAppManager()->disableApp($app); $this->emit('\OC\Updater', 'incompatibleAppDisabled', array($app)); } // no need to disable any app in case this is a non-core upgrade diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php index 16e57d43ebc..bc450ffa25d 100644 --- a/lib/private/legacy/app.php +++ b/lib/private/legacy/app.php @@ -154,16 +154,9 @@ class OC_App { \OC::$server->getLogger()->logException($ex); if (!\OC::$server->getAppManager()->isShipped($app)) { // Only disable apps which are not shipped - self::disable($app); + \OC::$server->getAppManager()->disableApp($app); } } - if (self::isType($app, array('authentication'))) { - // since authentication apps affect the "is app enabled for group" check, - // the enabled apps cache needs to be cleared to make sure that the - // next time getEnableApps() is called it will also include apps that were - // enabled for groups - self::$enabledAppsCache = []; - } \OC::$server->getEventLogger()->end('load_app_' . $app); } @@ -330,11 +323,6 @@ class OC_App { } /** - * get all enabled apps - */ - protected static $enabledAppsCache = []; - - /** * Returns apps enabled for the current user. * * @param bool $forceRefresh whether to refresh the cache @@ -393,7 +381,6 @@ class OC_App { */ public function enable(string $appId, array $groups = []) { - self::$enabledAppsCache = []; // flush // Check if app is already downloaded $installer = \OC::$server->query(Installer::class); @@ -422,30 +409,6 @@ class OC_App { } /** - * This function set an app as disabled in appconfig. - * - * @param string $app app - * @throws Exception - */ - public static function disable(string $app) { - // flush - self::$enabledAppsCache = []; - - // run uninstall steps - $appData = OC_App::getAppInfo($app); - if (!is_null($appData)) { - OC_App::executeRepairSteps($app, $appData['repair-steps']['uninstall']); - } - - // emit disable hook - needed anymore ? - \OC_Hook::emit('OC_App', 'pre_disable', array('app' => $app)); - - // finally disable it - $appManager = \OC::$server->getAppManager(); - $appManager->disableApp($app); - } - - /** * Get the path where to install apps * * @return string|false |