src/Listener/ReviewsArticleListener.php line 36

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  * User: frup64362
  5.  * Date: 12/08/2016
  6.  * Time: 13:49
  7.  */
  8. namespace App\Listener;
  9. use App\Entity\Article;
  10. use App\Entity\ListeDiffusion;
  11. use App\Entity\ListeDiffusionSup;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Component\DependencyInjection\ContainerInterface;
  14. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  15. use Symfony\Component\HttpKernel\Event\GetResponseEvent;
  16. use Symfony\Component\Process\Process;
  17. use Symfony\Component\Validator\Constraints\IsFalse;
  18. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  19. class ReviewsArticleListener implements EventSubscriberInterface
  20. {
  21.     /**
  22.      * ReviewsArticleListener constructor.
  23.      */
  24.     public function __construct(private readonly ContainerInterface $container, private readonly SessionInterface $session, private readonly EntityManagerInterface $entityManager)
  25.     {
  26.     }
  27.     public static function getSubscribedEvents()
  28.     {
  29.         return [
  30.             RequestEvent::class => 'onKernelRequest',
  31.         ];
  32.     }
  33.     public function onKernelRequest(\Symfony\Component\HttpKernel\Event\RequestEvent $event)
  34.     {
  35.         $user $this->container->get('security.token_storage')->getToken();
  36.         if ($event->getRequest()->attributes->get('_route') == 'detailarticle' && $user) {
  37.             $slug $event->getRequest()->attributes->get('slug');
  38.             $article $this->entityManager->getRepository(Article::class)->findOneBySlug($slug);
  39.             $listDiffusion $this->entityManager->getRepository(ListeDiffusion::class)
  40.                 ->findOneBy(['utilisateur' => $user->getUser()->getUtilisateur(), 'article' => $article]);
  41.             if ($listDiffusion && $listDiffusion->getLu() === false) {
  42.                 $listDiffusion->setLu(true);
  43.                 $this->entityManager->persist($listDiffusion);
  44.                 $this->entityManager->flush();
  45.             }
  46.         }
  47.         if ($event->getRequest()->attributes->get('_route') == 'detail_cts_article' && $user) {
  48.             $slug $event->getRequest()->attributes->get('slug');
  49.             $article $this->entityManager->getRepository(Article::class)->findOneBySlug($slug);
  50.             $listDiffusionSup $this->entityManager->getRepository(ListeDiffusionSup::class)
  51.                 ->findOneBy(['utilisateur' => $user->getUser()->getUtilisateur(), 'article' => $article]);
  52.             if ($listDiffusionSup && $listDiffusionSup->getLu() === false) {
  53.                 $listDiffusionSup->setLu(true);
  54.                 $this->entityManager->persist($listDiffusionSup);
  55.                 $this->entityManager->flush();
  56.             }
  57.         }
  58.     }
  59. }