vendor/activepublishing/bundle-agence3p/EventSubscriber/A3ProductSubscriber.php line 29

Open in your IDE?
  1. <?php
  2. namespace Agence3pBundle\EventSubscriber;
  3. use Pimcore\Event\DataObjectEvents;
  4. use Pimcore\Event\Model\DataObjectEvent;
  5. use Pimcore\Model\DataObject;
  6. class A3ProductSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
  7. {
  8.     private const TYPE_VARIANT 'variant';
  9.     private const TYPE_OBJECT =  'object';
  10.     /**
  11.      * @inheritDoc
  12.      */
  13.     public static function getSubscribedEvents()
  14.     {
  15.         return [
  16.             DataObjectEvents::PRE_ADD => ['onPreAdd',11],
  17.             DataObjectEvents::PRE_UPDATE => ['onPreUpdate',11]
  18.         ];
  19.     }
  20.     /**
  21.      * @param DataObjectEvent $event
  22.      * @return void
  23.      */
  24.     public function onPreAdd(DataObjectEvent $event) : void {
  25.         $object $event->getObject();
  26.         if ($object instanceof DataObject\A3pProduct) {
  27.             $this->setTypeObject($object);
  28.         }
  29.     }
  30.     /**
  31.      * @param DataObjectEvent $event
  32.      * @return void
  33.      */
  34.     public function onPreUpdate(DataObjectEvent $event) : void {
  35.         $object $event->getObject();
  36.         if ($object instanceof DataObject\A3pProduct) {
  37.             $this->setTypeObject($object);
  38.         }
  39.     }
  40.     /**
  41.      * @param DataObject\A3pProduct $object
  42.      * @return void
  43.      */
  44.     private function setTypeObject(DataObject\A3pProduct $object) : void {
  45.         $type $object->getType();
  46.         if (in_array($type,[self::TYPE_OBJECT,self::TYPE_VARIANT])) {
  47.             $object->setTypeObject($type);
  48.         }
  49.     }
  50. }