![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-media-gallery-ui/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\MediaGalleryUi\Model; use Magento\Cms\Model\Wysiwyg\Images\Storage; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Filesystem; use Magento\MediaGalleryApi\Api\Data\AssetInterface; use Magento\MediaGalleryApi\Api\IsPathExcludedInterface; /** * Delete image from a storage */ class DeleteImage { /** * @var Storage */ private $imagesStorage; /** * @var IsPathExcludedInterface */ private $isPathExcluded; /** * @var Filesystem */ private $filesystem; /** * DeleteImage constructor. * * @param Storage $imagesStorage * @param Filesystem $filesystem * @param IsPathExcludedInterface $isPathExcluded */ public function __construct( Storage $imagesStorage, Filesystem $filesystem, IsPathExcludedInterface $isPathExcluded ) { $this->imagesStorage = $imagesStorage; $this->filesystem = $filesystem; $this->isPathExcluded = $isPathExcluded; } /** * Delete asset image physically from file storage and from data storage. * * @param AssetInterface[] $assets * @throws LocalizedException */ public function execute(array $assets): void { $failedAssets = []; foreach ($assets as $asset) { if ($this->isPathExcluded->execute($asset->getPath())) { $failedAssets[] = $asset->getPath(); } $mediaDirectory = $this->filesystem->getDirectoryRead(DirectoryList::MEDIA); $absolutePath = $mediaDirectory->getAbsolutePath($asset->getPath()); $this->imagesStorage->deleteFile($absolutePath); } if (!empty($failedAssets)) { throw new LocalizedException( __( 'Could not delete "%image": destination directory is restricted.', ['image' => implode(",", $failedAssets)] ) ); } } }