/** * {@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; }