Merge pull request #29303 from nextcloud/backport/29259/stable20

[stable20] Fix app upgrade
This commit is contained in:
Joas Schilling 2021-10-19 13:36:38 +02:00 committed by GitHub
commit b0f4d1984b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -268,7 +268,9 @@ class Updater extends BasicEmitter {
// upgrade appstore apps
$this->upgradeAppStoreApps($appManager->getInstalledApps());
$autoDisabledApps = $appManager->getAutoDisabledApps();
$this->upgradeAppStoreApps($autoDisabledApps, true);
if (!empty($autoDisabledApps)) {
$this->upgradeAppStoreApps(array_keys($autoDisabledApps), $autoDisabledApps);
}
// install new shipped apps on upgrade
$errors = Installer::installShippedApps(true);
@ -448,12 +450,12 @@ class Updater extends BasicEmitter {
}
/**
* @param array $disabledApps
* @param bool $reenable
* @param array $apps
* @param array $previousEnableStates
* @throws \Exception
*/
private function upgradeAppStoreApps(array $disabledApps, $reenable = false) {
foreach ($disabledApps as $app => $previousEnableSetting) {
private function upgradeAppStoreApps(array $apps, array $previousEnableStates = []) {
foreach ($apps as $app) {
try {
$this->emit('\OC\Updater', 'checkAppStoreAppBefore', [$app]);
if ($this->installer->isUpdateAvailable($app)) {
@ -462,10 +464,10 @@ class Updater extends BasicEmitter {
}
$this->emit('\OC\Updater', 'checkAppStoreApp', [$app]);
if ($reenable) {
if (!empty($previousEnableStates)) {
$ocApp = new \OC_App();
if (!empty($previousEnableSetting)) {
$ocApp->enable($app, $previousEnableSetting);
if (!empty($previousEnableStates[$app])) {
$ocApp->enable($app, $previousEnableStates[$app]);
} else {
$ocApp->enable($app);
}