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=[];
  86.         $children=[];
  87.         $test=[];
  88.         if ($category === null) {
  89.             //si la requête est : toutes les jurisprudences
  90.             $jurisprudences $this->jurisprudenceRepository->findBy([
  91.                 'active' => true
  92.             ], [
  93.                 'createdAt' => 'DESC'
  94.             ]);
  95.         } else {
  96.             //sinon, chercher tous les catégories descendantes de la catégorie demandée (sur 1+5 générations)
  97.             $children[] = $category;
  98.             $directChildren $category->getChildrens();
  99.             foreach ($directChildren as $child) {
  100.                 $test[0][] = $child;
  101.                 $children[] = $child;
  102.             }
  103.             for ($i=0$i 8$i++) { 
  104.                 if (sizeof($test[$i]) == 0) {
  105.                     break;
  106.                 }
  107.                 $test[$i+1] = [];
  108.                 foreach ($test[$i] as $child) {
  109.                     $poufs $child->getChildrens();
  110.                     foreach ($poufs as $pouf) {
  111.                         $children[] = $pouf;
  112.                         $test[$i+1][] = $pouf;
  113.                     }
  114.                 }
  115.             }
  116.             //et chercher les jp présentes dans toutes ces catégories
  117.             /*$jurisprudences = $this->jurisprudenceRepository->findBy([
  118.                 'active' => true,
  119.                 'category' => $children
  120.             ], [
  121.                 'createdAt' => 'DESC'
  122.             ]);*/
  123.             foreach ($children as $child) {
  124.                 $jps $child->getJps();
  125.                 foreach ($jps as $jp) {
  126.                     if (!array_key_exists($jp->getCreatedAt()->getTimestamp(), $jurisprudences) && $jp->isActive() === true) {
  127.                         $jurisprudences[$jp->getCreatedAt()->getTimestamp()] = $jp;
  128.                 }
  129.             }
  130.             }
  131.         }
  132.         $jurisprudencesClean = [];
  133.         foreach ($jurisprudences as $jurisprudence) {
  134.             $content $jurisprudence->getContent();
  135.             $contentClean strip_tags($content'<br/><br>');
  136.             $contentClean str_replace("&rsquo;""'"$contentClean);
  137.             $contentClean str_replace("&#39;""'"$contentClean);
  138.             $jurisprudence->setContent($contentClean);
  139.             $jurisprudencesClean[] = $jurisprudence;
  140.         }
  141.         return $this->render('jurisprudence/list.html.twig', [
  142.             'jurisprudences' => $jurisprudencesClean,
  143.         ]);
  144.     }
  145.     /**
  146.      * @Route("/jurisprudence/{jurisprudenceId}", name="jurisprudence_show")
  147.      */
  148.     public function jurisprudenceShow(string $jurisprudenceId): Response
  149.     {
  150.         $jurisprudence $this->jurisprudenceRepository->find((int) $jurisprudenceId);
  151.         if (null === $jurisprudence) {
  152.             throw new NotFoundHttpException();
  153.         }
  154.         //Obtenir les catégories parentes de la jurisprudence
  155.         $jpData = [];
  156.         $i=1;
  157.         $jpCategoriesId $jurisprudence->getCategory();
  158.         foreach ($jpCategoriesId as $category) {
  159.             $jpData[$i][] = [
  160.                 'name' => $category->getName(),
  161.             ];
  162.             $parent $category;
  163.             while (null != $parent->getParent()) {
  164.                 $jpData[$i][] = [
  165.                     'name' => $parent->getParent()->getName(),
  166.                 ];
  167.                 $parent $parent->getParent();
  168.             }
  169.             $jpData[$i] = array_reverse($jpData[$i]);     
  170.             $i=$i+1;
  171.         }
  172.           
  173.         // Count visitors
  174.         $this->visitorCountManager->incrementStats($jurisprudence);
  175.         return $this->render('jurisprudence/show.html.twig', [
  176.             'jurisprudence' => $jurisprudence,
  177.             //'jpCategory' => $jurisprudenceCategory,
  178.             'jpData' => $jpData,
  179.             'active_menu' => 'jp'
  180.         ]);
  181.     }
  182.     /**
  183.      * @Route("/jurisprudences-mot-cle/{tag}", name="jurisprudences_by_tag")
  184.      */
  185.     public function jurisprudencesByTag(string $tag): Response
  186.     {
  187.         $jurisprudences $this->jurisprudenceRepository->findJurisprudencesByTag($tag);
  188.         return $this->render('jurisprudence/jurisprudences_by_tag.html.twig', [
  189.             'jurisprudences' => $jurisprudences,
  190.             'active_menu' => 'jp',
  191.             'tag' => $tag
  192.         ]);
  193.     }
  194.     /**
  195.      * @Route("/jurisprudence-arborescence", name="arborescence")
  196.      */
  197.     public function jurisprudencesarborescence(Request $request): Response
  198.     {
  199.         $jpData = [];
  200.         $jurisprudencesAll $this->jurisprudenceCategoryRepository->findBy([
  201.             'enabled' => true
  202.         ]);
  203.         // Everything in php because the first version need too many SQL requests (14sec doctrine debug)
  204.         /** @var JurisprudenceCategory $jurisprudenceCategory */
  205.         foreach ($jurisprudencesAll as $jurisprudenceCategory) {
  206.             if (null === $jurisprudenceCategory->getParent()) {
  207.                 $jpData[0][] = [
  208.                     'id' => $jurisprudenceCategory->getId(),
  209.                     'name' => $jurisprudenceCategory->getName(),
  210.                     'enabled' => true,
  211.                     'parentId' => null,
  212.                     'createdAt' => $jurisprudenceCategory->getCreatedAt(),
  213.                 ];
  214.             }
  215.         }
  216.         for ($i=1;$i<30;$i++) {
  217.             /** @var JurisprudenceCategory $jurisprudenceCategory */
  218.             foreach ($jurisprudencesAll as $jurisprudenceCategory) {
  219.                 // Category has no parent, stop iteration
  220.                 if (null === $jurisprudenceCategory->getParent()) {
  221.                     continue;
  222.                 }
  223.                 // Previous iteration does not exist, stop the loop
  224.                 if (!array_key_exists($i-1$jpData)) {
  225.                     break;
  226.                 }
  227.                 if (array_search($jurisprudenceCategory->getParent()->getId(), array_column($jpData[$i-1], 'id')) !== false) {
  228.                     $jpData[$i][] = [
  229.                         'id' => $jurisprudenceCategory->getId(),
  230.                         'name' => $jurisprudenceCategory->getName(),
  231.                         'enabled' => true,
  232.                         'parentId' => $jurisprudenceCategory->getParent()->getId(),
  233.                         'createdAt' => $jurisprudenceCategory->getCreatedAt(),
  234.                     ];
  235.                 }
  236.             }
  237.         }
  238.         return $this->render('jurisprudence/arborescence.html.twig', [
  239.             'controller_name' => 'JurisprudenceController',
  240.             'active_menu' => 'jp',
  241.             'jpData' => $jpData,
  242.         ]);
  243.     }
  244. }