src/EventDispatcher/ChangeLogSubscribe.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\EventDispatcher;
  3. use App\Entity\Main\ChangeLog;
  4. use App\Entity\Main\ChangeLogField;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class ChangeLogSubscribe implements EventSubscriberInterface
  8. {
  9.     private $em;
  10.     public function __construct(EntityManagerInterface $em)
  11.     {
  12.         $this->em $em;
  13.     }
  14.     public static function getSubscribedEvents(): array
  15.     {
  16.         return [
  17.             ChangeLogEvent::class => 'onChangeLogging'
  18.         ];
  19.     }
  20.     public function onChangeLogging(ChangeLogEvent $event)
  21.     {
  22.         $change_log = new ChangeLog();
  23.         $change_log->setSectionTitle($event->getSectionTitle());
  24.         $change_log->setProjectId($event->getProject());
  25.         $change_log->setIp($event->getIp());
  26.         $change_log->setUserAgent($event->getUserAgent());
  27.         $change_log->setChangeData($event->getChangeData());
  28.         $change_log->setUserId($event->getUser());
  29.         $change_log->setChangeDate(new \DateTime());
  30.         $change_log->setRevertedDate($event->getRevertedDate());
  31.         foreach ($change_log->getChangeData() as $key => $value) {
  32.             $change_log_field = new ChangeLogField();
  33.             $change_log_field->setAttribute($key);
  34.             $change_log_field->setTitle($value['field_name']);
  35.             $change_log->addChangeLogField($change_log_field);
  36.             $change_log_field->setProject($event->getProject());
  37.         }
  38.         $this->em->persist($change_log);
  39.         $this->em->flush();
  40.     }
  41. }