src/Controller/DiaporamaController.php line 159

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Departement;
  4. use App\Entity\Diaporama;
  5. use App\Entity\Etablissement;
  6. use App\Entity\Region;
  7. use App\Entity\Ville;
  8. use App\Service\Slugify;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache;
  14. class DiaporamaController extends AbstractController
  15. {
  16.     private const LIMIT 100;
  17.     private const HEADERLIMIT 2// Nbre de diaporama à afficher dans l'onglet du header
  18.     /** @var Slugify */
  19.     private $slugify;
  20.     public function __construct(Slugify $slugify)
  21.     {
  22.         $this->slugify $slugify;
  23.     }
  24.     /**
  25.      * @Route("/diaporamas/slider/{id}", name="diaporama-slider", methods={"GET"}, options = { "expose" = true })
  26.      */
  27.     public function slider(?Diaporama $diaporama): Response
  28.     {
  29.         return $this->render('fiche/_includes/diapo-slide.html.twig', [
  30.             'diaporama' => $diaporama,
  31.         ]);
  32.     }
  33.     /**
  34.      * @Route("/diaporamas/{lieu}/{etablissement}", name="diaporama-liste", defaults={"etablissement": null, "lieu":"default"}, methods={"GET", "POST"})
  35.      */
  36.     public function list(?Etablissement $etablissementRequest $requeststring $lieu=null): Response
  37.     {
  38.         $filter = [];
  39.         if ($etablissement) {
  40.             $filter['etablissement'] = $etablissement->getId();
  41.         }
  42.         $currentURL $request->getPathInfo();
  43.         if ($lieu != 'default') {
  44.             return $this->redirectToRoute('diaporama-liste', [], 301);
  45.             // $currentURL = explode("/", $currentURL );
  46.             // array_pop($currentURL);
  47.             // $currentURL = implode("/", $currentURL );
  48.         }
  49.         $types = [];
  50.         $ecole = [];
  51.         $college = [];
  52.         $lycee = [];
  53.         $professionnel = [];
  54.         $superieur = [];
  55.         $niveaux $request->request->get('niveau');
  56.         if($niveaux){
  57.             if(in_array('ecole'$niveaux))
  58.                 $ecole = ['02-ELEM''03-PRIM''01-MATER'];
  59.             if(in_array('college'$niveaux))
  60.                 $college = ['04-COLL'];
  61.             if(in_array('lycee'$niveaux))
  62.                 $lycee = ['05-LGEN''06-LTECH''07-LEGT'];
  63.             if(in_array('professionnel'$niveaux))
  64.                 $professionnel = ['08-LAGRI''09-LPROF''10-LEAP'];
  65.             if(in_array('superieur'$niveaux))
  66.                 $superieur = ['12-SUP'];
  67.             $types array_merge($ecole$college$lycee$professionnel$superieur);
  68.         }
  69.         $lieu $this->slugify->revealLieu($lieu);
  70.         $regions $this->getDoctrine()->getRepository(Region::class)->findAll();
  71.         $repositoryDepartement $this->getDoctrine()->getRepository(Departement::class);
  72.         $repositoryVille $this->getDoctrine()->getRepository(Ville::class);
  73.         $departements $repositoryDepartement->findRelatifsAuLieu($lieu);
  74.         $villes $repositoryVille->findRelatifsAuLieu($lieu);
  75.         $repositoryDiaporama $this->getDoctrine()->getRepository(Diaporama::class);
  76.         $diaporamas $repositoryDiaporama->findByLieu($lieuself::LIMIT$filter$types);
  77.         shuffle($diaporamas);
  78.         return $this->render('diaporama/list.html.twig', [
  79.             'etablissement' => $etablissement,
  80.             'diaporamas' => $diaporamas,
  81.             'regions' => $regions,
  82.             'departements' => $departements,
  83.             'villes' => $villes,
  84.             'niveaux' => $niveaux,
  85.             'currentURL' => $currentURL,
  86.             'lieu' => $lieu,
  87.             'robots_tag' => "noindex,follow",
  88.         ]);
  89.     }
  90.     /**
  91.      * @Route("/diaporamas/fiche/{id}", name="diaporama-etab", methods={"GET", "POST"})
  92.      */
  93.     public function fiche(?Diaporama $diaporama): Response
  94.     {
  95.         if (!$diaporama) {
  96.             return $this->redirectToRoute('diaporama-liste');
  97.         }
  98.         // $this->etabNonLuService->markAsRead($actualite);
  99.         return $this->render('diaporama/fiche.html.twig', [
  100.             'diaporama' => $diaporama,
  101.         ]);
  102.     }
  103.     /**
  104.      * @Route(
  105.      *     "/diaporama/header",
  106.      *     name="diaporama-header",
  107.      *     methods={"GET"}
  108.      * )
  109.      * @Cache(expires="+1 minutes")
  110.      */
  111.     public function headerList(): Response
  112.     {
  113.         $diaporamas $this->getDoctrine()->getRepository(Diaporama::class)->findBy(
  114.             [],
  115.             ['date' => 'DESC'],
  116.             self::HEADERLIMIT
  117.         );
  118.         return $this->render('diaporama/dropdown.html.twig', [
  119.             'diaporamas' => $diaporamas,
  120.         ]);
  121.     }
  122.     public function blocDiaposALaUne($type null): Response
  123.     {
  124.         // Bloc "Diaporamas à la une"
  125.         $diapos $this->getDoctrine()->getRepository(Diaporama::class)->findAlaUne(15); // bizarrement ça retourne parfois moins que la limite ! du coup on récupère plusieurs ...
  126.         \shuffle($diapos);
  127.         $diapos array_slice($diapos05); // ... et en n'en garde que 5
  128.         return $this->render('partial/diapo-une.html.twig', [
  129.             'diapos' => $diapos,
  130.             'type' => $type
  131.         ]);
  132.     }
  133. }