<?php
namespace App\EventSubscriber;
use App\Event\UserFavoritesEvent;
use App\Service\Internal\Line\FavoriteService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Security\Core\Security;
class UserFavoritesSubscriber implements EventSubscriberInterface
{
/**
* @var Security
*/
protected $security;
/**
* @var FavoriteService
*/
protected $favoriteService;
public function __construct(Security $security, FavoriteService $favoriteService)
{
$this->security = $security;
$this->favoriteService = $favoriteService;
}
public static function getSubscribedEvents(): array
{
return [
UserFavoritesEvent::NAME => [
['getUserFavoritesLinesId', 0]
]
];
}
public function getUserFavoritesLinesId(UserFavoritesEvent $event)
{
if (!$this->security->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
return $event->setUserFavoritesLinesId([]);
}
$userFavoritesLinesId = array_column($this->favoriteService->getFavoriteLines([]), 'favoriteId', 'id');
return $event->setUserFavoritesLinesId($userFavoritesLinesId);
}
}