mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
Keep group restrictions when reenabling apps after an update
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
1ea5983568
commit
0b747538ff
3 changed files with 18 additions and 11 deletions
|
|
@ -391,7 +391,11 @@ class AppManager implements IAppManager {
|
|||
}
|
||||
|
||||
if ($automaticDisabled) {
|
||||
$this->autoDisabledApps[] = $appId;
|
||||
$previousSetting = $this->appConfig->getValue($appId, 'enabled', 'yes');
|
||||
if ($previousSetting !== 'yes' && $previousSetting !== 'no') {
|
||||
$previousSetting = json_decode($previousSetting, true);
|
||||
}
|
||||
$this->autoDisabledApps[$appId] = $previousSetting;
|
||||
}
|
||||
|
||||
unset($this->installedAppsCache[$appId]);
|
||||
|
|
|
|||
|
|
@ -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(), [
|
||||
|
|
|
|||
|
|
@ -182,12 +182,6 @@ interface IAppManager {
|
|||
*/
|
||||
public function getEnabledAppsForGroup(IGroup $group): array;
|
||||
|
||||
/**
|
||||
* @return array
|
||||
* @since 17.0.0
|
||||
*/
|
||||
public function getAutoDisabledApps(): array;
|
||||
|
||||
/**
|
||||
* @param String $appId
|
||||
* @return string[]
|
||||
|
|
|
|||
Loading…
Reference in a new issue