123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Backup\Controller\Adminhtml\Index;
- use Magento\Framework\App\Action\HttpPostActionInterface;
- use Magento\Framework\App\Filesystem\DirectoryList;
- use Magento\Framework\Filesystem;
- /**
- * Create backup controller
- */
- class Create extends \Magento\Backup\Controller\Adminhtml\Index implements HttpPostActionInterface
- {
- /**
- * Create backup action.
- *
- * @return void|\Magento\Backend\App\Action
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- */
- public function execute()
- {
- if (!$this->isRequestAllowed()) {
- return $this->_redirect('*/*/index');
- }
- $response = new \Magento\Framework\DataObject();
- /**
- * @var \Magento\Backup\Helper\Data $helper
- */
- $helper = $this->_objectManager->get(\Magento\Backup\Helper\Data::class);
- try {
- $type = $this->getRequest()->getParam('type');
- if ($type == \Magento\Framework\Backup\Factory::TYPE_SYSTEM_SNAPSHOT && $this->getRequest()->getParam(
- 'exclude_media'
- )
- ) {
- $type = \Magento\Framework\Backup\Factory::TYPE_SNAPSHOT_WITHOUT_MEDIA;
- }
- $backupManager = $this->_backupFactory->create(
- $type
- )->setBackupExtension(
- $helper->getExtensionByType($type)
- )->setTime(
- time()
- )->setBackupsDir(
- $helper->getBackupsDir()
- );
- $backupManager->setName($this->getRequest()->getParam('backup_name'));
- $this->_coreRegistry->register('backup_manager', $backupManager);
- if ($this->getRequest()->getParam('maintenance_mode')) {
- if (!$this->maintenanceMode->set(true)) {
- $response->setError(
- __(
- 'You need more permissions to activate maintenance mode right now.'
- ) . ' ' . __(
- 'To create the backup, please deselect '
- . '"Put store into maintenance mode" or update your permissions.'
- )
- );
- $backupManager->setErrorMessage(
- __("Something went wrong while putting your store into maintenance mode.")
- );
- return $this->getResponse()->representJson($response->toJson());
- }
- }
- if ($type != \Magento\Framework\Backup\Factory::TYPE_DB) {
- /** @var Filesystem $filesystem */
- $filesystem = $this->_objectManager->get(\Magento\Framework\Filesystem::class);
- $backupManager->setRootDir($filesystem->getDirectoryRead(DirectoryList::ROOT)->getAbsolutePath())
- ->addIgnorePaths($helper->getBackupIgnorePaths());
- }
- $successMessage = $helper->getCreateSuccessMessageByType($type);
- $backupManager->create();
- $this->messageManager->addSuccessMessage($successMessage);
- $response->setRedirectUrl($this->getUrl('*/*/index'));
- } catch (\Magento\Framework\Backup\Exception\NotEnoughFreeSpace $e) {
- $errorMessage = __('You need more free space to create a backup.');
- } catch (\Magento\Framework\Backup\Exception\NotEnoughPermissions $e) {
- $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->info($e->getMessage());
- $errorMessage = __('You need more permissions to create a backup.');
- } catch (\Exception $e) {
- $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->info($e->getMessage());
- $errorMessage = __('We can\'t create the backup right now.');
- }
- if (!empty($errorMessage)) {
- $response->setError($errorMessage);
- $backupManager->setErrorMessage($errorMessage);
- }
- if ($this->getRequest()->getParam('maintenance_mode')) {
- $this->maintenanceMode->set(false);
- }
- $this->getResponse()->representJson($response->toJson());
- }
- /**
- * Check if request is allowed.
- *
- * @return bool
- */
- private function isRequestAllowed()
- {
- return $this->getRequest()->isAjax() && $this->getRequest()->isPost();
- }
- }
|