/** * Perform an upgrade without using the web-frontend * * @param bool $enablePrint * * @throws Exception * @return array, with keys: * - message: string, HTML-ish blob */ public function run($enablePrint = TRUE) { // lets get around the time limit issue if possible for upgrades if (!ini_get('safe_mode')) { set_time_limit(0); } $upgrade = new CRM_Upgrade_Form(); list($currentVer, $latestVer) = $upgrade->getUpgradeVersions(); if ($error = $upgrade->checkUpgradeableVersion($currentVer, $latestVer)) { throw new Exception($error); } // Disable our SQL triggers CRM_Core_DAO::dropTriggers(); // CRM-11156 $preUpgradeMessage = NULL; $upgrade->setPreUpgradeMessage($preUpgradeMessage, $currentVer, $latestVer); $postUpgradeMessageFile = CRM_Utils_File::tempnam('civicrm-post-upgrade'); $queueRunner = new CRM_Queue_Runner(array('title' => ts('CiviCRM Upgrade Tasks'), 'queue' => CRM_Upgrade_Form::buildQueue($currentVer, $latestVer, $postUpgradeMessageFile))); $queueResult = $queueRunner->runAll(); if ($queueResult !== TRUE) { $errorMessage = CRM_Core_Error::formatTextException($queueResult['exception']); CRM_Core_Error::debug_log_message($errorMessage); if ($enablePrint) { print $errorMessage; } throw $queueResult['exception']; // FIXME test } CRM_Upgrade_Form::doFinish(); $message = file_get_contents($postUpgradeMessageFile); return array('latestVer' => $latestVer, 'message' => $message, 'text' => CRM_Utils_String::htmlToText($message)); }
/** * Display any final messages, clear caches, etc */ public function runFinish() { $upgrade = new CRM_Upgrade_Form(); $template = CRM_Core_Smarty::singleton(); // If we're redirected from queue-runner, then isUpgradePending=true. // If user then reloads the finish page, the isUpgradePending will be unset. (Because the session has been cleared.) if ($this->get('isUpgradePending')) { // TODO: Use structured message store $postUpgradeMessage = file_get_contents($this->get('postUpgradeMessageFile')); // This destroys $session, so do it after get('postUpgradeMessageFile') CRM_Upgrade_Form::doFinish(); } else { $postUpgradeMessage = ''; // Session was destroyed! Can't recover messages. } // do a version check - after doFinish() sets the final version list($currentVer, $latestVer) = $upgrade->getUpgradeVersions(); if ($error = $upgrade->checkCurrentVersion($currentVer, $latestVer)) { CRM_Core_Error::fatal($error); } $template->assign('message', $postUpgradeMessage); $template->assign('upgraded', TRUE); $template->assign('sid', CRM_Utils_System::getSiteID()); // Render page header if (!defined('CIVICRM_UF_HEAD') && ($region = CRM_Core_Region::instance('html-header', FALSE))) { CRM_Utils_System::addHTMLHead($region->render('')); } $content = $template->fetch('CRM/common/success.tpl'); echo CRM_Utils_System::theme($content, $this->_print, TRUE); }
/** * Display any final messages, clear caches, etc */ function runFinish() { $upgrade = new CRM_Upgrade_Form(); $template = CRM_Core_Smarty::singleton(); // TODO: Use structured message store $postUpgradeMessage = file_get_contents($this->get('postUpgradeMessageFile')); // This destroys $session, so do it after ge('postUpgradeMessageFile') CRM_Upgrade_Form::doFinish(); // do a version check - after doFinish() sets the final version list($currentVer, $latestVer) = $upgrade->getUpgradeVersions(); if ($error = $upgrade->checkCurrentVersion($currentVer, $latestVer)) { CRM_Core_Error::fatal($error); } $template->assign('message', $postUpgradeMessage); $template->assign('upgraded', TRUE); $content = $template->fetch('CRM/common/success.tpl'); echo CRM_Utils_System::theme('page', $content, TRUE, $this->_print, FALSE, TRUE); }