Ejemplo n.º 1
0
 /**
  * Performs maintenance and clean up tasks after an update.
  *
  * Called during both a manual and auto-update.
  *
  * @return null
  */
 public function actionCleanUp()
 {
     $this->requirePostRequest();
     $this->requireAjaxRequest();
     $data = craft()->request->getRequiredPost('data');
     if ($this->_isManualUpdate($data)) {
         $uid = false;
     } else {
         $uid = $data['uid'];
     }
     $handle = $this->_getFixedHandle($data);
     $oldVersion = false;
     // Grab the old version from the manifest data before we nuke it.
     $manifestData = UpdateHelper::getManifestData(UpdateHelper::getUnzipFolderFromUID($uid), $handle);
     if ($manifestData && $handle == 'craft') {
         $oldVersion = UpdateHelper::getLocalVersionFromManifest($manifestData);
     }
     craft()->updates->updateCleanUp($uid, $handle);
     if ($handle == 'craft' && $oldVersion && version_compare($oldVersion, craft()->getVersion(), '<')) {
         $returnUrl = UrlHelper::getUrl('whats-new');
     } else {
         $returnUrl = craft()->config->get('postCpLoginRedirect');
     }
     $this->returnJson(array('alive' => true, 'finished' => true, 'returnUrl' => $returnUrl));
 }
Ejemplo n.º 2
0
 /**
  * @param $uid
  * @param $handle
  *
  * @throws Exception
  * @return bool
  */
 public function cleanUp($uid, $handle)
 {
     // Clear the updates cache.
     Craft::log('Clearing the update cache.', LogLevel::Info, true);
     if (!craft()->updates->flushUpdateInfoFromCache()) {
         throw new Exception(Craft::t('The update was performed successfully, but there was a problem invalidating the update cache.'));
     }
     // If uid !== false, then it's an auto-update.
     if ($uid !== false) {
         $unzipFolder = UpdateHelper::getUnzipFolderFromUID($uid);
         // Clean-up any leftover files.
         Craft::log('Cleaning up temp files after update.', LogLevel::Info, true);
         $this->_cleanTempFiles($unzipFolder, $handle);
     }
     Craft::log('Finished Updater.', LogLevel::Info, true);
     return true;
 }
Ejemplo n.º 3
0
 /**
  * Performs maintenance and clean up tasks after an update.
  *
  * Called during both a manual and auto-update.
  *
  * @return null
  */
 public function actionCleanUp()
 {
     $this->requirePostRequest();
     $this->requireAjaxRequest();
     $data = craft()->request->getRequiredPost('data');
     if ($this->_isManualUpdate($data)) {
         $uid = false;
     } else {
         // If it's not a manual update, make sure they have auto-update permissions.
         craft()->userSession->requirePermission('performUpdates');
         if (!craft()->config->get('allowAutoUpdates')) {
             $this->returnJson(array('alive' => true, 'errorDetails' => Craft::t('Auto-updating is disabled on this system.'), 'finished' => true));
         }
         $uid = $data['uid'];
     }
     $handle = $this->_getFixedHandle($data);
     $oldVersion = false;
     // Grab the old version from the manifest data before we nuke it.
     $manifestData = UpdateHelper::getManifestData(UpdateHelper::getUnzipFolderFromUID($uid));
     if ($manifestData) {
         $oldVersion = UpdateHelper::getLocalVersionFromManifest($manifestData);
     }
     craft()->updates->updateCleanUp($uid, $handle);
     if ($oldVersion && version_compare($oldVersion, craft()->getVersion(), '<')) {
         $returnUrl = UrlHelper::getUrl('whats-new');
     } else {
         $returnUrl = craft()->userSession->getReturnUrl();
     }
     $this->returnJson(array('alive' => true, 'finished' => true, 'returnUrl' => $returnUrl));
 }
Ejemplo n.º 4
0
 /**
  * @param      $uid
  * @param bool $dbBackupPath
  * @return array
  */
 public function rollbackUpdate($uid, $dbBackupPath = false)
 {
     try {
         craft()->config->maxPowerCaptain();
         if ($dbBackupPath && craft()->config->get('backupDbOnUpdate') && craft()->config->get('restoreDbOnUpdateFailure')) {
             Craft::log('Rolling back any database changes.', LogLevel::Info, true);
             UpdateHelper::rollBackDatabaseChanges($dbBackupPath);
             Craft::log('Done rolling back any database changes.', LogLevel::Info, true);
         }
         // If uid !== false, it's an auto-update.
         if ($uid !== false) {
             Craft::log('Rolling back any file changes.', LogLevel::Info, true);
             $manifestData = UpdateHelper::getManifestData(UpdateHelper::getUnzipFolderFromUID($uid));
             if ($manifestData) {
                 UpdateHelper::rollBackFileChanges($manifestData);
             }
             Craft::log('Done rolling back any file changes.', LogLevel::Info, true);
         }
         Craft::log('Finished rolling back changes.', LogLevel::Info, true);
         return array('success' => true);
     } catch (\Exception $e) {
         return array('success' => false, 'message' => $e->getMessage());
     }
 }
Ejemplo n.º 5
0
 /**
  * @param string $uid
  * @param string $handle
  * @param bool   $dbBackupPath
  *
  * @return array
  */
 public function rollbackUpdate($uid, $handle, $dbBackupPath = false)
 {
     try {
         // Fire an 'onEndUpdate' event and pass in that the update failed.
         $this->onEndUpdate(new Event($this, array('success' => false)));
         craft()->config->maxPowerCaptain();
         if ($dbBackupPath && craft()->config->get('backupDbOnUpdate') && craft()->config->get('restoreDbOnUpdateFailure')) {
             Craft::log('Rolling back any database changes.', LogLevel::Info, true);
             UpdateHelper::rollBackDatabaseChanges($dbBackupPath);
             Craft::log('Done rolling back any database changes.', LogLevel::Info, true);
         }
         // If uid !== false, it's an auto-update.
         if ($uid !== false) {
             Craft::log('Rolling back any file changes.', LogLevel::Info, true);
             $manifestData = UpdateHelper::getManifestData(UpdateHelper::getUnzipFolderFromUID($uid), $handle);
             if ($manifestData) {
                 UpdateHelper::rollBackFileChanges($manifestData, $handle);
             }
             Craft::log('Done rolling back any file changes.', LogLevel::Info, true);
         }
         Craft::log('Finished rolling back changes.', LogLevel::Info, true);
         Craft::log('Taking the site out of maintenance mode.', LogLevel::Info, true);
         craft()->disableMaintenanceMode();
         return array('success' => true);
     } catch (\Exception $e) {
         return array('success' => false, 'message' => $e->getMessage());
     }
 }
Ejemplo n.º 6
0
 /**
  * Performs maintenance and clean up tasks after an update.
  */
 public function actionCleanUp()
 {
     $this->requirePostRequest();
     $this->requireAjaxRequest();
     $data = craft()->request->getRequiredPost('data');
     if ($this->_isManualUpdate($data)) {
         $uid = false;
     } else {
         // If it's not a manual update, make sure they have auto-update permissions.
         craft()->userSession->requirePermission('performUpdates');
         $uid = $data['uid'];
     }
     $handle = $this->_getFixedHandle($data);
     $oldVersion = false;
     // Grab the old version from the manifest data before we nuke it.
     $manifestData = UpdateHelper::getManifestData(UpdateHelper::getUnzipFolderFromUID($uid));
     if ($manifestData) {
         $oldVersion = UpdateHelper::getLocalVersionFromManifest($manifestData);
     }
     $return = craft()->updates->updateCleanUp($uid, $handle);
     if (!$return['success']) {
         $this->returnJson(array('error' => $return['message']));
     }
     if ($oldVersion && version_compare($oldVersion, '1.1', '<')) {
         $returnUrl = UrlHelper::getUrl('whats-new');
     } else {
         $returnUrl = craft()->userSession->getReturnUrl();
     }
     $this->returnJson(array('success' => true, 'finished' => true, 'returnUrl' => $returnUrl));
 }
Ejemplo n.º 7
0
 /**
  * Performs maintenance and clean up tasks after an update.
  *
  * Called during both a manual and auto-update.
  *
  * @return null
  * @throws Exception
  */
 public function actionCleanUp()
 {
     $this->requirePostRequest();
     $this->requireAjaxRequest();
     $data = craft()->request->getRequiredPost('data');
     if ($this->_isManualUpdate($data)) {
         $uid = false;
     } else {
         $uid = craft()->security->validateData($data['uid']);
         if (!$uid) {
             throw new Exception('Could not validate UID');
         }
     }
     $handle = $this->_getFixedHandle($data);
     $oldVersion = false;
     // Grab the old version from the manifest data before we nuke it.
     $manifestData = UpdateHelper::getManifestData(UpdateHelper::getUnzipFolderFromUID($uid), $handle);
     if ($manifestData && $handle == 'craft') {
         $oldVersion = UpdateHelper::getLocalVersionFromManifest($manifestData);
     }
     craft()->updates->updateCleanUp($uid, $handle);
     // New major Craft CMS version?
     if ($handle == 'craft' && $oldVersion && AppHelper::getMajorVersion($oldVersion) < AppHelper::getMajorVersion(craft()->getVersion())) {
         $returnUrl = UrlHelper::getUrl('whats-new');
     } else {
         $returnUrl = craft()->config->get('postCpLoginRedirect');
     }
     $this->returnJson(array('alive' => true, 'finished' => true, 'returnUrl' => $returnUrl));
 }