vendor/ibexa/site-factory/src/lib/Event/EventDispatcher.php line 28

Open in your IDE?
  1. <?php
  2. /**
  3. * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4. * @license For full copyright and license information view LICENSE file distributed with this source code.
  5. */
  6. declare(strict_types=1);
  7. namespace Ibexa\SiteFactory\Event;
  8. use Symfony\Component\EventDispatcher\EventDispatcherInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. final class EventDispatcher implements EventDispatcherInterface
  11. {
  12. private EventDispatcherInterface $innerEventDispatcher;
  13. private array $classMap;
  14. public function __construct(EventDispatcherInterface $innerEventDispatcher)
  15. {
  16. $this->innerEventDispatcher = $innerEventDispatcher;
  17. $this->classMap = require __DIR__ . '/../../bundle/Resources/mappings/class-map.php';
  18. }
  19. public function dispatch(object $event, string $eventName = null): object
  20. {
  21. return $this->innerEventDispatcher->dispatch($event, $eventName);
  22. }
  23. public function addListener(string $eventName, $listener, int $priority = 0): void
  24. {
  25. $newEventName = $this->resolveEventName($eventName);
  26. if (null !== $newEventName) {
  27. $this->innerEventDispatcher->addListener($newEventName, $listener, $priority);
  28. }
  29. $this->innerEventDispatcher->addListener($eventName, $listener, $priority);
  30. }
  31. public function addSubscriber(EventSubscriberInterface $subscriber): void
  32. {
  33. $this->innerEventDispatcher->addSubscriber($subscriber);
  34. }
  35. public function removeListener(string $eventName, callable $listener): void
  36. {
  37. $newEventName = $this->resolveEventName($eventName);
  38. if (null !== $newEventName) {
  39. $this->innerEventDispatcher->removeListener($newEventName, $listener);
  40. }
  41. $this->innerEventDispatcher->removeListener($eventName, $listener);
  42. }
  43. public function removeSubscriber(EventSubscriberInterface $subscriber): void
  44. {
  45. $this->innerEventDispatcher->removeSubscriber($subscriber);
  46. }
  47. public function getListeners(string $eventName = null): array
  48. {
  49. return $this->innerEventDispatcher->getListeners($eventName);
  50. }
  51. public function getListenerPriority(string $eventName, $listener): ?int
  52. {
  53. return $this->innerEventDispatcher->getListenerPriority($eventName, $listener);
  54. }
  55. public function hasListeners(string $eventName = null): bool
  56. {
  57. return $this->innerEventDispatcher->hasListeners($eventName);
  58. }
  59. private function resolveEventName(string $fullyQualifiedName): ?string
  60. {
  61. return $this->classMap[$fullyQualifiedName] ?? null;
  62. }
  63. }