From 2d00e2bbe77ab9bb150555e5cef7a269c8a25b4a Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 20 Mar 2019 12:21:01 +0100 Subject: [PATCH] Do not ignore the max-version for the "update-available" check Signed-off-by: Joas Schilling --- .../lib/Controller/APIController.php | 2 +- lib/private/App/AppStore/Fetcher/AppFetcher.php | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/updatenotification/lib/Controller/APIController.php b/apps/updatenotification/lib/Controller/APIController.php index 90a5fb782f5..0314ccf38c3 100644 --- a/apps/updatenotification/lib/Controller/APIController.php +++ b/apps/updatenotification/lib/Controller/APIController.php @@ -90,7 +90,7 @@ class APIController extends OCSController { ]); } - $this->appFetcher->setVersion($newVersion, 'future-apps.json'); + $this->appFetcher->setVersion($newVersion, 'future-apps.json', false); // Apps available on the app store for that version $availableApps = array_map(function(array $app) { diff --git a/lib/private/App/AppStore/Fetcher/AppFetcher.php b/lib/private/App/AppStore/Fetcher/AppFetcher.php index 4067e03a818..9ad8f582460 100644 --- a/lib/private/App/AppStore/Fetcher/AppFetcher.php +++ b/lib/private/App/AppStore/Fetcher/AppFetcher.php @@ -40,6 +40,9 @@ class AppFetcher extends Fetcher { /** @var CompareVersion */ private $compareVersion; + /** @var bool */ + private $ignoreMaxVersion; + /** * @param Factory $appDataFactory * @param IClientService $clientService @@ -65,6 +68,7 @@ class AppFetcher extends Fetcher { $this->fileName = 'apps.json'; $this->setEndpoint(); $this->compareVersion = $compareVersion; + $this->ignoreMaxVersion = true; } /** @@ -93,8 +97,11 @@ class AppFetcher extends Fetcher { $version = $versionParser->getVersion($release['rawPlatformVersionSpec']); $ncVersion = $this->getVersion(); $min = $version->getMinimumVersion(); + $max = $version->getMaximumVersion(); $minFulfilled = $this->compareVersion->isCompatible($ncVersion, $min, '>='); - if ($minFulfilled) { + $maxFulfilled = $max !== '' && + $this->compareVersion->isCompatible($ncVersion, $max, '<='); + if ($minFulfilled && ($this->ignoreMaxVersion || $maxFulfilled)) { $releases[] = $release; } } catch (\InvalidArgumentException $e) { @@ -137,10 +144,12 @@ class AppFetcher extends Fetcher { /** * @param string $version * @param string $fileName + * @param bool $ignoreMaxVersion */ - public function setVersion(string $version, string $fileName = 'apps.json') { + public function setVersion(string $version, string $fileName = 'apps.json', bool $ignoreMaxVersion = true) { parent::setVersion($version); $this->fileName = $fileName; + $this->ignoreMaxVersion = $ignoreMaxVersion; $this->setEndpoint(); } }