* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Adapter\Manufacturer\CommandHandler; use ImageType; use PrestaShop\PrestaShop\Adapter\ServiceLocator; use PrestaShop\PrestaShop\Core\Domain\Manufacturer\Command\DeleteManufacturerLogoImageCommand; use PrestaShop\PrestaShop\Core\Domain\Manufacturer\CommandHandler\DeleteManufacturerLogoImageHandlerInterface; use PrestaShop\PrestaShop\Core\Image\ImageFormatConfiguration; use Symfony\Component\Filesystem\Filesystem; /** * Handles command which deletes manufacturer cover image using legacy object model */ class DeleteManufacturerLogoImageHandler extends AbstractManufacturerCommandHandler implements DeleteManufacturerLogoImageHandlerInterface { /** * @var string */ protected $imageDir; /** * @var string */ protected $tmpImageDir; public function __construct(string $imageDir, string $tmpImageDir) { $this->imageDir = $imageDir; $this->tmpImageDir = $tmpImageDir; } /** * {@inheritdoc} */ public function handle(DeleteManufacturerLogoImageCommand $command): void { $fs = new Filesystem(); $imageTypes = ImageType::getImagesTypes('manufacturers'); // Get image formats we will be deleting. It would probably be easier to use ImageFormatConfiguration::SUPPORTED_FORMATS, // but we want to avoid any behavior change in minor/patch version. $configuredImageFormats = ServiceLocator::get(ImageFormatConfiguration::class)->getGenerationFormats(); foreach ($imageTypes as $imageType) { foreach ($configuredImageFormats as $imageFormat) { $path = sprintf( '%s%s-%s.' . $imageFormat, $this->imageDir, $command->getManufacturerId()->getValue(), stripslashes($imageType['name']) ); if ($fs->exists($path)) { $fs->remove($path); } $path = sprintf( '%s%s-%s2x.' . $imageFormat, $this->imageDir, $command->getManufacturerId()->getValue(), stripslashes($imageType['name']) ); if ($fs->exists($path)) { $fs->remove($path); } } } $imagePath = sprintf( '%s%s.jpg', $this->imageDir, $command->getManufacturerId()->getValue() ); if ($fs->exists($imagePath)) { $fs->remove($imagePath); } // Delete tmp image $imgTmpPath = sprintf( '%smanufacturer_%s.jpg', $this->tmpImageDir, $command->getManufacturerId()->getValue() ); if ($fs->exists($imgTmpPath)) { $fs->remove($imgTmpPath); } // Delete tmp image mini $imgMiniTmpPath = sprintf( '%smanufacturer_mini_%s.jpg', $this->tmpImageDir, $command->getManufacturerId()->getValue() ); if ($fs->exists($imgMiniTmpPath)) { $fs->remove($imgMiniTmpPath); } } }