src/FlexApp/EventSubscriber/PortalThemeSetterSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. namespace FlexApp\EventSubscriber;
  3. use FlexApp\Events\PortalThemeEvent;
  4. use FlexApp\Interfaces\CanSetThemeUnidByLocaleInterface;
  5. use FlexApp\Interfaces\CanSetThemeUnidInterface;
  6. use FlexApp\Service\EntitySaver;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class PortalThemeSetterSubscriber implements EventSubscriberInterface
  9. {
  10.     private EntitySaver $entitySaver;
  11.     /**
  12.      * PortalThemeSetterSubscriber constructor.
  13.      *
  14.      * @param \FlexApp\Service\EntitySaver $entitySaver
  15.      */
  16.     public function __construct(EntitySaver $entitySaver)
  17.     {
  18.         $this->entitySaver $entitySaver;
  19.     }
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             PortalThemeEvent::class => [
  24.                 ['setThemeUnid'0],
  25.             ],
  26.         ];
  27.     }
  28.     public function setThemeUnid(PortalThemeEvent $event)
  29.     {
  30.         $entity $event->getEntity();
  31.         $locale $event->getLocale();
  32.         $themeUnid $event->getThemeUnid();
  33.         if ($entity instanceof CanSetThemeUnidInterface) {
  34.             $entity->setUnid($themeUnid);
  35.         } elseif ($entity instanceof CanSetThemeUnidByLocaleInterface) {
  36.             $entity->setThemeUnidByLocale($themeUnid$locale);
  37.         }
  38.         $this->entitySaver->save($entity);
  39.     }
  40. }