Пример #1
0
 /**
  * {@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;
 }