Download.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Backup\Controller\Adminhtml\Index;
  8. use Magento\Framework\App\Filesystem\DirectoryList;
  9. class Download extends \Magento\Backup\Controller\Adminhtml\Index
  10. {
  11. /**
  12. * @var \Magento\Framework\Controller\Result\RawFactory
  13. */
  14. protected $resultRawFactory;
  15. /**
  16. * @param \Magento\Backend\App\Action\Context $context
  17. * @param \Magento\Framework\Registry $coreRegistry
  18. * @param \Magento\Framework\Backup\Factory $backupFactory
  19. * @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
  20. * @param \Magento\Backup\Model\BackupFactory $backupModelFactory
  21. * @param \Magento\Framework\App\MaintenanceMode $maintenanceMode
  22. * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
  23. */
  24. public function __construct(
  25. \Magento\Backend\App\Action\Context $context,
  26. \Magento\Framework\Registry $coreRegistry,
  27. \Magento\Framework\Backup\Factory $backupFactory,
  28. \Magento\Framework\App\Response\Http\FileFactory $fileFactory,
  29. \Magento\Backup\Model\BackupFactory $backupModelFactory,
  30. \Magento\Framework\App\MaintenanceMode $maintenanceMode,
  31. \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
  32. ) {
  33. parent::__construct(
  34. $context,
  35. $coreRegistry,
  36. $backupFactory,
  37. $fileFactory,
  38. $backupModelFactory,
  39. $maintenanceMode
  40. );
  41. $this->resultRawFactory = $resultRawFactory;
  42. }
  43. /**
  44. * Download backup action
  45. *
  46. * @return void|\Magento\Backend\App\Action
  47. */
  48. public function execute()
  49. {
  50. /* @var $backup \Magento\Backup\Model\Backup */
  51. $backup = $this->_backupModelFactory->create(
  52. $this->getRequest()->getParam('time'),
  53. $this->getRequest()->getParam('type')
  54. );
  55. if (!$backup->getTime() || !$backup->exists()) {
  56. /** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
  57. $resultRedirect = $this->resultRedirectFactory->create();
  58. $resultRedirect->setPath('backup/*');
  59. return $resultRedirect;
  60. }
  61. $fileName = $this->_objectManager->get(\Magento\Backup\Helper\Data::class)->generateBackupDownloadName($backup);
  62. $this->_fileFactory->create(
  63. $fileName,
  64. null,
  65. DirectoryList::VAR_DIR,
  66. 'application/octet-stream',
  67. $backup->getSize()
  68. );
  69. /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
  70. $resultRaw = $this->resultRawFactory->create();
  71. $resultRaw->setContents($backup->output());
  72. return $resultRaw;
  73. }
  74. }