src/Controller/JurisprudenceController.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\JurisprudenceCategory;
  4. use App\Repository\JurisprudenceCategoryRepository;
  5. use App\Repository\JurisprudenceRepository;
  6. use App\Services\VisitorCountManager;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class JurisprudenceController extends AbstractController
  13. {
  14.     private JurisprudenceCategoryRepository $jurisprudenceCategoryRepository;
  15.     private JurisprudenceRepository $jurisprudenceRepository;
  16.     private VisitorCountManager $visitorCountManager;
  17.     public function __construct(
  18.         JurisprudenceCategoryRepository $jurisprudenceCategoryRepository,
  19.         JurisprudenceRepository $jurisprudenceRepository,
  20.         VisitorCountManager $visitorCountManager
  21.     ) {
  22.         $this->jurisprudenceCategoryRepository $jurisprudenceCategoryRepository;
  23.         $this->jurisprudenceRepository $jurisprudenceRepository;
  24.         $this->visitorCountManager $visitorCountManager;
  25.     }
  26.     /**
  27.      * @Route("/trouver-une-jurisprudence", name="jurisprudences_search")
  28.      */
  29.     public function jurisprudences(Request $request): Response
  30.     {
  31.         $jpData = [];
  32.         $jurisprudencesAll $this->jurisprudenceCategoryRepository->findBy([
  33.             'enabled' => true
  34.         ]);
  35.         // Everything in php because the first version need too many SQL requests (14sec doctrine debug)
  36.         /** @var JurisprudenceCategory $jurisprudenceCategory */
  37.         foreach ($jurisprudencesAll as $jurisprudenceCategory) {
  38.             if (null === $jurisprudenceCategory->getParent()) {
  39.                 $jpData[0][] = [
  40.                     'id' => $jurisprudenceCategory->getId(),
  41.                     'name' => $jurisprudenceCategory->getName(),
  42.                     'enabled' => true,
  43.                     'parentId' => null,
  44.                     'createdAt' => $jurisprudenceCategory->getCreatedAt(),
  45.                 ];
  46.             }
  47.         }
  48.         for ($i=1;$i<30;$i++) {
  49.             /** @var JurisprudenceCategory $jurisprudenceCategory */
  50.             foreach ($jurisprudencesAll as $jurisprudenceCategory) {
  51.                 // Category has no parent, stop iteration
  52.                 if (null === $jurisprudenceCategory->getParent()) {
  53.                     continue;
  54.                 }
  55.                 // Previous iteration does not exist, stop the loop
  56.                 if (!array_key_exists($i-1$jpData)) {
  57.                     break;
  58.                 }
  59.                 if (array_search($jurisprudenceCategory->getParent()->getId(), array_column($jpData[$i-1], 'id')) !== false) {
  60.                     $jpData[$i][] = [
  61.                         'id' => $jurisprudenceCategory->getId(),
  62.                         'name' => $jurisprudenceCategory->getName(),
  63.                         'enabled' => true,
  64.                         'parentId' => $jurisprudenceCategory->getParent()->getId(),
  65.                         'createdAt' => $jurisprudenceCategory->getCreatedAt(),
  66.                     ];
  67.                 }
  68.             }
  69.         }
  70.         return $this->render('jurisprudence/default.html.twig', [
  71.             'controller_name' => 'JurisprudenceController',
  72.             'active_menu' => 'jp',
  73.             'jpData' => $jpData,
  74.         ]);
  75.     }
  76.     /**
  77.      * @Route("/jurisprudences-liste", name="jurisprudences_list")
  78.      */
  79.     public function jurisprudencesList(Request $request): Response
  80.     {
  81.         if (!$request->query->has('categorie')) {
  82.             return new Response();
  83.         }
  84.         $category $this->jurisprudenceCategoryRepository->find((int) $request->query->get('categorie'));
  85.         $jurisprudences $this->jurisprudenceRepository->findBy([
  86.             'active' => true,
  87.             'category' => $category
  88.         ], [
  89.             'createdAt' => 'DESC'
  90.         ]);
  91.         $jurisprudencesClean = [];
  92.         foreach ($jurisprudences as $key => $jurisprudence) {
  93.             $content $jurisprudence->getContent();
  94.             $contentClean strip_tags($content'<br/><br>');
  95.             $contentClean str_replace("&rsquo;""'"$contentClean);
  96.             $contentClean str_replace("&#39;""'"$contentClean);
  97.             $jurisprudence->setContent($contentClean);
  98.             $jurisprudencesClean[] = $jurisprudence;
  99.         }
  100.         return $this->render('jurisprudence/list.html.twig', [
  101.             'jurisprudences' => $jurisprudencesClean,
  102.         ]);
  103.     }
  104.     /**
  105.      * @Route("/jurisprudence/{jurisprudenceId}", name="jurisprudence_show")
  106.      */
  107.     public function jurisprudenceShow(string $jurisprudenceId): Response
  108.     {
  109.         $jurisprudence $this->jurisprudenceRepository->find((int) $jurisprudenceId);
  110.         if (null === $jurisprudence) {
  111.             throw new NotFoundHttpException();
  112.         }
  113.         //Obtenir les catégories parentes de la jurisprudence
  114.         $jpData = [];
  115.         $jurisprudenceCategoryId $jurisprudence->getCategory()->getId();
  116.         $jurisprudenceCategory $this->jurisprudenceCategoryRepository->find((int) $jurisprudenceCategoryId);
  117.         while (null != $jurisprudenceCategory->getParent()) {
  118.             $retour $jurisprudenceCategory->getParent()->getId();
  119.             $jurisprudenceCategory $this->jurisprudenceCategoryRepository->find((int) $retour);
  120.             $jpData[] = [
  121.                 'name' => $jurisprudenceCategory->getName(),
  122.             ];
  123.         }
  124.         $jpData array_reverse($jpData);        
  125.         // Count visitors
  126.         $this->visitorCountManager->incrementStats($jurisprudence);
  127.         return $this->render('jurisprudence/show.html.twig', [
  128.             'jurisprudence' => $jurisprudence,
  129.             'jpCategory' => $jurisprudenceCategory,
  130.             'jpData' => $jpData,
  131.            'active_menu' => 'jp',
  132.         ]);
  133.     }
  134.     /**
  135.      * @Route("/jurisprudences-mot-cle/{tag}", name="jurisprudences_by_tag")
  136.      */
  137.     public function jurisprudencesByTag(string $tag): Response
  138.     {
  139.         $jurisprudences $this->jurisprudenceRepository->findJurisprudencesByTag($tag);
  140.         return $this->render('jurisprudence/jurisprudences_by_tag.html.twig', [
  141.             'jurisprudences' => $jurisprudences,
  142.             'active_menu' => 'jp',
  143.             'tag' => $tag
  144.         ]);
  145.     }
  146. }