src/Migration/EventSubscriber/MigrationEventSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Migration\EventSubscriber;
  3. use App\Migration\Console\MigrationConsoleDisplayInterface;
  4. use App\Migration\Event\MigrationEvents;
  5. use App\Migration\Event\MigrationExceptionEvent;
  6. use App\Migration\Event\MigrationInformationEvent;
  7. use App\Migration\Event\MigrationWarningEvent;
  8. use App\Migration\Helper\MigrationEmailSenderInterface;
  9. use App\Migration\Manager\Level_0\MigrationLogManagerInterface;
  10. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  11. use Symfony\Component\HttpKernel\KernelInterface;
  12. use Symfony\Contracts\EventDispatcher\Event;
  13. class MigrationEventSubscriber implements EventSubscriberInterface
  14. {
  15.     protected KernelInterface $kernel;
  16.     protected MigrationConsoleDisplayInterface $migrationConsoleDisplay;
  17.     protected MigrationLogManagerInterface $migrationLogManager;
  18.     protected MigrationEmailSenderInterface $migrationEmailSender;
  19.     public function __construct(KernelInterface $kernel,
  20.                                 MigrationConsoleDisplayInterface $migrationConsoleDisplay,
  21.                                 MigrationLogManagerInterface $migrationLogManager,
  22.                                 MigrationEmailSenderInterface $migrationEmailSender)
  23.     {
  24.         $this->kernel $kernel;
  25.         $this->migrationConsoleDisplay $migrationConsoleDisplay;
  26.         $this->migrationLogManager $migrationLogManager;
  27.         $this->migrationEmailSender $migrationEmailSender;
  28.     }
  29.     public static function getSubscribedEvents(): array
  30.     {
  31.         $events = [];
  32.         foreach (MigrationEvents::EVENTS as $event => $label) {
  33.             $events[$event] = [['handle'256]];
  34.         }
  35.         return $events;
  36.     }
  37.     public function handle(Event $event)
  38.     {
  39.         if ($event instanceof MigrationExceptionEvent) {
  40.             $this->handleException($event);
  41.         }
  42.         else if ($event instanceof MigrationWarningEvent) {
  43.             $this->handleWarning($event);
  44.         }
  45.         else if ($event instanceof MigrationInformationEvent) {
  46.             $this->handleInformation($event);
  47.         }
  48.     }
  49.     private function handleException(MigrationExceptionEvent $event)
  50.     {
  51.         if ($this->kernel->getEnvironment() === "dev" && $event->getException()->isConsoleDisplayed()) {
  52.             $this->migrationConsoleDisplay->displayException($event->getException());
  53.         }
  54.         if ($event->getException()->isDatabaseLogged()) {
  55.             $this->migrationLogManager->logException($event->getException());
  56.         }
  57.         if ($event->getException()->isEmailSend()) {
  58.             $this->migrationEmailSender->sendExceptionEmail($event->getException());
  59.         }
  60.     }
  61.     private function handleWarning(MigrationWarningEvent $event)
  62.     {
  63.         if ($this->kernel->getEnvironment() === "dev" && $event->getWarning()->isConsoleDisplayed()) {
  64.             $this->migrationConsoleDisplay->displayWarning($event->getWarning());
  65.         }
  66.         if ($event->getWarning()->isDatabaseLogged()) {
  67.             $this->migrationLogManager->logWarning($event->getWarning());
  68.         }
  69.         if ($event->getWarning()->isEmailSend()) {
  70.             $this->migrationEmailSender->sendWarningEmail($event->getWarning());
  71.         }
  72.     }
  73.     private function handleInformation(MigrationInformationEvent $event)
  74.     {
  75.         if ($this->kernel->getEnvironment() === "dev" && $event->getInformation()->isConsoleDisplayed()) {
  76.             $this->migrationConsoleDisplay->displayInformation($event->getInformation());
  77.         }
  78.         if ($event->getInformation()->isDatabaseLogged()) {
  79.             $this->migrationLogManager->logInformation($event->getInformation());
  80.         }
  81.         if ($event->getInformation()->isEmailSend()) {
  82.             $this->migrationEmailSender->sendInformationEmail($event->getInformation());
  83.         }
  84.     }
  85. }