From cbb34af53f0e6a85375ef9223a9dd74b9ba646ce Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Thu, 26 Nov 2020 16:44:20 +0100 Subject: [PATCH] Do not update incompatible apps Previously there was no (platform) dependency check for an app that was installed before. So Nextcloud happily upgraded an app that now requires a php version newer than the current one. Which means in the lucky case you see a failing upgrade due to the language incompatibility, or in the unlucky case you see unexpected errors later in production. Signed-off-by: Christoph Wurst --- lib/private/Updater.php | 2 +- lib/private/legacy/OC_App.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 437ba38362..b9b72dd7fa 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -360,7 +360,7 @@ class Updater extends BasicEmitter { $disabledApps = []; $appManager = \OC::$server->getAppManager(); foreach ($apps as $app) { - // check if the app is compatible with this version of ownCloud + // check if the app is compatible with this version of Nextcloud $info = OC_App::getAppInfo($app); if ($info === null || !OC_App::isAppCompatible($version, $info)) { if ($appManager->isShipped($app)) { diff --git a/lib/private/legacy/OC_App.php b/lib/private/legacy/OC_App.php index 0b9ae8c8c5..fdbbb1be90 100644 --- a/lib/private/legacy/OC_App.php +++ b/lib/private/legacy/OC_App.php @@ -974,6 +974,15 @@ class OC_App { \OC::$server->getAppManager()->clearAppsCache(); $appData = self::getAppInfo($appId); + $ignoreMaxApps = \OC::$server->getConfig()->getSystemValue('app_install_overwrite', []); + $ignoreMax = in_array($appId, $ignoreMaxApps, true); + \OC_App::checkAppDependencies( + \OC::$server->getConfig(), + \OC::$server->getL10N('core'), + $appData, + $ignoreMax + ); + self::registerAutoloading($appId, $appPath, true); self::executeRepairSteps($appId, $appData['repair-steps']['pre-migration']);