diff --git a/lib/location/apps.php b/lib/location/apps.php index 149435dd..e5f97a8a 100644 --- a/lib/location/apps.php +++ b/lib/location/apps.php @@ -41,7 +41,7 @@ public function update($tmpDir = '') { Helper::move($this->newBase . '/' . $appId, $path); } else { // The app is new and doesn't exist in the current instance - $pathData = first(\OC::$APPSROOTS); + $pathData = \OC::$APPSROOTS[0]; Helper::move($this->newBase . '/' . $appId, $pathData['path'] . '/' . $appId); } } 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();