src/EventSubscriber/UserFavoritesSubscriber.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Event\UserFavoritesEvent;
  4. use App\Service\Internal\Line\FavoriteService;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\Security\Core\Security;
  7. class UserFavoritesSubscriber implements EventSubscriberInterface
  8. {
  9. /**
  10. * @var Security
  11. */
  12. protected $security;
  13. /**
  14. * @var FavoriteService
  15. */
  16. protected $favoriteService;
  17. public function __construct(Security $security, FavoriteService $favoriteService)
  18. {
  19. $this->security = $security;
  20. $this->favoriteService = $favoriteService;
  21. }
  22. public static function getSubscribedEvents(): array
  23. {
  24. return [
  25. UserFavoritesEvent::NAME => [
  26. ['getUserFavoritesLinesId', 0]
  27. ]
  28. ];
  29. }
  30. public function getUserFavoritesLinesId(UserFavoritesEvent $event)
  31. {
  32. if (!$this->security->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  33. return $event->setUserFavoritesLinesId([]);
  34. }
  35. $userFavoritesLinesId = array_column($this->favoriteService->getFavoriteLines([]), 'favoriteId', 'id');
  36. return $event->setUserFavoritesLinesId($userFavoritesLinesId);
  37. }
  38. }