<?php
namespace App\EventSubscriber;
use App\Interfaces\UniqueElementInterface;
use Pimcore\Event\DataObjectEvents;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject\Fieldcollection;
use Pimcore\Model\DataObject\QuizQuestion;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class QuestionSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
DataObjectEvents::PRE_UPDATE => 'onPreUpdate',
];
}
/**
* @param DataObjectEvent $event
*/
public function onPreUpdate(DataObjectEvent $event)
{
$question = $event->getObject();
if (!$question instanceof QuizQuestion) {
return;
}
$answers = $question->getAnwsers() ?? new Fieldcollection();
$dataModified = false;
foreach ($answers->getItems() as $answer) {
if ($answer instanceof UniqueElementInterface) {
if (empty($answer->getUniqueId())) {
$answer->setUniqueId(uniqid());
$dataModified = true;
}
}
if ($dataModified == true) {
$question->setAnwsers($answers);
}
}
}
}