src/Controller/Front/FrontNewsController.php line 29

Open in your IDE?
  1. <?php
  2. namespace Acme\SudcmsBundle\Controller\Front;
  3. use Acme\SudcmsBundle\Entity\Pages;
  4. use Acme\SudcmsBundle\Entity\PagesBlocs;
  5. use Acme\SudcmsBundle\Repository\ActualiteCategsRepository;
  6. use Acme\SudcmsBundle\Repository\ActualiteRepository;
  7. use Acme\SudcmsBundle\Repository\PagesBlocsRepository;
  8. use Acme\SudcmsBundle\Repository\PagesRepository;
  9. use Knp\Component\Pager\PaginatorInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Session\Session;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class FrontNewsController extends AbstractController
  15. {
  16.     private $isThereSliderModule = array();
  17.     private $session;
  18.     public function __construct()
  19.     {
  20.         $this->session = new Session();
  21.     }
  22.     #[Route(path: ['fr' => '/actualite/{categorie}/{idCategorie}''en' => '/news/{categorie}/{idCategorie}''es' => '/noticias/{categorie}''it' => '/notizia/{categorie}''de' => '/nachrichten/{categorie}''pt' => '/noticia/{categorie}''pl' => '/aktualnosci/{categorie}''ru' => '/novosti/{categorie}''zh' => '/xinwen/{categorie}''tr' => '/haberler/{categorie}'], name'front_news'defaults: ['categorie' => 0'idCategorie' => 0])]
  23.     public function index(Request                   $requestActualiteRepository $repoActu,
  24.                           ActualiteCategsRepository $repoCategPaginatorInterface $paginatorPagesRepository $pagesRepository$categorie$idCategorie)
  25.     {
  26.         $actualitesQuery $repoActu->findByCatAllActu(['site_lang' => $request->getLocale(), 'site_uid' => CURRENT_SITE_ID'categorie' => $idCategorie], ['act_date_publication' => 'DESC']);
  27.         $actualites $paginator->paginate(
  28.             $actualitesQuery// Requête contenant les données à paginer (ici nos articles)
  29.             $request->query->getInt('page'1), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
  30.             // Nombre de résultats par page
  31.         );
  32.         $page $pagesRepository->findBy(['ppath_interne' => 'front_news']);
  33.         $categories $repoCateg->findBy(['site_lang' => $request->getLocale(), 'site_uid' => CURRENT_SITE_ID], ['act_cat_ordre' => 'ASC']);
  34.         $allCateg = [];
  35.         foreach ($categories as $categs) {
  36.             $allCateg[$categs->getId()] = $categs;
  37.             $nbActu $repoActu->findBy(['act_categ_id' => $categs->getId()]);
  38.             $allCateg[$categs->getId()]->nbActus sizeof($nbActu);
  39.         }
  40.         return $this->render('front/front_news/index.html.twig', [
  41.             'categories' => $allCateg,
  42.             'actualites' => $actualites,
  43.             'actEnCours' => $idCategorie,
  44.             'actuIndexMedia' => $page[0]->getPBandeau(),
  45.         ]);
  46.     }
  47.     #[Route(path: ['fr' => 'actualite/fiche/details/{id}''en' => '/news/layer/{id}''es' => '/noticias/capa/{id}''it' => '/notizia/strato/{id}''de' => '/nachrichten/schicht/{id}''pt' => '/noticia/camada/{id}''pl' => '/aktualnosci/warstwa/{id}''ru' => '/novosti/sloy/{id}''zh' => '/xinwen/chatou/{id}''tr' => '/haberler/katman/{id}'], name'front_news_card'defaults: ['id' => ''])]
  48.     public function fiche(ActualiteRepository $repoActuPagesBlocsRepository $repoBlocActus$id)
  49.     {
  50.         $actualite $repoActu->find(['id' => $id]);
  51.         $actualite_content $this->getActualiteBlocs($id);
  52.         return $this->render('front/front_news/fiche.html.twig', [
  53.             'actualite' => $actualite,
  54.             'actualite_content' => $actualite_content,
  55.         ]);
  56.     }
  57.     private function getActualiteBlocs($id)
  58.     {
  59.         $content '';
  60.         $entityManager $this->getDoctrine()->getManager();
  61.         $blocs $entityManager->getRepository(PagesBlocs::class)->findByListeBlocsWithMedia($id'news');
  62.         if (is_array($blocs) && sizeof($blocs) > 0) {
  63.             foreach ($blocs as $bloc) {
  64.                 $MediasBlocs $entityManager->getRepository(Pages::class)->getAllMediasByBloc($blocs);
  65.                 $currentBlocMedias = array();
  66.                 foreach ($MediasBlocs as $media) {
  67.                     if ($bloc['bloc_id'] == $media["id_bloc"]) {
  68.                         $currentBlocMedias[] = $media;
  69.                     }
  70.                 }
  71.                 if ($bloc['bloc_type'] == 'texte_slider') {
  72.                     $this->isThereSliderModule[] = $bloc['id'];
  73.                 }
  74.                 $content .= $this->renderView("front/front_blocks/bloc-" $bloc['bloc_type'] . ".html.twig", [
  75.                     'medias' => $currentBlocMedias,
  76.                     'bloc' => $bloc,
  77.                     'module' => 'actualite'
  78.                 ]);
  79.             }
  80.         }
  81.         return $content;
  82.     }
  83. }