GridToXml.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Ui\Controller\Adminhtml\Export;
  7. use Magento\Backend\App\Action;
  8. use Magento\Backend\App\Action\Context;
  9. use Magento\Ui\Model\Export\ConvertToXml;
  10. use Magento\Framework\App\Response\Http\FileFactory;
  11. use Magento\Framework\App\ObjectManager;
  12. use Magento\Ui\Component\MassAction\Filter;
  13. use Psr\Log\LoggerInterface;
  14. /**
  15. * Class Render
  16. */
  17. class GridToXml extends Action
  18. {
  19. /**
  20. * @var ConvertToXml
  21. */
  22. protected $converter;
  23. /**
  24. * @var FileFactory
  25. */
  26. protected $fileFactory;
  27. /**
  28. * @var Filter
  29. */
  30. private $filter;
  31. /**
  32. * @var LoggerInterface
  33. */
  34. private $logger;
  35. /**
  36. * @param Context $context
  37. * @param ConvertToXml $converter
  38. * @param FileFactory $fileFactory
  39. * @param Filter|null $filter
  40. * @param LoggerInterface|null $logger
  41. */
  42. public function __construct(
  43. Context $context,
  44. ConvertToXml $converter,
  45. FileFactory $fileFactory,
  46. Filter $filter = null,
  47. LoggerInterface $logger = null
  48. ) {
  49. parent::__construct($context);
  50. $this->converter = $converter;
  51. $this->fileFactory = $fileFactory;
  52. $this->filter = $filter ?: ObjectManager::getInstance()->get(Filter::class);
  53. $this->logger = $logger ?: ObjectManager::getInstance()->get(LoggerInterface::class);
  54. }
  55. /**
  56. * Export data provider to XML
  57. *
  58. * @throws \Magento\Framework\Exception\LocalizedException
  59. * @return \Magento\Framework\App\ResponseInterface
  60. */
  61. public function execute()
  62. {
  63. return $this->fileFactory->create('export.xml', $this->converter->getXmlFile(), 'var');
  64. }
  65. /**
  66. * Checking if the user has access to requested component.
  67. *
  68. * @inheritDoc
  69. */
  70. protected function _isAllowed()
  71. {
  72. if ($this->_request->getParam('namespace')) {
  73. try {
  74. $component = $this->filter->getComponent();
  75. $dataProviderConfig = $component->getContext()
  76. ->getDataProvider()
  77. ->getConfigData();
  78. if (isset($dataProviderConfig['aclResource'])) {
  79. return $this->_authorization->isAllowed(
  80. $dataProviderConfig['aclResource']
  81. );
  82. }
  83. } catch (\Throwable $exception) {
  84. $this->logger->critical($exception);
  85. return false;
  86. }
  87. }
  88. return true;
  89. }
  90. }