123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Backup;
- use Magento\Framework\Archive;
- use Magento\Framework\Backup\Db\BackupFactory;
- use Magento\Framework\Backup\Filesystem\Iterator\File;
- /**
- * Class to work with database backups
- *
- * @author Magento Core Team <core@magentocommerce.com>
- * @api
- * @since 100.0.2
- */
- class Db extends AbstractBackup
- {
- /**
- * @var BackupFactory
- */
- protected $_backupFactory;
- /**
- * @param BackupFactory $backupFactory
- */
- public function __construct(BackupFactory $backupFactory)
- {
- $this->_backupFactory = $backupFactory;
- }
- /**
- * Implements Rollback functionality for Db
- *
- * @return bool
- */
- public function rollback()
- {
- set_time_limit(0);
- ignore_user_abort(true);
- $this->_lastOperationSucceed = false;
- $archiveManager = new Archive();
- $source = $archiveManager->unpack($this->getBackupPath(), $this->getBackupsDir());
- $file = new File($source);
- foreach ($file as $statement) {
- $this->getResourceModel()->runCommand($statement);
- }
- if ($this->keepSourceFile() === false) {
- @unlink($source);
- }
- $this->_lastOperationSucceed = true;
- return true;
- }
- /**
- * Checks whether the line is last in sql command
- *
- * @param string $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 = $this->_backupFactory->createBackupModel()->setTime(
- $this->getTime()
- )->setType(
- $this->getType()
- )->setPath(
- $this->getBackupsDir()
- )->setName(
- $this->getName()
- );
- $backupDb = $this->_backupFactory->createBackupDbModel();
- $backupDb->createBackup($backup);
- $this->_lastOperationSucceed = true;
- return true;
- }
- /**
- * Get database size
- *
- * @return int
- */
- public function getDBSize()
- {
- $backupDb = $this->_backupFactory->createBackupDbModel();
- return $backupDb->getDBBackupSize();
- }
- /**
- * Get Backup Type
- *
- * @return string
- */
- public function getType()
- {
- return 'db';
- }
- }
|