summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-03-06 17:57:10 +0100
committerGitHub <noreply@github.com>2018-03-06 17:57:10 +0100
commit846b0d6a42ba5997f57a46be399f8067acfa854d (patch)
treef219029c0a935c7c965ed82a94e25cfe138edb36 /lib
parentd0de8e4905ed8ccd8a014ea79767788bf5228201 (diff)
parentb2a9ea08a3f27eb5f218dd54cd1d1c58582e4f3e (diff)
downloadnextcloud-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.php2
-rw-r--r--lib/private/App/AppManager.php7
-rw-r--r--lib/private/Updater.php2
-rw-r--r--lib/private/legacy/app.php39
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