Files

79 lines
2.7 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\HttpGetActionInterface;
use Magento\Framework\App\Filesystem\DirectoryList;
class Download extends \Magento\Backup\Controller\Adminhtml\Index implements HttpGetActionInterface
{
/**
* @var \Magento\Framework\Controller\Result\RawFactory
*/
protected $resultRawFactory;
/**
* @param \Magento\Backend\App\Action\Context $context
* @param \Magento\Framework\Registry $coreRegistry
* @param \Magento\Framework\Backup\Factory $backupFactory
* @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
* @param \Magento\Backup\Model\BackupFactory $backupModelFactory
* @param \Magento\Framework\App\MaintenanceMode $maintenanceMode
* @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
*/
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Registry $coreRegistry,
\Magento\Framework\Backup\Factory $backupFactory,
\Magento\Framework\App\Response\Http\FileFactory $fileFactory,
\Magento\Backup\Model\BackupFactory $backupModelFactory,
\Magento\Framework\App\MaintenanceMode $maintenanceMode,
\Magento\Framework\Controller\Result\RawFactory $resultRawFactory
) {
parent::__construct(
$context,
$coreRegistry,
$backupFactory,
$fileFactory,
$backupModelFactory,
$maintenanceMode
);
$this->resultRawFactory = $resultRawFactory;
}
/**
* Download backup action
*
* @return void|\Magento\Backend\App\Action
*/
public function execute()
{
/* @var $backup \Magento\Backup\Model\Backup */
$backup = $this->_backupModelFactory->create(
$this->getRequest()->getParam('time'),
$this->getRequest()->getParam('type')
);
if (!$backup->getTime() || !$backup->exists()) {
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
$resultRedirect->setPath('backup/*');
return $resultRedirect;
}
$fileName = $this->_objectManager->get(\Magento\Backup\Helper\Data::class)->generateBackupDownloadName($backup);
return $this->_fileFactory->create(
$fileName,
['type' => 'filename', 'value' => $backup->getPath() . DIRECTORY_SEPARATOR . $backup->getFileName()],
DirectoryList::VAR_DIR,
'application/octet-stream',
$backup->getSize()
);
}
}