<?php
namespace App\Controller;
use App\Entity\Actualites\Actualites;
use App\Entity\Actualites\ActualitesCat;
use App\Entity\Actualites\ActualitesCom;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
class ActualitesController extends AbstractController
{
const NB_ACTU_UNE = 2;
const NB_CAT_ACCUEIL = 4;
const NB_ACTU = 8;
public function list(Request $request, ActualitesCat $cat = null)
{
// Actualités
$actualites = $this->getDoctrine()->getRepository(Actualites::class)
->findBy([
'actif' => 1,
'idCat1' => $cat,
'ecole' => constant('WWW_HOST') === 'abcm' ? null : constant('WWW_HOST'),
"langue" => $request->getLocale(),
],
[
"ordre" => 'ASC',
"date" => 'DESC',
],
self::NB_ACTU);
return $this->render('site/blog/liste_actualites.html.twig', [
'actualites' => $actualites,
'catSelected' => $cat,
'currentPage' => ($cat->getId() == '1') ? 'actualites' : '',
]);
}
public function detail(Actualites $actualite, Request $request)
{
$em = $this->getDoctrine()->getManager();
return $this->render('site/blog/actualite.html.twig', [
'actualite' => $actualite,
'currentPage' => ($actualite->getIdCat1()->getId() == '1') ? 'actualites' : '',
]);
}
public function ajaxGetActus(Request $request)
{
return AjaxTreatment::ajaxCall($request, function () use ($request) {
//Catégorie où aller chercher les articles
$categorieId = $request->request->get("categorie");
//Nombre d'articles déjà affichés pour l'offset
$nb_articles_actually_display = $request->request->get("nb_articles_actually_display");
//Un champ recherche pourra être implanté
//$search = $request->request->get("recherche");
$em = $this->getDoctrine();
//Verif que les variables sont correctes
if (intval($nb_articles_actually_display) < 0 ||
(!empty($categorieId) && (intval($categorieId) < 0 || !$categorie = $em->getRepository(
ActualitesCat::class
)->find($categorieId)))) {
//Erreur côté client
return [
'result' => false,
];
}
//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"
if (isset($categorie) && !empty($categorie)) {
$criteria = ['cat' => $categorie, 'actif' => 1, "langue" => $request->getLocale()];
} else {
$criteria = ['actif' => 1, "langue" => $request->getLocale()];
}
//On récupère les bonnes actus
$actualites = $em->getRepository(Actualites::class)->findBy(
$criteria,
['ordre' => 'ASC', 'dateCreation' => 'DESC'],
self::NB_ACTU_LIST,
$nb_articles_actually_display
);
//Paramètre du rendu
$viewsDatas = [
'actualites' => $actualites,
'limite' => [
'texteCourt' => Actualites::TEXTE_COURT,
],
];
//On vérifie s'il reste des actus à charger ou non
if (empty($actualites) || count($actualites) < self::NB_ACTU_LIST) {
$no_more = true;
} else {
$no_more = false;
}
//On retourne le tableau de la réponse JSON
return [
"code" => 200,
"response" => $this->render('blog/includes/load-actus.html.twig', $viewsDatas)->getContent(),
//Rendu des actualités chargées
'result' => true,
//Nécessaire à la fonction ajaxTreatment,
"no_more" => $no_more,
//Si tous les articles sont affichés, variable qui permet de supprimer le bouton "voir plus"
];
});
}
}