![]() 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-metadata/Model/File/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\MediaGalleryMetadata\Model\File; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Exception\ValidatorException; use Magento\MediaGalleryMetadataApi\Api\AddMetadataInterface; use Magento\MediaGalleryMetadataApi\Api\Data\MetadataInterface; use Magento\MediaGalleryMetadataApi\Model\FileInterface; use Magento\MediaGalleryMetadataApi\Model\FileInterfaceFactory; use Magento\MediaGalleryMetadataApi\Model\ReadFileInterface; use Magento\MediaGalleryMetadataApi\Model\WriteFileInterface; use Magento\MediaGalleryMetadataApi\Model\WriteMetadataInterface; /** * Add metadata to the asset by path. Should be used as a virtual type with a file type specific configuration */ class AddMetadata implements AddMetadataInterface { /** * @var array */ private $segmentWriters; /** * @var FileInterfaceFactory */ private $fileFactory; /** * @var ReadFileInterface */ private $fileReader; /** * @var WriteFileInterface */ private $fileWriter; /** * @param FileInterfaceFactory $fileFactory * @param ReadFileInterface $fileReader * @param WriteFileInterface $fileWriter * @param array $segmentWriters */ public function __construct( FileInterfaceFactory $fileFactory, ReadFileInterface $fileReader, WriteFileInterface $fileWriter, array $segmentWriters ) { $this->fileFactory = $fileFactory; $this->fileReader = $fileReader; $this->fileWriter = $fileWriter; $this->segmentWriters = $segmentWriters; } /** * @inheritdoc */ public function execute(string $path, MetadataInterface $metadata): void { try { $file = $this->fileReader->execute($path); } catch (ValidatorException $e) { return; } catch (\Exception $exception) { throw new LocalizedException( __('Could not parse the image file for metadata: %path', ['path' => $path]) ); } try { $this->fileWriter->execute($this->writeMetadata($file, $metadata)); } catch (\Exception $exception) { throw new LocalizedException( __('Could not update the image file metadata: %path', ['path' => $path]) ); } } /** * Write metadata by given metadata writer * * @param FileInterface $file * @param MetadataInterface $metadata */ private function writeMetadata(FileInterface $file, MetadataInterface $metadata): FileInterface { foreach ($this->segmentWriters as $writer) { if (!$writer instanceof WriteMetadataInterface) { throw new \InvalidArgumentException( __(get_class($writer) . ' must implement ' . WriteFileInterface::class) ); } $file = $writer->execute($file, $metadata); } return $file; } }