diff --git a/lib/updater.php b/lib/updater.php index 38c04a60..7a49a7cf 100644 --- a/lib/updater.php +++ b/lib/updater.php @@ -21,13 +21,29 @@ public static function update($version, $backupBase){ throw new \Exception("Backup directory $backupBase is not found"); } + // Switch include paths to backup + $pathsArray = explode(PATH_SEPARATOR, get_include_path()); + $pathsTranslated = []; + foreach ($pathsArray as $path){ + //Update all 3rdparty paths + if (preg_match('|^' . preg_quote(\OC::$THIRDPARTYROOT . '/3rdparty') . '|', $path)) { + $pathsTranslated[] = preg_replace( + '|^' . preg_quote(\OC::$THIRDPARTYROOT . '/3rdparty') .'|', + $backupBase . '/3rdparty', + $path + ); + continue; + } + // Update all OC webroot paths + $pathsTranslated[] = preg_replace( + '|^' . preg_quote(\OC::$SERVERROOT) .'|', + $backupBase, + $path + ); + } + set_include_path( - $backupBase . PATH_SEPARATOR . - $backupBase . '/core/lib' . PATH_SEPARATOR . - $backupBase . '/core/config' . PATH_SEPARATOR . - $backupBase . '/3rdparty' . PATH_SEPARATOR . - $backupBase . '/apps' . PATH_SEPARATOR . - get_include_path() + implode(PATH_SEPARATOR, $pathsTranslated) ); $tempDir = self::getTempDir();