protected function check_all_ext(SymfonyStyle $io, $stability, $recheck)
{
/** @var \phpbb\extension\manager $ext_manager */
$ext_manager = $this->phpbb_container->get('ext.manager');
$rows = [];
foreach ($ext_manager->all_available() as $ext_name => $ext_path) {
$row = [];
$row[] = sprintf("<info>%s</info>", $ext_name);
$md_manager = $ext_manager->create_extension_metadata_manager($ext_name);
try {
$metadata = $md_manager->get_metadata('all');
if (isset($metadata['extra']['version-check'])) {
try {
$updates_available = $ext_manager->version_check($md_manager, $recheck, false, $stability);
if (!empty($updates_available)) {
$versions = array_map(function ($entry) {
return $entry['current'];
}, $updates_available);
$row[] = sprintf("<comment>%s</comment>", $metadata['version']);
$row[] = implode(', ', $versions);
} else {
$row[] = sprintf("<info>%s</info>", $metadata['version']);
$row[] = '';
}
} catch (\RuntimeException $e) {
$row[] = $metadata['version'];
$row[] = '';
}
} else {
$row[] = $metadata['version'];
$row[] = '';
}
} catch (exception_interface $e) {
$exception_message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
$row[] = '<error>' . $exception_message . '</error>';
} catch (\RuntimeException $e) {
$row[] = '<error>' . $e->getMessage() . '</error>';
}
$rows[] = $row;
}
$io->table([$this->language->lang('EXTENSION_NAME'), $this->language->lang('CURRENT_VERSION'), $this->language->lang('LATEST_VERSION')], $rows);
return 0;
}