src/EventSubscriber/QuestionSubscriber.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Interfaces\UniqueElementInterface;
  4. use Pimcore\Event\DataObjectEvents;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Model\DataObject\Fieldcollection;
  7. use Pimcore\Model\DataObject\QuizQuestion;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class QuestionSubscriber implements EventSubscriberInterface
  10. {
  11.     public static function getSubscribedEvents()
  12.     {
  13.         return [
  14.             DataObjectEvents::PRE_UPDATE => 'onPreUpdate',
  15.         ];
  16.     }
  17.     /**
  18.      * @param DataObjectEvent $event
  19.      */
  20.     public function onPreUpdate(DataObjectEvent $event)
  21.     {
  22.         $question $event->getObject();
  23.         if (!$question instanceof QuizQuestion) {
  24.             return;
  25.         }
  26.         $answers $question->getAnwsers() ?? new Fieldcollection();
  27.         $dataModified false;
  28.         foreach ($answers->getItems() as $answer) {
  29.             if ($answer instanceof UniqueElementInterface) {
  30.                 if (empty($answer->getUniqueId())) {
  31.                     $answer->setUniqueId(uniqid());
  32.                     $dataModified true;
  33.                 }
  34.             }
  35.             if ($dataModified == true) {
  36.                 $question->setAnwsers($answers);
  37.             }
  38.         }
  39.     }
  40. }