/** * @param $uid * @param bool $dbBackupPath * @param null $plugin * @throws Exception */ public function updateDatabase($uid, $dbBackupPath = false, $plugin = null) { try { Craft::log('Running migrations...', LogLevel::Info, true); if (!craft()->migrations->runToTop($plugin)) { Craft::log('Something went wrong running a migration. :-(', LogLevel::Error); craft()->updates->rollbackUpdate($uid, $dbBackupPath); Craft::log('Taking the site out of maintenance mode.', LogLevel::Info, true); Craft::disableMaintenanceMode(); throw new Exception(Craft::t('There was a problem updating your database.')); } // If plugin is null we're looking at Craft. if ($plugin === null) { // Setting new Craft info. Craft::log('Settings new Craft release info in craft_info table.', LogLevel::Info, true); if (!craft()->updates->setNewCraftInfo(CRAFT_VERSION, CRAFT_BUILD, CRAFT_RELEASE_DATE)) { throw new Exception(Craft::t('The update was performed successfully, but there was a problem setting the new info in the database info table.')); } } else { if (!craft()->updates->setNewPluginInfo($plugin)) { throw new Exception(Craft::t('The update was performed successfully, but there was a problem setting the new info in the plugins table.')); } } // Take the site out of maintenance mode. Craft::log('Taking the site out of maintenance mode.', LogLevel::Info, true); Craft::disableMaintenanceMode(); } catch (\Exception $e) { craft()->updates->rollbackUpdate($uid, $dbBackupPath); Craft::log('Taking the site out of maintenance mode.', LogLevel::Info, true); Craft::disableMaintenanceMode(); throw new Exception(Craft::t('There was a problem updating your database.')); } }