/**
* {@inheritdoc}
*/
public function run()
{
// Array of update files
$update_files = array($this->phpbb_root_path . 'install/update', $this->phpbb_root_path . 'install/update/index.' . $this->php_ext);
// Check for a valid update directory
if (!$this->filesystem->exists($update_files) || !$this->filesystem->is_readable($update_files)) {
$this->iohandler->add_warning_message('UPDATE_FILES_NOT_FOUND');
$this->set_test_passed(false);
// If there are no update files, we can't check the version etc
// However, we can let the users run migrations if they really want to...
$this->installer_config->set('disable_filesystem_update', true);
return true;
}
// Recover version numbers
$update_info = array();
@(include $this->phpbb_root_path . 'install/update/index.' . $this->php_ext);
$info = empty($update_info) || !is_array($update_info) ? false : $update_info;
$update_version = false;
if ($info !== false) {
$update_version = !empty($info['version']['to']) ? trim($info['version']['to']) : false;
}
// Get current and latest version
try {
$latest_version = $this->version_helper->get_latest_on_current_branch(true);
} catch (\RuntimeException $e) {
$latest_version = $update_version;
}
$current_version = !empty($this->config['version_update_from']) ? $this->config['version_update_from'] : $this->config['version'];
// Check if the update package
if (!$this->update_helper->phpbb_version_compare($current_version, $update_version, '<')) {
$this->iohandler->add_error_message('NO_UPDATE_FILES_UP_TO_DATE');
$this->tests_passed = false;
}
// Check if the update package works with the installed version
if (empty($info['version']['from']) || $info['version']['from'] !== $current_version) {
$this->iohandler->add_error_message(array('INCOMPATIBLE_UPDATE_FILES', $current_version, $info['version']['from'], $update_version));
$this->tests_passed = false;
}
// check if this is the latest update package
if ($this->update_helper->phpbb_version_compare($update_version, $latest_version, '<')) {
$this->iohandler->add_warning_message(array('OLD_UPDATE_FILES', $info['version']['from'], $update_version, $latest_version));
}
return $this->tests_passed;
}