Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2019-08-15 21:08:58 +0300
committerGitHub <noreply@github.com>2019-08-15 21:08:58 +0300
commit9c2d70125a19aceafab680d0662d694c03100f3e (patch)
tree4500a533e72359c5ab7c8c33585fe483c4fc6dc5
parentf452e23a7db1742afa50eaa80b746afe769bdf7b (diff)
parent810ee7d811c4cf0291add770cb89e5b6d11104b9 (diff)
Merge pull request #16507 from nextcloud/bugfix/15416/update_autodisabled_apps
Fix tracking of auto disabled apps in Updater
-rw-r--r--lib/private/App/AppManager.php18
-rw-r--r--lib/private/Updater.php5
-rw-r--r--lib/private/legacy/app.php4
-rw-r--r--lib/public/App/IAppManager.php9
4 files changed, 29 insertions, 7 deletions
diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index db286d7ad7d..322731d677c 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -91,6 +91,9 @@ class AppManager implements IAppManager {
/** @var array */
private $appVersions = [];
+ /** @var array */
+ private $autoDisabledApps = [];
+
/**
* @param IUserSession $userSession
* @param AppConfig $appConfig
@@ -168,6 +171,13 @@ class AppManager implements IAppManager {
}
/**
+ * @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');
diff --git a/lib/private/Updater.php b/lib/private/Updater.php
index 56bea90ddd7..d5de1bf6b27 100644
--- a/lib/private/Updater.php
+++ b/lib/private/Updater.php
@@ -256,7 +256,8 @@ class Updater extends BasicEmitter {
// upgrade appstore apps
$this->upgradeAppStoreApps(\OC::$server->getAppManager()->getInstalledApps());
- $this->upgradeAppStoreApps(\OC_App::$autoDisabledApps, true);
+ $autoDisabledApps = \OC::$server->getAppManager()->getAutoDisabledApps();
+ $this->upgradeAppStoreApps($autoDisabledApps, true);
// install new shipped apps on upgrade
OC_App::loadApps(['authentication']);
@@ -404,7 +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);
+ \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
diff --git a/lib/private/legacy/app.php b/lib/private/legacy/app.php
index d495bef2ebd..58b617aae45 100644
--- a/lib/private/legacy/app.php
+++ b/lib/private/legacy/app.php
@@ -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);
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index 6213227bfd1..aebd47b3a2d 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -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.
@@ -168,6 +169,12 @@ interface IAppManager {
public function getEnabledAppsForGroup(IGroup $group): array;
/**
+ * @return array
+ * @since 17.0.0
+ */
+ public function getAutoDisabledApps(): array;
+
+ /**
* @param String $appId
* @return string[]
* @since 17.0.0