/** * Runs the upgrade specific file * * @return void */ public function install_appclass() { /* INIT */ $continue = 0; $customHTML = ''; $file = ''; /* Reset Errors */ $this->_resetErrors(); /* IPB 2.0.0+ Upgrade file */ $fileNewer = IPSLib::getAppDir($this->_currentApp) . '/setup/versions/upg_' . $this->_uipLong . '/version_upgrade.php'; /* Older files */ $fileLegacy = IPSLib::getAppDir($this->_currentApp) . '/setup/versions/upg_' . $this->_uipLong . '/version_upgrade_' . $this->_dbDriver . '.php'; /* Got any file? */ if (is_file($fileNewer)) { $file = $fileNewer; } else { if (is_file($fileLegacy)) { $file = $fileLegacy; } } /* Do we have a file? */ if ($file) { require_once $file; /*noLibHook*/ $upgrade = new version_upgrade(); $result = $upgrade->doExecute($this->registry); if (count($this->registry->output->fetchWarnings()) > 0) { if (!$result) { $this->registry->output->setNextAction('upgrade&do=appclass'); } elseif ($this->_uipLong >= $this->_latestLong || $this->_uipLong == 0) { /* Got another app to do? */ $this->runCustomScript($this->_currentApp); $next = IPSSetUp::fetchNextApplication($this->_currentApp, '', $this->settings['gb_char_set']); if ($next['key']) { $this->registry->output->setNextAction('upgrade&do=sql&appdir=' . $next['key']); } else { $this->registry->output->setNextAction('upgrade&do=checkdb'); } } else { $this->registry->output->setNextAction('upgrade&do=sql'); } $this->registry->output->setTitle("Обновление: Обновление версии"); $this->registry->output->sendOutput(); } /* App specific version upgrade is done */ if ($result) { /* The individual upgrade files all shoot you to 2.0... */ if ($this->_currentApp == 'core' and $this->_uipLong < 20000) { //$this->_uipLong = '10004'; } /* Update version history */ if (IPSSetUp::is300plus() === TRUE) { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_app' => $this->_currentApp, 'upgrade_notes' => '', 'upgrade_mid' => 0)); /* Update app */ $_in = $this->_currentApp == 'core' ? "'core', 'forums', 'members'" : "'" . $this->_currentApp . "'"; $this->DB->update('core_applications', array('app_long_version' => $this->_uipLong, 'app_version' => $this->_uipHuman, 'app_website' => $this->_appData['website'], 'app_update_check' => $this->_appData['update_check']), 'app_directory IN (' . $_in . ')'); } else { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_notes' => '', 'upgrade_mid' => 0)); } if ($upgrade->fetchOutput()) { $customHTML = $upgrade->fetchOutput(); } else { $output[] = "Успешно обновлено до версии {$this->_uipHuman}"; } } else { if ($upgrade->fetchOutput()) { $customHTML = $upgrade->fetchOutput(); } else { $output[] = "Продолжение обновления"; } $continue = 1; } } else { /* Nothing to run */ if ($this->_uipLong) { /* Update version history */ if (IPSSetUp::is300plus() === TRUE) { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_app' => $this->_currentApp, 'upgrade_notes' => '', 'upgrade_mid' => 0)); /* Update app */ $_in = $this->_currentApp == 'core' ? "'core', 'forums', 'members'" : "'" . $this->_currentApp . "'"; $updateApp = array('app_long_version' => $this->_uipLong, 'app_version' => $this->_uipHuman); /* Check only 1 field since we add both at the same time anyway */ if ($this->DB->checkForField('app_website', 'core_applications')) { $updateApp['app_website'] = $this->_appData['website']; $updateApp['app_update_check'] = $this->_appData['update_check']; } $this->DB->update('core_applications', $updateApp, 'app_directory IN (' . $_in . ')'); } else { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_notes' => '', 'upgrade_mid' => 0)); } $output[] = "Успешно обновлено до версии {$this->_uipHuman}"; } } //----------------------------------------- // Next... //----------------------------------------- if ($continue) { $this->registry->output->setNextAction('upgrade&do=appclass'); } elseif ($this->_uipLong >= $this->_latestLong || $this->_uipLong == 0) { /* Got another app to do? */ $this->runCustomScript($this->_currentApp); $next = IPSSetUp::fetchNextApplication($this->_currentApp, '', $this->settings['gb_char_set']); if ($next['key']) { $this->registry->output->setNextAction('upgrade&do=sql&appdir=' . $next['key']); } else { $this->registry->output->setNextAction('upgrade&do=checkdb'); } } else { $this->registry->output->setNextAction('upgrade&do=sql'); } $this->registry->output->setTitle("Обновление: Обновление версии"); if ($customHTML) { $this->registry->output->addContent($customHTML); } else { $this->registry->output->addContent($this->registry->output->template()->page_refresh($output)); } $this->registry->output->setInstallStep($this->_stepCount, $this->_totalSteps); $this->registry->output->sendOutput(); }
/** * Runs the upgrade specific file * * @return void */ public function install_appclass() { /* INIT */ $continue = 0; $customHTML = ''; $file = ''; /* Reset Errors */ $this->_resetErrors(); /* IPB 2.0.0+ Upgrade file */ $fileNewer = IPSLib::getAppDir($this->_currentApp) . '/setup/versions/upg_' . $this->_uipLong . '/version_upgrade.php'; /* Older files */ $fileLegacy = IPSLib::getAppDir($this->_currentApp) . '/setup/versions/upg_' . $this->_uipLong . '/version_upgrade_' . $this->_dbDriver . '.php'; /* Got any file? */ if (file_exists($fileNewer)) { $file = $fileNewer; } else { if (file_exists($fileLegacy)) { $file = $fileLegacy; } } /* Do we have a file? */ if ($file) { require_once $file; $upgrade = new version_upgrade(); $result = $upgrade->doExecute($this->registry); if (count($this->registry->output->fetchWarnings()) > 0) { if (!$result) { $this->registry->output->setNextAction('upgrade&do=appclass'); } elseif ($this->_uipLong >= $this->_latestLong || $this->_uipLong == 0) { /* Got another app to do? */ $next = IPSSetUp::fetchNextApplication($this->_currentApp); if ($next['key']) { $this->registry->output->setNextAction('upgrade&do=sql&appdir=' . $next['key']); } else { $this->registry->output->setNextAction('upgrade&do=checkdb'); } } else { $this->registry->output->setNextAction('upgrade&do=sql'); } $this->registry->output->setTitle("Upgrade: Version Upgrade"); $this->registry->output->sendOutput(); } /* App specific version upgrade is done */ if ($result) { /* The individual upgrade files all shoot you to 2.0... */ if ($this->_currentApp == 'core' and $this->_uipLong < 20000) { //$this->_uipLong = '10004'; } /* Update version history */ if (IPSSetUp::is300plus() === TRUE) { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_app' => $this->_currentApp, 'upgrade_mid' => 0)); /* Update app */ $_in = $this->_currentApp == 'core' ? "'core', 'forums', 'members'" : "'" . $this->_currentApp . "'"; $this->DB->update('core_applications', array('app_long_version' => $this->_uipLong, 'app_version' => $this->_uipHuman), 'app_directory IN (' . $_in . ')'); } else { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_mid' => 0)); } if ($upgrade->fetchOutput()) { $customHTML = $upgrade->fetchOutput(); } else { $output[] = "Successfully upgraded to version {$this->_uipHuman}"; } } else { if ($upgrade->fetchOutput()) { $customHTML = $upgrade->fetchOutput(); } else { $output[] = "Proceeding with update..."; } $continue = 1; } } else { /* Nothing to run */ if ($this->_uipLong) { /* Update version history */ if (IPSSetUp::is300plus() === TRUE) { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_app' => $this->_currentApp, 'upgrade_mid' => 0)); /* Update app */ $_in = $this->_currentApp == 'core' ? "'core', 'forums', 'members'" : "'" . $this->_currentApp . "'"; $this->DB->update('core_applications', array('app_long_version' => $this->_uipLong, 'app_version' => $this->_uipHuman), 'app_directory IN (' . $_in . ')'); } else { $this->DB->insert('upgrade_history', array('upgrade_version_id' => $this->_uipLong, 'upgrade_version_human' => $this->_uipHuman, 'upgrade_date' => time(), 'upgrade_mid' => 0)); } $output[] = "Successfully upgraded to version {$this->_uipHuman}"; } } //----------------------------------------- // Next... //----------------------------------------- if ($continue) { $this->registry->output->setNextAction('upgrade&do=appclass'); } elseif ($this->_uipLong >= $this->_latestLong || $this->_uipLong == 0) { /* Got another app to do? */ $next = IPSSetUp::fetchNextApplication($this->_currentApp); if ($next['key']) { $this->registry->output->setNextAction('upgrade&do=sql&appdir=' . $next['key']); } else { $this->registry->output->setNextAction('upgrade&do=checkdb'); } } else { $this->registry->output->setNextAction('upgrade&do=sql'); } $this->registry->output->setTitle("Upgrade: Version Upgrade"); if ($customHTML) { $this->registry->output->addContent($customHTML); } else { $this->registry->output->addContent($this->registry->output->template()->page_refresh($output)); } $this->registry->output->setInstallStep($this->_stepCount, $this->_totalSteps); $this->registry->output->sendOutput(); }