src/Controller/ActualitesController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Actualites\Actualites;
  4. use App\Entity\Actualites\ActualitesCat;
  5. use App\Entity\Actualites\ActualitesCom;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. class ActualitesController extends AbstractController
  9. {
  10.     const NB_ACTU_UNE 2;
  11.     const NB_CAT_ACCUEIL 4;
  12.     const NB_ACTU 8;
  13.     public function list(Request $requestActualitesCat $cat null)
  14.     {
  15.         // Actualités
  16.         $actualites $this->getDoctrine()->getRepository(Actualites::class)
  17.                            ->findBy([
  18.                                'actif'  => 1,
  19.                                'idCat1' => $cat,
  20.                                'ecole' => constant('WWW_HOST') === 'abcm' null constant('WWW_HOST'),
  21.                                "langue" => $request->getLocale(),
  22.                            ],
  23.                                [
  24.                                    "ordre" => 'ASC',
  25.                                    "date"  => 'DESC',
  26.                                ],
  27.                                self::NB_ACTU);
  28.         return $this->render('site/blog/liste_actualites.html.twig', [
  29.             'actualites'  => $actualites,
  30.             'catSelected' => $cat,
  31.             'currentPage' => ($cat->getId() == '1') ? 'actualites' '',
  32.         ]);
  33.     }
  34.     public function detail(Actualites $actualiteRequest $request)
  35.     {
  36.         $em $this->getDoctrine()->getManager();
  37.         return $this->render('site/blog/actualite.html.twig', [
  38.             'actualite'   => $actualite,
  39.             'currentPage' => ($actualite->getIdCat1()->getId() == '1') ? 'actualites' '',
  40.         ]);
  41.     }
  42.     public function ajaxGetActus(Request $request)
  43.     {
  44.         return AjaxTreatment::ajaxCall($request, function () use ($request) {
  45.             //Catégorie où aller chercher les articles
  46.             $categorieId $request->request->get("categorie");
  47.             //Nombre d'articles déjà affichés pour l'offset
  48.             $nb_articles_actually_display $request->request->get("nb_articles_actually_display");
  49.             //Un champ recherche pourra être implanté
  50.             //$search = $request->request->get("recherche");
  51.             $em $this->getDoctrine();
  52.             //Verif que les variables sont correctes
  53.             if (intval($nb_articles_actually_display) < ||
  54.                 (!empty($categorieId) && (intval($categorieId) < || !$categorie $em->getRepository(
  55.                             ActualitesCat::class
  56.                         )->find($categorieId)))) {
  57.                 //Erreur côté client
  58.                 return [
  59.                     'result' => false,
  60.                 ];
  61.             }
  62.             //Si une catégorie est renseignée, on cherche dans idCat1 et idCat2, la méthode findBy est surchargée pour réaliser ça quand on cherche avec "cat"
  63.             if (isset($categorie) && !empty($categorie)) {
  64.                 $criteria = ['cat' => $categorie'actif' => 1"langue" => $request->getLocale()];
  65.             } else {
  66.                 $criteria = ['actif' => 1"langue" => $request->getLocale()];
  67.             }
  68.             //On récupère les bonnes actus
  69.             $actualites $em->getRepository(Actualites::class)->findBy(
  70.                 $criteria,
  71.                 ['ordre' => 'ASC''dateCreation' => 'DESC'],
  72.                 self::NB_ACTU_LIST,
  73.                 $nb_articles_actually_display
  74.             );
  75.             //Paramètre du rendu
  76.             $viewsDatas = [
  77.                 'actualites' => $actualites,
  78.                 'limite'     => [
  79.                     'texteCourt' => Actualites::TEXTE_COURT,
  80.                 ],
  81.             ];
  82.             //On vérifie s'il reste des actus à charger ou non
  83.             if (empty($actualites) || count($actualites) < self::NB_ACTU_LIST) {
  84.                 $no_more true;
  85.             } else {
  86.                 $no_more false;
  87.             }
  88.             //On retourne le tableau de la réponse JSON
  89.             return [
  90.                 "code"     => 200,
  91.                 "response" => $this->render('blog/includes/load-actus.html.twig'$viewsDatas)->getContent(),
  92.                 //Rendu des actualités chargées
  93.                 'result'   => true,
  94.                 //Nécessaire à la fonction ajaxTreatment,
  95.                 "no_more"  => $no_more,
  96.                 //Si tous les articles sont affichés, variable qui permet de supprimer le bouton "voir plus"
  97.             ];
  98.         });
  99.     }
  100. }