src/Cloud/Image/EventSubscriber/DataObjectSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Cloud\Image\EventSubscriber;
  4. use App\Cloud\Image\Service\ProxyService;
  5. use Pimcore\Event\DataObjectEvents;
  6. use Pimcore\Event\Model\ElementEventInterface;
  7. use Pimcore\Model\DataObject\ImageFilter;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. /**
  10.  * Обработчики при сохранении объекта Photo
  11.  */
  12. class DataObjectSubscriber implements EventSubscriberInterface
  13. {
  14.     /**
  15.      * @param ProxyService $imageProxyService
  16.      */
  17.     public function __construct(
  18.         protected ProxyService $imageProxyService,
  19.     ) {
  20.     }
  21.     /**
  22.      * @return string[]
  23.      */
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             DataObjectEvents::POST_ADD => 'onPostAdd',
  28.             DataObjectEvents::POST_UPDATE => 'onPostUpdate',
  29.         ];
  30.     }
  31.     /**
  32.      * @param ElementEventInterface $e
  33.      * @return void
  34.      * @throws \Psr\Container\ContainerExceptionInterface
  35.      * @throws \Psr\Container\NotFoundExceptionInterface
  36.      */
  37.     public function onPostAdd(ElementEventInterface $e)
  38.     {
  39.         $object $e->getElement();
  40.         if (method_exists($object'getImageFilterLink') && $asset $object->getImage()) {
  41.             $oldLink $object->getImageFilterLink();
  42.             if (!$oldLink) {
  43.                 $newLink $this->imageProxyService->resolveUrl(
  44.                     $asset->getFullPath()
  45.                 );
  46.                 $object->setImageFilterLink($newLink);
  47.                 $object->save();
  48.             }
  49.         }
  50.         if (method_exists($object'getBackImageFilterLink') && $asset $object->getBackImage()) {
  51.             $oldLink $object->getBackImageFilterLink();
  52.             if (!$oldLink) {
  53.                 $newLink $this->imageProxyService->resolveUrl(
  54.                     $asset->getFullPath()
  55.                 );
  56.                 $object->setBackImageFilterLink($newLink);
  57.                 $object->save();
  58.             }
  59.         }
  60.     }
  61.     /**
  62.      * @param ElementEventInterface $e
  63.      * @return void
  64.      * @throws \Psr\Container\ContainerExceptionInterface
  65.      * @throws \Psr\Container\NotFoundExceptionInterface
  66.      */
  67.     public function onPostUpdate(ElementEventInterface $e)
  68.     {
  69.         $object $e->getElement();
  70.         if (method_exists($object'getImageFilterLink') && $asset $object->getImage()) {
  71.             $oldLink $object->getImageFilterLink();
  72.             $proxyParams = [];
  73.             if ($rotate $object->getRotate()) {
  74.                 $proxyParams['rotate'] = $rotate;
  75.             }
  76.             /*$filters = $object->getImageFilter();
  77.             foreach ($filters as $filter) {
  78.                 $imageFilter = ImageFilter::getById($filter->getObjectId());
  79.                 $filterData = $filter->getData();
  80.                 if (isset($filterData['filterValue'])) {
  81.                     $proxyParams[$imageFilter->getKey()] = $filterData['filterValue'];
  82.                 }
  83.             }*/
  84.             $newLink $this->imageProxyService->resolveUrl(
  85.                 $asset->getFullPath(),
  86.                 $proxyParams
  87.             );
  88.             if ($oldLink !== $newLink) {
  89.                 $object->setImageFilterLink($newLink);
  90.                 $object->save();
  91.             }
  92.         }
  93.         if (method_exists($object'getBackImageFilterLink') && $asset $object->getBackImage()) {
  94.             $oldLink $object->getBackImageFilterLink();
  95.             $proxyParams = [];
  96.             if ($rotate $object->getBackRotate()) {
  97.                 $proxyParams['rotate'] = $rotate;
  98.             }
  99.             /*$filters = $object->getBackImageFilter();
  100.             foreach ($filters as $filter) {
  101.                 $imageFilter = ImageFilter::getById($filter->getObjectId());
  102.                 $filterData = $filter->getData();
  103.                 if (isset($filterData['filterValue'])) {
  104.                     $proxyParams[$imageFilter->getKey()] = $filterData['filterValue'];
  105.                 }
  106.             }*/
  107.             $newLink $this->imageProxyService->resolveUrl(
  108.                 $asset->getFullPath(),
  109.                 $proxyParams
  110.             );
  111.             if ($oldLink !== $newLink) {
  112.                 $object->setBackImageFilterLink($newLink);
  113.                 $object->save();
  114.             }
  115.         }
  116.     }
  117. }