src/EventSubscriber/TwigNotificationSubscriber.php line 25

Open in your IDE?
  1. <?php
  2. // src/EventSubscriber/TwigUserNotificationSubscriber.php
  3. namespace App\EventSubscriber;
  4. use App\Repository\TicketReplyRepository;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  7. use Symfony\Component\HttpKernel\KernelEvents;
  8. use Symfony\Component\Security\Core\Security;
  9. use Twig\Environment;
  10. class TwigUserNotificationSubscriber implements EventSubscriberInterface
  11. {
  12.     private $twig;
  13.     private $ticketReplyRepository;
  14.     private $security;
  15.     public function __construct(Environment $twigTicketReplyRepository $ticketReplyRepositorySecurity $security)
  16.     {
  17.         $this->twig $twig;
  18.         $this->ticketReplyRepository $ticketReplyRepository;
  19.         $this->security $security;
  20.     }
  21.     public function onKernelController(ControllerEvent $event)
  22.     {
  23.         // Sicherstellen, dass der Benutzer authentifiziert ist
  24.         $user $this->security->getUser();
  25.         if ($user !== null) {
  26.             
  27.             // Zähle ungelesene Ticket-Antworten für den Benutzer
  28.             $userUnreadRepliesCount count($this->ticketReplyRepository->findUnreadRepliesForUser($user->getId()));
  29.             // Setze die globale Variable in Twig (klar benannt für den User-Kontext)
  30.             $this->twig->addGlobal('user_unreadRepliesCount'$userUnreadRepliesCount);
  31.         } else {
  32.             // Wenn kein Benutzer authentifiziert ist, setze die Variable auf 0
  33.             $this->twig->addGlobal('user_unreadRepliesCount'0);
  34.         }
  35.     }
  36.     public static function getSubscribedEvents()
  37.     {
  38.         return [
  39.             KernelEvents::CONTROLLER => 'onKernelController',
  40.         ];
  41.     }
  42. }