diff options
author | Robin McCorkell <rmccorkell@owncloud.com> | 2015-09-14 19:50:52 +0100 |
---|---|---|
committer | Robin McCorkell <rmccorkell@owncloud.com> | 2015-09-14 19:50:52 +0100 |
commit | 35d4851af2733515a1c81d4c0b78c4c14bf570e6 (patch) | |
tree | 7adde58609d8de5d7b64774f4339cdc4dd0c7449 /lib/private/updater.php | |
parent | 227868fe168529a638dcf2dbff4ff8f44cadc519 (diff) | |
parent | fb9e75edb6d01729a27c84f6f11399a1b0fde9f3 (diff) | |
download | nextcloud-server-35d4851af2733515a1c81d4c0b78c4c14bf570e6.tar.gz nextcloud-server-35d4851af2733515a1c81d4c0b78c4c14bf570e6.zip |
Merge branch 'master' into fix-app-disable-route
Diffstat (limited to 'lib/private/updater.php')
-rw-r--r-- | lib/private/updater.php | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/lib/private/updater.php b/lib/private/updater.php index f73fa8ff655..71e9732c307 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -212,19 +212,26 @@ class Updater extends BasicEmitter { } /** + * Return version from which this version is allowed to upgrade from + * + * @return string allowed previous version + */ + private function getAllowedPreviousVersion() { + // this should really be a JSON file + require \OC::$SERVERROOT . '/version.php'; + return implode('.', $OC_VersionCanBeUpgradedFrom); + } + + /** * Whether an upgrade to a specified version is possible * @param string $oldVersion * @param string $newVersion + * @param string $allowedPreviousVersion * @return bool */ - public function isUpgradePossible($oldVersion, $newVersion) { - $oldVersion = explode('.', $oldVersion); - $newVersion = explode('.', $newVersion); - - if($newVersion[0] > ($oldVersion[0] + 1) || $oldVersion[0] > $newVersion[0]) { - return false; - } - return true; + public function isUpgradePossible($oldVersion, $newVersion, $allowedPreviousVersion) { + return (version_compare($allowedPreviousVersion, $oldVersion, '<=') + && version_compare($oldVersion, $newVersion, '<=')); } /** @@ -259,8 +266,9 @@ class Updater extends BasicEmitter { */ private function doUpgrade($currentVersion, $installedVersion) { // Stop update if the update is over several major versions - if (!self::isUpgradePossible($installedVersion, $currentVersion)) { - throw new \Exception('Updates between multiple major versions are unsupported.'); + $allowedPreviousVersion = $this->getAllowedPreviousVersion(); + if (!self::isUpgradePossible($installedVersion, $currentVersion, $allowedPreviousVersion)) { + throw new \Exception('Updates between multiple major versions and downgrades are unsupported.'); } // Update .htaccess files |