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. }