DeleteFiles.php 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Cms\Controller\Adminhtml\Wysiwyg\Images;
  7. use Magento\Framework\App\Filesystem\DirectoryList;
  8. use Magento\Framework\App\Action\HttpPostActionInterface;
  9. /**
  10. * Delete image files.
  11. */
  12. class DeleteFiles extends \Magento\Cms\Controller\Adminhtml\Wysiwyg\Images implements HttpPostActionInterface
  13. {
  14. /**
  15. * @var \Magento\Framework\Controller\Result\JsonFactory
  16. */
  17. protected $resultJsonFactory;
  18. /**
  19. * @var \Magento\Framework\Controller\Result\RawFactory
  20. */
  21. protected $resultRawFactory;
  22. /**
  23. * @var \Magento\Framework\App\Filesystem\DirectoryResolver
  24. */
  25. private $directoryResolver;
  26. /**
  27. * Constructor
  28. *
  29. * @param \Magento\Backend\App\Action\Context $context
  30. * @param \Magento\Framework\Registry $coreRegistry
  31. * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
  32. * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory
  33. * @param \Magento\Framework\App\Filesystem\DirectoryResolver|null $directoryResolver
  34. */
  35. public function __construct(
  36. \Magento\Backend\App\Action\Context $context,
  37. \Magento\Framework\Registry $coreRegistry,
  38. \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory,
  39. \Magento\Framework\Controller\Result\RawFactory $resultRawFactory,
  40. \Magento\Framework\App\Filesystem\DirectoryResolver $directoryResolver = null
  41. ) {
  42. parent::__construct($context, $coreRegistry);
  43. $this->resultRawFactory = $resultRawFactory;
  44. $this->resultJsonFactory = $resultJsonFactory;
  45. $this->directoryResolver = $directoryResolver
  46. ?: $this->_objectManager->get(\Magento\Framework\App\Filesystem\DirectoryResolver::class);
  47. }
  48. /**
  49. * Delete file from media storage.
  50. *
  51. * @return \Magento\Framework\Controller\ResultInterface
  52. * @throws \Magento\Framework\Exception\LocalizedException
  53. */
  54. public function execute()
  55. {
  56. try {
  57. if (!$this->getRequest()->isPost()) {
  58. throw new \Exception('Wrong request.');
  59. }
  60. $files = $this->getRequest()->getParam('files');
  61. /** @var $helper \Magento\Cms\Helper\Wysiwyg\Images */
  62. $helper = $this->_objectManager->get(\Magento\Cms\Helper\Wysiwyg\Images::class);
  63. $path = $this->getStorage()->getSession()->getCurrentPath();
  64. if (!$this->directoryResolver->validatePath($path, DirectoryList::MEDIA)) {
  65. throw new \Magento\Framework\Exception\LocalizedException(
  66. __('Directory %1 is not under storage root path.', $path)
  67. );
  68. }
  69. foreach ($files as $file) {
  70. $file = $helper->idDecode($file);
  71. /** @var \Magento\Framework\Filesystem $filesystem */
  72. $filesystem = $this->_objectManager->get(\Magento\Framework\Filesystem::class);
  73. $dir = $filesystem->getDirectoryRead(DirectoryList::MEDIA);
  74. $filePath = $path . '/' . \Magento\Framework\File\Uploader::getCorrectFileName($file);
  75. if ($dir->isFile($dir->getRelativePath($filePath)) && !preg_match('#.htaccess#', $file)) {
  76. $this->getStorage()->deleteFile($filePath);
  77. }
  78. }
  79. return $this->resultRawFactory->create();
  80. } catch (\Exception $e) {
  81. $result = ['error' => true, 'message' => $e->getMessage()];
  82. /** @var \Magento\Framework\Controller\Result\Json $resultJson */
  83. $resultJson = $this->resultJsonFactory->create();
  84. return $resultJson->setData($result);
  85. }
  86. }
  87. }