src/Package/Block/Tools/ParentEntityUpdateSubscriber/ParentEntityUpdateSubscriber.php line 40

Open in your IDE?
  1. <?php
  2. namespace App\Package\Block\Tools\ParentEntityUpdateSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use App\Package\Admin\Main\Event\EntityUpdateEvent;
  5. /**
  6.  * ParentEntityUpdateSubscriber
  7.  * 
  8.  * Subscriber which listens for parent entity update event (created or updated)
  9.  * - if parent entity has blocks then call dispatchEntityUpdateEvent 
  10.  *   for each one of blocks
  11.  * 
  12.  * @author     Daniel Balowski <d.balowski@openform.pl> (_creator)
  13.  * @copyright  Openform
  14.  * @since      03.2019
  15.  */
  16. class ParentEntityUpdateSubscriber implements EventSubscriberInterface
  17. {
  18.     /**
  19.      * @return array
  20.      */
  21.     public static function getSubscribedEvents() : array
  22.     {
  23.         return [
  24.             EntityUpdateEvent::NAME => [
  25.                 [ 'onEntityUpdate'600 ],
  26.             ]
  27.         ];
  28.     }
  29.     /**
  30.      * On entity update event
  31.      *
  32.      * @param EntityUpdateEvent  $event
  33.      * 
  34.      * @return void
  35.      */
  36.     public function onEntityUpdate(EntityUpdateEvent $event) : void
  37.     {
  38.         $updatedEntity $event->getUpdatedEntity();
  39.         if (! method_exists($updatedEntity'getBlock')) {
  40.             return;
  41.         }
  42.         foreach($updatedEntity->getBlock() as $block) {
  43.             if (! method_exists($block'dispatchEntityUpdateEvent')) {
  44.                 continue;
  45.             }
  46.             $block->dispatchEntityUpdateEvent();
  47.         }
  48.         return;
  49.     }
  50. }