src/Controller/NewsController.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\News;
  4. use App\Repository\NewsRepository;
  5. use App\Repository\NewsCategoryRepository;
  6. use App\Services\VisitorCountManager;
  7. use Knp\Component\Pager\Paginator;
  8. use Knp\Component\Pager\PaginatorInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use App\Entity\VisitorCount;
  13. use App\Repository\TutoRepository;
  14. use App\Repository\VisitorCountRepository;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Response;
  18. class NewsController extends AbstractController
  19. {
  20.     private NewsRepository $newsRepository;
  21.     private NewsCategoryRepository $newsCategoryRepository;
  22.     private VisitorCountManager $visitorCountManager;
  23.     public function __construct(
  24.         NewsRepository $newsRepository,
  25.         NewsCategoryRepository $newsCategoryRepository,
  26.         VisitorCountManager $visitorCountManager
  27.     ) {
  28.         $this->newsRepository $newsRepository;
  29.         $this->newsCategoryRepository $newsCategoryRepository;
  30.         $this->visitorCountManager $visitorCountManager;
  31.     }
  32.     /**
  33.      * @Route("/actus", name="news_list")
  34.      */
  35.     public function newsList(Request $requestPaginatorInterface $paginator): Response
  36.     {
  37.         $categories $this->newsCategoryRepository->findBy([
  38.             'enabled' => true
  39.         ], [
  40.             'name' => 'asc'
  41.         ]);
  42.         // Stats total
  43.         /*$totalCount = $this->visitorCountRepository->findOneBy(['type' => VisitorCount::TOTAL_VISITORS_TYPE]);
  44.         if ($totalCount) {
  45.             $totalCount->setCounter($totalCount->getCounter() + 1);
  46.         } else {
  47.             $totalCount = new VisitorCount();
  48.             $totalCount->setType(VisitorCount::TOTAL_VISITORS_TYPE);
  49.             $totalCount->setCounter(1);
  50.             $this->entityManager->persist($totalCount);
  51.         }
  52.         $this->entityManager->flush();*/
  53.         $categoryId $request->query->get('category');
  54.         if (null !== $categoryId) {
  55.             $category $this->newsCategoryRepository->find((int) $categoryId);
  56.             $query $this->newsRepository->findNewsActiveQueryByCategory($category);
  57.         } else {
  58.             $category null;
  59.             $query $this->newsRepository->findNewsActiveQueryByCategory();
  60.         }
  61.         $data $paginator->paginate($query$request->query->get('page'1), 6);
  62.         $items $data->getItems();
  63.         $itemsWithoutTags = [];
  64.         foreach ($items as $item) {
  65.             $content $item->getContent();
  66.             $contentClean strip_tags($content'<br/><br>');
  67.             $contentClean str_replace("&rsquo;""'"$contentClean);
  68.             $contentClean str_replace("&#39;""'"$contentClean);
  69.             $item->setContent($contentClean);
  70.             $itemsWithoutTags[] = $item;
  71.         }
  72.         $data->setItems($itemsWithoutTags);
  73.         
  74.         return $this->render('news/news_list.html.twig', [
  75.             'controller_name' => 'NewsController',
  76.             'active_menu' => 'news',
  77.             'categories' => $categories,
  78.             'categoryRequest' => $category,
  79.             'news' => $data
  80.         ]);
  81.     }
  82.     /**
  83.      * @Route("/lire-actu/{actuId}", name="news_read")
  84.      */
  85.     public function newsRead(string $actuId)
  86.     {
  87.         $news $this->newsRepository->find((int) $actuId);
  88.         if (null === $news) {
  89.             throw new NotFoundHttpException();
  90.         }
  91.         
  92.         // Count visitors
  93.         $this->visitorCountManager->incrementStats($news);
  94.         return $this->render('news/news_read.html.twig', [
  95.             'controller_name' => 'NewsController',
  96.             'active_menu' => 'news',
  97.             'news' => $news
  98.         ]);
  99.     }
  100. }