<?php
namespace App\Controller;
use App\Entity\Actualite;
use App\Repository\ActualiteCategsRepository;
use App\Repository\ActualiteRepository;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Routing\Annotation\Route;
class FrontActualiteController extends AbstractController
{
// private $isThereGalerieModule = false;
private $isThereSliderModule = array();
private $session;
public function __construct()
{
$this->session = new Session();
}
/**
* @Route({
* "fr": "/actualite/{categorie}",
* "en": "/news/{categorie}",
* "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="actualite"
* )
*/
public function index($categorie = 0, Request $request, ActualiteRepository $repoActu,
ActualiteCategsRepository $repoCateg, PaginatorInterface $paginator)
{
$actualitesQuery = $repoActu->findByCatAllActu(['site_lang' => $request->getLocale(), 'site_uid' => $this->session->get('front_site_uid'), 'categorie' => $categorie], ['act_date_publication' => 'DESC']);
$actualites = $paginator->paginate(
$actualitesQuery, // Requête contenant les données à paginer (ici nos articles)
$request->query->getInt('page', 1), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
9 // Nombre de résultats par page
);
$categories = $repoCateg->findBy(['site_lang' => $request->getLocale(), 'site_uid' => $this->session->get('front_site_uid')], ['act_cat_ordre' => 'ASC']);
$allCateg = [];
$nbActu = 0;
foreach ($categories as $categs) {
$allCateg[$categs->getId()] = $categs;
$nbActu = $repoActu->findBy(['act_categ_id' => $categs->getId()]);
$allCateg[$categs->getId()]->nbActus = sizeof($nbActu);
}
// dd($allCateg);
return $this->render('front_actualite/index.html.twig', [
// 'categories' => $repoCateg->findByCategoriesActu(['site_lang' => 'fr', 'site_uid' => $this->session->get('front_site_uid')]),
'categories' => $allCateg,
'actualites' => $actualites,
'catEnCours' => (int)$categorie,
]);
}
/**
* @Route({
* "fr": "actualite/fiche/{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="actualite_fiche")
*/
public function fiche($id, Request $request, ActualiteRepository $repoActu, ActualiteCategsRepository $repoCateg)
{
$actualite = $repoActu->find(['id' => $id]);
// $images = $repoAgdMedia->findBy(['act_id' => $id, 'act_media_type' => 'image'], ['act_media_ordre' => 'ASC']);
// if(count($images) > 1){
// $this->isThereGalerieModule = true;
// }
$categories = $repoCateg->findBy(['site_lang' => $request->getLocale(), 'site_uid' => $this->session->get('front_site_uid')], ['act_cat_ordre' => 'ASC']);
$allCateg = [];
foreach ($categories as $categs) {
$allCateg[$categs->getId()] = $categs;
}
$catEnCours = $actualite->getActCategId();
$actualite_content = $this->getActualiteBlocs($id);
return $this->render('front_actualite/fiche.html.twig', [
'categories' => $allCateg,
'actualite' => $actualite,
'actualite_content' => $actualite_content,
'isThereSlider' => $this->isThereSliderModule,
'isThereGalerie' => array(),
// 'images' => $images,
// 'isThereGalerieModule' => $this->isThereGalerieModule,
'catEnCours' => (int)$catEnCours,
]);
}
private function getActualiteBlocs($id)
{
$content = '';
$entityManager = $this->getDoctrine()->getManager();
$blocs = $entityManager->getRepository(Actualite::class)->findByListeBlocsWithMedia($id);
if (is_array($blocs) && sizeof($blocs) > 0) {
foreach ($blocs as $bloc) {
$MediasBlocs = $entityManager->getRepository(Actualite::class)->getAllMediasByBloc($blocs);
$currentBlocMedias = array();
foreach ($MediasBlocs as $media) {
if ($bloc['id'] == $media["bloc_id"]) {
$currentBlocMedias[] = $media;
}
}
if ($bloc['act_bloc_type'] == 'texte_slider') {
$this->isThereSliderModule[] = $bloc['id'];
}
$content .= $this->renderView("front_actualite/bloc-" . $bloc['act_bloc_type'] . ".html.twig", [
'medias' => $currentBlocMedias,
'bloc' => $bloc,
]);
}
}
return $content;
}
}