<?php
namespace App\Profile\EventSubscriber;
use App\Profile\Model\Profile;
use App\Profile\Service\ProfileColorNormalizer;
use Pimcore\Event\DataObjectEvents;
use Pimcore\Event\Model\DataObjectEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ProfileColorSubscriber implements EventSubscriberInterface
{
public function __construct(protected ProfileColorNormalizer $colorNormalizer)
{
}
public static function getSubscribedEvents()
{
return [
DataObjectEvents::PRE_UPDATE => 'onDataObjectPreUpdate',
];
}
public function onDataObjectPreUpdate(DataObjectEvent $event)
{
$object = $event->getObject();
$className = (new \ReflectionClass($object))->getShortName();
if (!in_array($className, ['Profile'])) {
return;
}
/**
* @var Profile
*/
$profile = $object;
$normalizedColor = $this->colorNormalizer->normalize($profile->getColor());
$profile->setColor($normalizedColor);
}
}