Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Create.php
Go to the documentation of this file.
1 <?php
8 
11 
13 {
20  public function execute()
21  {
22  if (!$this->isRequestAllowed()) {
23  return $this->_redirect('*/*/index');
24  }
25 
26  $response = new \Magento\Framework\DataObject();
27 
31  $helper = $this->_objectManager->get(\Magento\Backup\Helper\Data::class);
32 
33  try {
34  $type = $this->getRequest()->getParam('type');
35 
36  if ($type == \Magento\Framework\Backup\Factory::TYPE_SYSTEM_SNAPSHOT && $this->getRequest()->getParam(
37  'exclude_media'
38  )
39  ) {
41  }
42 
43  $backupManager = $this->_backupFactory->create(
44  $type
45  )->setBackupExtension(
46  $helper->getExtensionByType($type)
47  )->setTime(
48  time()
49  )->setBackupsDir(
50  $helper->getBackupsDir()
51  );
52 
53  $backupManager->setName($this->getRequest()->getParam('backup_name'));
54 
55  $this->_coreRegistry->register('backup_manager', $backupManager);
56 
57  if ($this->getRequest()->getParam('maintenance_mode')) {
58  if (!$this->maintenanceMode->set(true)) {
59  $response->setError(
60  __(
61  'You need more permissions to activate maintenance mode right now.'
62  ) . ' ' . __(
63  'To create the backup, please deselect '
64  . '"Put store into maintenance mode" or update your permissions.'
65  )
66  );
67  $backupManager->setErrorMessage(
68  __("Something went wrong while putting your store into maintenance mode.")
69  );
70  return $this->getResponse()->representJson($response->toJson());
71  }
72  }
73 
74  if ($type != \Magento\Framework\Backup\Factory::TYPE_DB) {
76  $filesystem = $this->_objectManager->get(\Magento\Framework\Filesystem::class);
77  $backupManager->setRootDir($filesystem->getDirectoryRead(DirectoryList::ROOT)->getAbsolutePath())
78  ->addIgnorePaths($helper->getBackupIgnorePaths());
79  }
80 
81  $successMessage = $helper->getCreateSuccessMessageByType($type);
82 
83  $backupManager->create();
84 
85  $this->messageManager->addSuccessMessage($successMessage);
86 
87  $response->setRedirectUrl($this->getUrl('*/*/index'));
88  } catch (\Magento\Framework\Backup\Exception\NotEnoughFreeSpace $e) {
89  $errorMessage = __('You need more free space to create a backup.');
90  } catch (\Magento\Framework\Backup\Exception\NotEnoughPermissions $e) {
91  $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->info($e->getMessage());
92  $errorMessage = __('You need more permissions to create a backup.');
93  } catch (\Exception $e) {
94  $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->info($e->getMessage());
95  $errorMessage = __('We can\'t create the backup right now.');
96  }
97 
98  if (!empty($errorMessage)) {
99  $response->setError($errorMessage);
100  $backupManager->setErrorMessage($errorMessage);
101  }
102 
103  if ($this->getRequest()->getParam('maintenance_mode')) {
104  $this->maintenanceMode->set(false);
105  }
106 
107  $this->getResponse()->representJson($response->toJson());
108  }
109 
115  private function isRequestAllowed()
116  {
117  return $this->getRequest()->isAjax() && $this->getRequest()->isPost();
118  }
119 }
$response
Definition: 404.php:11
$helper
Definition: iframe.phtml:13
__()
Definition: __.php:13
$type
Definition: item.phtml:13
$filesystem