src/EventListener/TwigGlobalSubscriber.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\RequestEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. use Twig\Environment;
  7. use Predis\Client as RedisClient;
  8. class TwigGlobalSubscriber implements EventSubscriberInterface
  9. {
  10.     private Environment $twig;
  11.     private RedisClient $redis;
  12.     private string $recaptchaSiteKey;
  13.     public function __construct(Environment $twigRedisClient $redisstring $recaptchaSiteKey)
  14.     {
  15.         $this->twig              $twig;
  16.         $this->redis             $redis;
  17.         $this->recaptchaSiteKey  $recaptchaSiteKey;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             KernelEvents::REQUEST => ['onKernelRequest'50],
  23.         ];
  24.     }
  25.     public function onKernelRequest(RequestEvent $event): void
  26.     {
  27.         if (!$event->isMainRequest()) {
  28.             return;
  29.         }
  30.         $this->twig->addGlobal('recaptcha_site_key'$this->recaptchaSiteKey);
  31.         $historyRaw $this->redis->lrange('chat_messages'019);
  32.         $history array_reverse(array_map(fn($item) => json_decode($itemtrue), $historyRaw));
  33.         $this->twig->addGlobal('chat_history'$history);
  34.     }
  35. }