Directive.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. /**
  3. *
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. namespace Magento\Cms\Controller\Adminhtml\Wysiwyg;
  8. use Magento\Backend\App\Action;
  9. class Directive extends \Magento\Backend\App\Action
  10. {
  11. /**
  12. * Authorization level of a basic admin session
  13. *
  14. * @see _isAllowed()
  15. */
  16. const ADMIN_RESOURCE = 'Magento_Cms::media_gallery';
  17. /**
  18. * @var \Magento\Framework\Url\DecoderInterface
  19. */
  20. protected $urlDecoder;
  21. /**
  22. * @var \Magento\Framework\Controller\Result\RawFactory
  23. */
  24. protected $resultRawFactory;
  25. /**
  26. * @param Action\Context $context
  27. * @param \Magento\Framework\Url\DecoderInterface $urlDecoder
  28. * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
  29. */
  30. public function __construct(
  31. Action\Context $context,
  32. \Magento\Framework\Url\DecoderInterface $urlDecoder,
  33. \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
  34. ) {
  35. parent::__construct($context);
  36. $this->urlDecoder = $urlDecoder;
  37. $this->resultRawFactory = $resultRawFactory;
  38. }
  39. /**
  40. * Template directives callback
  41. *
  42. * @return \Magento\Framework\Controller\Result\Raw
  43. */
  44. public function execute()
  45. {
  46. $directive = $this->getRequest()->getParam('___directive');
  47. $directive = $this->urlDecoder->decode($directive);
  48. $imagePath = $this->_objectManager->create(\Magento\Cms\Model\Template\Filter::class)->filter($directive);
  49. /** @var \Magento\Framework\Image\Adapter\AdapterInterface $image */
  50. $image = $this->_objectManager->get(\Magento\Framework\Image\AdapterFactory::class)->create();
  51. /** @var \Magento\Framework\Controller\Result\Raw $resultRaw */
  52. $resultRaw = $this->resultRawFactory->create();
  53. try {
  54. $image->open($imagePath);
  55. $resultRaw->setHeader('Content-Type', $image->getMimeType());
  56. $resultRaw->setContents($image->getImage());
  57. } catch (\Exception $e) {
  58. $imagePath = $this->_objectManager->get(
  59. \Magento\Cms\Model\Wysiwyg\Config::class
  60. )->getSkinImagePlaceholderPath();
  61. $image->open($imagePath);
  62. $resultRaw->setHeader('Content-Type', $image->getMimeType());
  63. $resultRaw->setContents($image->getImage());
  64. $this->_objectManager->get(\Psr\Log\LoggerInterface::class)->critical($e);
  65. }
  66. return $resultRaw;
  67. }
  68. }