diff options
author | Tristan Darricau <github@nicofuma.fr> | 2017-01-22 23:15:26 +0100 |
---|---|---|
committer | Tristan Darricau <github@nicofuma.fr> | 2017-01-22 23:15:26 +0100 |
commit | 7c77e333138e6c705ffbfd3028ce1d2002404965 (patch) | |
tree | c0fa7de1eac82faa1cd758fe6ed92920570d311a /phpBB/phpbb/version_helper.php | |
parent | f7ccd7af8ef529bd8a43b8a3e0b342f9b228d961 (diff) | |
parent | 085a839963b61e9812aa06601b1ffeb2eb077ab9 (diff) | |
download | forums-7c77e333138e6c705ffbfd3028ce1d2002404965.tar forums-7c77e333138e6c705ffbfd3028ce1d2002404965.tar.gz forums-7c77e333138e6c705ffbfd3028ce1d2002404965.tar.bz2 forums-7c77e333138e6c705ffbfd3028ce1d2002404965.tar.xz forums-7c77e333138e6c705ffbfd3028ce1d2002404965.zip |
Merge branch '3.1.x' into 3.2.x
* 3.1.x:
[ticket/14968] Use earlier version as written in comment
[ticket/14968] Update docblock and ensure method returns array
[ticket/14968] Display possible upgrade on acp index and update page
[ticket/14968] Add method for retrieving updates on current branch
Diffstat (limited to 'phpBB/phpbb/version_helper.php')
-rw-r--r-- | phpBB/phpbb/version_helper.php | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/phpBB/phpbb/version_helper.php b/phpBB/phpbb/version_helper.php index 17caaa4a60..f80d2b16fc 100644 --- a/phpBB/phpbb/version_helper.php +++ b/phpBB/phpbb/version_helper.php @@ -198,6 +198,49 @@ class version_helper } /** + * Gets the latest update for the current branch the user is on + * Will suggest versions from newer branches when EoL has been reached + * and/or version from newer branch is needed for having all known security + * issues fixed. + * + * @param bool $force_update Ignores cached data. Defaults to false. + * @param bool $force_cache Force the use of the cache. Override $force_update. + * @return array Version info or empty array if there are no updates + * @throws \RuntimeException + */ + public function get_update_on_branch($force_update = false, $force_cache = false) + { + $versions = $this->get_versions_matching_stability($force_update, $force_cache); + + $self = $this; + $current_version = $this->current_version; + + // Filter out any versions less than to the current version + $versions = array_filter($versions, function($data) use ($self, $current_version) { + return $self->compare($data['current'], $current_version, '>='); + }); + + // Get the lowest version from the previous list. + $update_info = array_reduce($versions, function($value, $data) use ($self, $current_version) { + if ($value === null && $self->compare($data['current'], $current_version, '>=')) + { + if (!$data['eol'] && (!$data['security'] || $self->compare($data['security'], $data['current'], '<='))) + { + return ($self->compare($data['current'], $current_version, '>')) ? $data : array(); + } + else + { + return null; + } + } + + return $value; + }); + + return $update_info === null ? array() : $update_info; + } + + /** * Obtains the latest version information * * @param bool $force_update Ignores cached data. Defaults to false. |