<?php
namespace FlexApp\EventSubscriber;
use FlexApp\Events\PortalThemeEvent;
use FlexApp\Interfaces\CanSetThemeUnidByLocaleInterface;
use FlexApp\Interfaces\CanSetThemeUnidInterface;
use FlexApp\Service\EntitySaver;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class PortalThemeSetterSubscriber implements EventSubscriberInterface
{
private EntitySaver $entitySaver;
/**
* PortalThemeSetterSubscriber constructor.
*
* @param \FlexApp\Service\EntitySaver $entitySaver
*/
public function __construct(EntitySaver $entitySaver)
{
$this->entitySaver = $entitySaver;
}
public static function getSubscribedEvents()
{
return [
PortalThemeEvent::class => [
['setThemeUnid', 0],
],
];
}
public function setThemeUnid(PortalThemeEvent $event)
{
$entity = $event->getEntity();
$locale = $event->getLocale();
$themeUnid = $event->getThemeUnid();
if ($entity instanceof CanSetThemeUnidInterface) {
$entity->setUnid($themeUnid);
} elseif ($entity instanceof CanSetThemeUnidByLocaleInterface) {
$entity->setThemeUnidByLocale($themeUnid, $locale);
}
$this->entitySaver->save($entity);
}
}