mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
Merge branch '3.2.x'
This commit is contained in:
@@ -331,10 +331,7 @@ class acp_extensions
|
||||
'UP_TO_DATE_MSG' => $this->user->lang(empty($updates_available) ? 'UP_TO_DATE' : 'NOT_UP_TO_DATE', $md_manager->get_metadata('display-name')),
|
||||
));
|
||||
|
||||
foreach ($updates_available as $branch => $version_data)
|
||||
{
|
||||
$template->assign_block_vars('updates_available', $version_data);
|
||||
}
|
||||
$template->assign_block_vars('updates_available', $updates_available);
|
||||
}
|
||||
catch (exception_interface $e)
|
||||
{
|
||||
|
@@ -573,7 +573,7 @@ class manager
|
||||
* @param bool $force_update Ignores cached data. Defaults to false.
|
||||
* @param bool $force_cache Force the use of the cache. Override $force_update.
|
||||
* @param string $stability Force the stability (null by default).
|
||||
* @return string
|
||||
* @return array
|
||||
* @throws runtime_exception
|
||||
*/
|
||||
public function version_check(\phpbb\extension\metadata_manager $md_manager, $force_update = false, $force_cache = false, $stability = null)
|
||||
@@ -592,7 +592,7 @@ class manager
|
||||
$version_helper->set_file_location($version_check['host'], $version_check['directory'], $version_check['filename'], isset($version_check['ssl']) ? $version_check['ssl'] : false);
|
||||
$version_helper->force_stability($stability);
|
||||
|
||||
return $updates = $version_helper->get_suggested_updates($force_update, $force_cache);
|
||||
return $version_helper->get_ext_update_on_branch($force_update, $force_cache);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -240,6 +240,69 @@ class version_helper
|
||||
return $update_info === null ? array() : $update_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the latest extension update for the current phpBB 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_ext_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;
|
||||
|
||||
// Get current phpBB branch from version, e.g.: 3.2
|
||||
preg_match('/^(\d+\.\d+).*$/', $this->config['version'], $matches);
|
||||
$current_branch = $matches[1];
|
||||
|
||||
// Filter out any versions less than the current version
|
||||
$versions = array_filter($versions, function($data) use ($self, $current_version) {
|
||||
return $self->compare($data['current'], $current_version, '>=');
|
||||
});
|
||||
|
||||
// Filter out any phpbb branches less than the current version
|
||||
$branches = array_filter(array_keys($versions), function($branch) use ($self, $current_branch) {
|
||||
return $self->compare($branch, $current_branch, '>=');
|
||||
});
|
||||
if (!empty($branches))
|
||||
{
|
||||
$versions = array_intersect_key($versions, array_flip($branches));
|
||||
}
|
||||
else
|
||||
{
|
||||
// If branches are empty, it means the current phpBB branch is newer than any branch the
|
||||
// extension was validated against. Reverse sort the versions array so we get the newest
|
||||
// validated release available.
|
||||
krsort($versions);
|
||||
}
|
||||
|
||||
// Get the first available 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
|
||||
*
|
||||
|
Reference in New Issue
Block a user