diff options
author | Joas Schilling <coding@schilljs.com> | 2021-10-01 16:40:25 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2021-10-13 09:34:55 +0200 |
commit | 0b747538ff2849b3e27a8fcf3b68c5b8007b28d9 (patch) | |
tree | ee9a1763f33ac1042627c745e77f034e3da59ba9 /lib/private/Updater.php | |
parent | 1ea5983568dc99aa80e52f18837629d137b8a03c (diff) | |
download | nextcloud-server-0b747538ff2849b3e27a8fcf3b68c5b8007b28d9.tar.gz nextcloud-server-0b747538ff2849b3e27a8fcf3b68c5b8007b28d9.zip |
Keep group restrictions when reenabling apps after an update
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib/private/Updater.php')
-rw-r--r-- | lib/private/Updater.php | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 4ddb5e2b7cb..6494f7efe0d 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -40,11 +40,13 @@ declare(strict_types=1); */ namespace OC; +use OC\App\AppManager; use OC\DB\Connection; use OC\DB\MigrationService; use OC\Hooks\BasicEmitter; use OC\IntegrityCheck\Checker; use OC_App; +use OCP\App\IAppManager; use OCP\HintException; use OCP\IConfig; use OCP\ILogger; @@ -265,9 +267,12 @@ class Updater extends BasicEmitter { // Update the appfetchers version so it downloads the correct list from the appstore \OC::$server->getAppFetcher()->setVersion($currentVersion); + /** @var IAppManager|AppManager $appManager */ + $appManager = \OC::$server->getAppManager(); + // upgrade appstore apps - $this->upgradeAppStoreApps(\OC::$server->getAppManager()->getInstalledApps()); - $autoDisabledApps = \OC::$server->getAppManager()->getAutoDisabledApps(); + $this->upgradeAppStoreApps($appManager->getInstalledApps()); + $autoDisabledApps = $appManager->getAutoDisabledApps(); $this->upgradeAppStoreApps($autoDisabledApps, true); // install new shipped apps on upgrade @@ -400,7 +405,7 @@ class Updater extends BasicEmitter { * @throws \Exception */ private function upgradeAppStoreApps(array $disabledApps, bool $reenable = false): void { - foreach ($disabledApps as $app) { + foreach ($disabledApps as $app => $previousEnableSetting) { try { $this->emit('\OC\Updater', 'checkAppStoreAppBefore', [$app]); if ($this->installer->isUpdateAvailable($app)) { @@ -411,7 +416,11 @@ class Updater extends BasicEmitter { if ($reenable) { $ocApp = new \OC_App(); - $ocApp->enable($app); + if (!empty($previousEnableSetting)) { + $ocApp->enable($app, $previousEnableSetting); + } else { + $ocApp->enable($app); + } } } catch (\Exception $ex) { $this->log->error($ex->getMessage(), [ |