mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
125 lines
4.4 KiB
PHP
125 lines
4.4 KiB
PHP
<?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')) {
|
|
$this->maintenanceMode->set(true);
|
|
|
|
if (!$this->maintenanceMode->isOn()) {
|
|
$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();
|
|
}
|
|
}
|