vendor/nellapp/sdk-bundle/src/Export/AutoExport/EventSubscriber/TerminateExportSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace Nellapp\Bundle\SDKBundle\Export\AutoExport\EventSubscriber;
  3. use Nellapp\Bundle\SDKBundle\Export\AutoExport\Resolvers\ExportTerminateResolverManager;
  4. use Nellapp\Bundle\SDKBundle\Export\AutoExport\AutoExportTerminateTracker;
  5. use Symfony\Component\Console\ConsoleEvents;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpKernel\Event\TerminateEvent;
  8. use Symfony\Component\Console\Event\ConsoleTerminateEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Symfony\Contracts\EventDispatcher\Event;
  11. class TerminateExportSubscriber implements EventSubscriberInterface
  12. {
  13.     public function __construct(
  14.         private AutoExportTerminateTracker     $terminateTracker,
  15.         private ExportTerminateResolverManager $exportTerminateResolverManager,
  16.     )
  17.     {
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             KernelEvents::TERMINATE => 'exportTracked',
  23.             ConsoleEvents::TERMINATE => 'exportTracked',
  24.         ];
  25.     }
  26.     public function exportTracked(Event $event): void
  27.     {
  28.         if (!$event instanceof TerminateEvent && !$event instanceof ConsoleTerminateEvent) {
  29.             return;
  30.         }
  31.         foreach ($this->terminateTracker->getTrackedEntities() as $resolverClass => $entityIds) {
  32.             $exportTerminateResolver $this->exportTerminateResolverManager->getExportTerminateResolverByClass($resolverClass);
  33.             if ($exportTerminateResolver === null) {
  34.                 continue;
  35.             }
  36.             $exportTerminateResolver->exportTracked($entityIds);
  37.         }
  38.     }
  39. }