src/Controller/HomepageController.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\News;
  4. use App\Entity\VisitorCount;
  5. use App\Repository\NewsRepository;
  6. use App\Repository\TutoRepository;
  7. use App\Repository\JurisprudenceRepository;
  8. use App\Repository\VisitorCountRepository;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Knp\Component\Pager\Paginator;
  11. use Knp\Component\Pager\PaginatorInterface;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. class HomepageController extends AbstractController
  17. {
  18.     private JurisprudenceRepository $jurisprudenceRepository;
  19.     private NewsRepository $newsRepository;
  20.     private TutoRepository $tutoRepository;
  21.     private VisitorCountRepository $visitorCountRepository;
  22.     private EntityManagerInterface $entityManager;
  23.     public function __construct(
  24.         JurisprudenceRepository $jurisprudenceRepository,
  25.         NewsRepository $newsRepository,
  26.         TutoRepository $tutoRepository,
  27.         VisitorCountRepository $visitorCountRepository,
  28.         EntityManagerInterface $entityManager
  29.     ) {
  30.         $this->jurisprudenceRepository $jurisprudenceRepository;
  31.         $this->newsRepository $newsRepository;
  32.         $this->tutoRepository $tutoRepository;
  33.         $this->visitorCountRepository $visitorCountRepository;
  34.         $this->entityManager $entityManager;
  35.     }
  36.     /**
  37.      * @Route("/", name="default")
  38.      */
  39.     public function default(): Response
  40.     {
  41.         return $this->redirectToRoute('homepage');
  42.     }
  43.     /**
  44.      * @Route("/accueil", name="homepage")
  45.      */
  46.     public function index(Request $requestPaginatorInterface $paginator): Response
  47.     {
  48.         // Stats total
  49.         $totalCount $this->visitorCountRepository->findOneBy(['type' => VisitorCount::TOTAL_VISITORS_TYPE]);
  50.         if ($totalCount) {
  51.             $totalCount->setCounter($totalCount->getCounter() + 1);
  52.         } else {
  53.             $totalCount = new VisitorCount();
  54.             $totalCount->setType(VisitorCount::TOTAL_VISITORS_TYPE);
  55.             $totalCount->setCounter(1);
  56.             $this->entityManager->persist($totalCount);
  57.         }
  58.         $this->entityManager->flush();
  59.         $data = [];
  60.         $category $request->query->get('categorie');
  61.         //Get news
  62.         if (null === $category || 'infos' === $category ) {
  63.             $news $this->newsRepository->findBy(['active' => true]);
  64.             /** @var News $new */
  65.             foreach ($news as $new) {
  66.                 if ($new->getChapo() != null) {
  67.                     $content $this->cleanContent($new->getChapo());
  68.                 } else {
  69.                     $content $this->cleanContent($new->getContent());
  70.                 }
  71.                 $data[] = [
  72.                     'title' => $new->getTitle(),
  73.                     'date' => $new->getCreatedAt(),
  74.                     'timestamp' => $new->getCreatedAt()->getTimestamp(),
  75.                     'content' => $content,
  76.                     'type' => 'news',
  77.                     'id' => $new->getId(),
  78.                     'pinned' => $new->getPinned()
  79.                 ];
  80.             }
  81.         }
  82.         // Get tutos
  83.         if(null === $category || 'tutos' === $category) {
  84.             $tutos $this->tutoRepository->findBy(['active' => true]);
  85.             /** @var Tuto $tuto */
  86.             foreach ($tutos as $tuto) {
  87.                 if ($tuto->getChapo() != null) {
  88.                     $content $this->cleanContent($tuto->getChapo());
  89.                 } else {
  90.                     $content $this->cleanContent($tuto->getContent());
  91.                 }
  92.                 $data[] = [
  93.                     'title' => $tuto->getTitle(),
  94.                     'date' => $tuto->getCreatedAt(),
  95.                     'timestamp' => $tuto->getCreatedAt()->getTimestamp(),
  96.                     'content' => $content,
  97.                     'type' => 'tuto',
  98.                     'id' => $tuto->getId(),
  99.                     'pinned' => $tuto->getPinned()
  100.                 ];
  101.             }
  102.         }
  103.         // Get jp
  104.         if(null === $category || 'jurisprudences' === $category) {
  105.             $jurisprudences $this->jurisprudenceRepository->findBy(['active' => true]);
  106.             /** @var Jurisprudence $jurisprudence */
  107.             foreach ($jurisprudences as $jurisprudence) {
  108.                 if ($jurisprudence->getChapo() != null) {
  109.                     $content $this->cleanContent($jurisprudence->getChapo());
  110.                 } else {
  111.                     $content $this->cleanContent($jurisprudence->getContent());
  112.                 }
  113.                 $data[] = [
  114.                     'title' => $jurisprudence->getName(),
  115.                     'date' => $jurisprudence->getCreatedAt(),
  116.                     'timestamp' => $jurisprudence->getCreatedAt()->getTimestamp(),
  117.                     'content' => $content,
  118.                     'type' => 'jurisprudence',
  119.                     'id' => $jurisprudence->getId(),
  120.                     'pinned' => $jurisprudence->getPinned()
  121.                 ];
  122.             }
  123.         }
  124.         //krsort($data);
  125.         //array_multisort(array_column($data, 'pinned'), SORT_DESC, $data);
  126.         array_multisort(
  127.             array_column($data'pinned'), SORT_DESC,
  128.             array_column($data'timestamp'), SORT_DESC,
  129.             $data
  130.         );
  131.         $pagination $paginator->paginate($data$request->query->get('page'1), 6);
  132.         return $this->render('homepage/homepage_default.html.twig', [
  133.             'controller_name' => 'HomepageController',
  134.             'active_menu' => 'homepage',
  135.             'dataContent' => $pagination,
  136.             'categoryRequest' => $category,
  137.             //'search' => $search
  138.         ]);
  139.     }
  140.     private function cleanContent(string $content)
  141.     {
  142.         $contentClean strip_tags($content);
  143.         //$contentClean = str_replace("<br>", " ", $contentClean);
  144.         $contentClean str_replace("&rsquo;""'"$contentClean);
  145.         $contentClean str_replace("&#39;""'"$contentClean);
  146.         return $contentClean;
  147.     }
  148. }