Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
BackupActionItems.php
Go to the documentation of this file.
1 <?php
7 
12 use Zend\Json\Json;
13 use Zend\Mvc\Controller\AbstractActionController;
14 use Zend\View\Model\JsonModel;
15 
16 class BackupActionItems extends AbstractActionController
17 {
18 
24  private $backupHandler;
25 
31  private $fileSystem;
32 
38  private $directoryList;
39 
48  public function __construct(
49  \Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider,
50  \Magento\Setup\Model\WebLogger $logger,
51  \Magento\Framework\App\Filesystem\DirectoryList $directoryList,
52  \Magento\Framework\Backup\Filesystem $fileSystem
53  ) {
54  $objectManager = $objectManagerProvider->get();
55  $this->backupHandler = $objectManager->create(
56  \Magento\Framework\Setup\BackupRollback::class,
57  ['log' => $logger]
58  );
59  $this->directoryList = $directoryList;
60  $this->fileSystem = $fileSystem;
61  }
62 
68  public function indexAction()
69  {
70  $view = new \Zend\View\Model\ViewModel;
71  $view->setTemplate('/error/404.phtml');
72  $this->getResponse()->setStatusCode(\Zend\Http\Response::STATUS_CODE_404);
73  return $view;
74  }
75 
81  public function checkAction()
82  {
83  $params = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
84  $backupDir = $this->directoryList->getPath(DirectoryList::VAR_DIR)
86  try {
87  $totalSize = 0;
88  if (isset($params['options']['code']) && $params['options']['code']) {
89  $totalSize += $this->backupHandler->getFSDiskSpace();
90  }
91  if (isset($params['options']['media']) && $params['options']['media']) {
92  $totalSize += $this->backupHandler->getFSDiskSpace(Factory::TYPE_MEDIA);
93  }
94  if (isset($params['options']['db']) && $params['options']['db']) {
95  $totalSize += $this->backupHandler->getDBDiskSpace();
96  }
97  $this->fileSystem->validateAvailableDiscSpace($backupDir, $totalSize);
98  return new JsonModel(
99  [
101  'size' => true
102  ]
103  );
104  } catch (\Exception $e) {
105  return new JsonModel(
106  [
108  'error' => $e->getMessage()
109  ]
110  );
111  }
112  }
113 
119  public function createAction()
120  {
121  $params = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
122  try {
123  $time = time();
124  $backupFiles = [];
125  if (isset($params['options']['code']) && $params['options']['code']) {
126  $backupFiles[] = $this->backupHandler->codeBackup($time);
127  }
128  if (isset($params['options']['media']) && $params['options']['media']) {
129  $backupFiles[] = $this->backupHandler->codeBackup($time, Factory::TYPE_MEDIA);
130  }
131  if (isset($params['options']['db']) && $params['options']['db']) {
132  $backupFiles[] = $this->backupHandler->dbBackup($time);
133  }
134  return new JsonModel(
135  [
137  'files' => $backupFiles
138  ]
139  );
140  } catch (\Exception $e) {
141  return new JsonModel(
142  [
144  'error' => $e->getMessage()
145  ]
146  );
147  }
148  }
149 }
__construct(\Magento\Setup\Model\ObjectManagerProvider $objectManagerProvider, \Magento\Setup\Model\WebLogger $logger, \Magento\Framework\App\Filesystem\DirectoryList $directoryList, \Magento\Framework\Backup\Filesystem $fileSystem)
$objectManager
Definition: bootstrap.php:17
$logger
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18