<?phpdeclare(strict_types=1);namespace App\Cloud\Image\EventSubscriber;use App\Cloud\Image\Service\ProxyService;use Pimcore\Event\DataObjectEvents;use Pimcore\Event\Model\ElementEventInterface;use Pimcore\Model\DataObject\ImageFilter;use Symfony\Component\EventDispatcher\EventSubscriberInterface;/** * Обработчики при сохранении объекта Photo */class DataObjectSubscriber implements EventSubscriberInterface{ /** * @param ProxyService $imageProxyService */ public function __construct( protected ProxyService $imageProxyService, ) { } /** * @return string[] */ public static function getSubscribedEvents() { return [ DataObjectEvents::POST_ADD => 'onPostAdd', DataObjectEvents::POST_UPDATE => 'onPostUpdate', ]; } /** * @param ElementEventInterface $e * @return void * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function onPostAdd(ElementEventInterface $e) { $object = $e->getElement(); if (method_exists($object, 'getImageFilterLink') && $asset = $object->getImage()) { $oldLink = $object->getImageFilterLink(); if (!$oldLink) { $newLink = $this->imageProxyService->resolveUrl( $asset->getFullPath() ); $object->setImageFilterLink($newLink); $object->save(); } } if (method_exists($object, 'getBackImageFilterLink') && $asset = $object->getBackImage()) { $oldLink = $object->getBackImageFilterLink(); if (!$oldLink) { $newLink = $this->imageProxyService->resolveUrl( $asset->getFullPath() ); $object->setBackImageFilterLink($newLink); $object->save(); } } } /** * @param ElementEventInterface $e * @return void * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface */ public function onPostUpdate(ElementEventInterface $e) { $object = $e->getElement(); if (method_exists($object, 'getImageFilterLink') && $asset = $object->getImage()) { $oldLink = $object->getImageFilterLink(); $proxyParams = []; if ($rotate = $object->getRotate()) { $proxyParams['rotate'] = $rotate; } /*$filters = $object->getImageFilter(); foreach ($filters as $filter) { $imageFilter = ImageFilter::getById($filter->getObjectId()); $filterData = $filter->getData(); if (isset($filterData['filterValue'])) { $proxyParams[$imageFilter->getKey()] = $filterData['filterValue']; } }*/ $newLink = $this->imageProxyService->resolveUrl( $asset->getFullPath(), $proxyParams ); if ($oldLink !== $newLink) { $object->setImageFilterLink($newLink); $object->save(); } } if (method_exists($object, 'getBackImageFilterLink') && $asset = $object->getBackImage()) { $oldLink = $object->getBackImageFilterLink(); $proxyParams = []; if ($rotate = $object->getBackRotate()) { $proxyParams['rotate'] = $rotate; } /*$filters = $object->getBackImageFilter(); foreach ($filters as $filter) { $imageFilter = ImageFilter::getById($filter->getObjectId()); $filterData = $filter->getData(); if (isset($filterData['filterValue'])) { $proxyParams[$imageFilter->getKey()] = $filterData['filterValue']; } }*/ $newLink = $this->imageProxyService->resolveUrl( $asset->getFullPath(), $proxyParams ); if ($oldLink !== $newLink) { $object->setBackImageFilterLink($newLink); $object->save(); } } }}