vendor/dachcom-digital/dynamic-search/src/DynamicSearchBundle/EventSubscriber/ErrorEventSubscriber.php line 46

Open in your IDE?
  1. <?php
  2. namespace DynamicSearchBundle\EventSubscriber;
  3. use DynamicSearchBundle\DynamicSearchEvents;
  4. use DynamicSearchBundle\Event\ErrorEvent;
  5. use DynamicSearchBundle\Exception\ProcessCancelledException;
  6. use DynamicSearchBundle\Exception\RuntimeException;
  7. use DynamicSearchBundle\Logger\LoggerInterface;
  8. use DynamicSearchBundle\Manager\IndexManagerInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class ErrorEventSubscriber implements EventSubscriberInterface
  11. {
  12.     protected bool $dispatched;
  13.     protected LoggerInterface $logger;
  14.     protected IndexManagerInterface $indexManager;
  15.     public function __construct(LoggerInterface $logger)
  16.     {
  17.         $this->dispatched false;
  18.         $this->logger $logger;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             DynamicSearchEvents::ERROR_DISPATCH_ABORT    => ['onAbort'],
  24.             DynamicSearchEvents::ERROR_DISPATCH_CRITICAL => ['onCritical'],
  25.         ];
  26.     }
  27.     /**
  28.      * @throws ProcessCancelledException
  29.      */
  30.     public function onAbort(ErrorEvent $event): void
  31.     {
  32.         $this->logger->error($event->getMessage(), $event->getProviderName(), $event->getContextName());
  33.         throw new ProcessCancelledException($event->getMessage());
  34.     }
  35.     /**
  36.      * @throws RuntimeException
  37.      */
  38.     public function onCritical(ErrorEvent $event): void
  39.     {
  40.         if ($this->dispatched === true) {
  41.             return;
  42.         }
  43.         $this->logger->error($event->getMessage(), $event->getProviderName(), $event->getContextName());
  44.         throw new RuntimeException($event->getMessage());
  45.     }
  46. }