Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SystemBackup.php
Go to the documentation of this file.
1 <?php
7 
10 
15 {
16  const XML_PATH_BACKUP_ENABLED = 'system/backup/enabled';
17 
18  const XML_PATH_BACKUP_TYPE = 'system/backup/type';
19 
20  const XML_PATH_BACKUP_MAINTENANCE_MODE = 'system/backup/maintenance';
21 
27  protected $_errors = [];
28 
34  protected $_backupData = null;
35 
41  protected $_coreRegistry = null;
42 
46  protected $_logger;
47 
53  protected $_scopeConfig;
54 
60  protected $_filesystem;
61 
65  protected $_backupFactory;
66 
70  protected $maintenanceMode;
71 
81  public function __construct(
82  \Magento\Backup\Helper\Data $backupData,
83  \Magento\Framework\Registry $coreRegistry,
84  \Psr\Log\LoggerInterface $logger,
85  \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
86  \Magento\Framework\Filesystem $filesystem,
87  \Magento\Framework\Backup\Factory $backupFactory,
88  \Magento\Framework\App\MaintenanceMode $maintenanceMode
89  ) {
90  $this->_backupData = $backupData;
91  $this->_coreRegistry = $coreRegistry;
92  $this->_logger = $logger;
93  $this->_scopeConfig = $scopeConfig;
94  $this->_filesystem = $filesystem;
95  $this->_backupFactory = $backupFactory;
96  $this->maintenanceMode = $maintenanceMode;
97  }
98 
105  public function execute()
106  {
107  if (!$this->_backupData->isEnabled()) {
108  return $this;
109  }
110 
111  if (!$this->_scopeConfig->isSetFlag(self::XML_PATH_BACKUP_ENABLED, ScopeInterface::SCOPE_STORE)) {
112  return $this;
113  }
114 
115  if ($this->_scopeConfig->isSetFlag(self::XML_PATH_BACKUP_MAINTENANCE_MODE, ScopeInterface::SCOPE_STORE)) {
116  $this->maintenanceMode->set(true);
117  }
118 
119  $type = $this->_scopeConfig->getValue(self::XML_PATH_BACKUP_TYPE, ScopeInterface::SCOPE_STORE);
120 
121  $this->_errors = [];
122  try {
123  $backupManager = $this->_backupFactory->create(
124  $type
125  )->setBackupExtension(
126  $this->_backupData->getExtensionByType($type)
127  )->setTime(
128  time()
129  )->setBackupsDir(
130  $this->_backupData->getBackupsDir()
131  );
132 
133  $this->_coreRegistry->register('backup_manager', $backupManager);
134 
135  if ($type != \Magento\Framework\Backup\Factory::TYPE_DB) {
136  $backupManager->setRootDir(
137  $this->_filesystem->getDirectoryRead(DirectoryList::ROOT)->getAbsolutePath()
138  )->addIgnorePaths(
139  $this->_backupData->getBackupIgnorePaths()
140  );
141  }
142 
143  $backupManager->create();
144  $message = $this->_backupData->getCreateSuccessMessageByType($type);
145  $this->_logger->info($message);
146  } catch (\Exception $e) {
147  $this->_errors[] = $e->getMessage();
148  $this->_errors[] = $e->getTrace();
149  throw $e;
150  }
151 
152  if ($this->_scopeConfig->isSetFlag(self::XML_PATH_BACKUP_MAINTENANCE_MODE, ScopeInterface::SCOPE_STORE)) {
153  $this->maintenanceMode->set(false);
154  }
155 
156  return $this;
157  }
158 }
$message
$logger
$type
Definition: item.phtml:13
__construct(\Magento\Backup\Helper\Data $backupData, \Magento\Framework\Registry $coreRegistry, \Psr\Log\LoggerInterface $logger, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\Filesystem $filesystem, \Magento\Framework\Backup\Factory $backupFactory, \Magento\Framework\App\MaintenanceMode $maintenanceMode)
$filesystem