*/ class Mage_Backup_Db extends Mage_Backup_Abstract { /** * Implements Rollback functionality for Db * * @return bool */ public function rollback() { set_time_limit(0); ignore_user_abort(true); $this->_lastOperationSucceed = false; $archiveManager = new Mage_Archive(); $source = $archiveManager->unpack($this->getBackupPath(), $this->getBackupsDir()); $file = new Mage_Backup_Filesystem_Iterator_File($source); foreach ($file as $statement) { $this->getResourceModel()->runCommand($statement); } @unlink($source); $this->_lastOperationSucceed = true; return true; } /** * Checks whether the line is last in sql command * * @param $line * @return bool */ protected function _isLineLastInCommand($line) { $cleanLine = trim($line); $lineLength = strlen($cleanLine); $returnResult = false; if ($lineLength > 0){ $lastSymbolIndex = $lineLength-1; if ($cleanLine[$lastSymbolIndex] == ';'){ $returnResult = true; } } return $returnResult; } /** * Implements Create Backup functionality for Db * * @return bool */ public function create() { set_time_limit(0); ignore_user_abort(true); $this->_lastOperationSucceed = false; $backup = Mage::getModel('backup/backup') ->setTime($this->getTime()) ->setType($this->getType()) ->setPath($this->getBackupsDir()) ->setName($this->getName()); $backupDb = Mage::getModel('backup/db'); $backupDb->createBackup($backup); $this->_lastOperationSucceed = true; return true; } /** * Get Backup Type * * @return string */ public function getType() { return 'db'; } }