<?php
namespace Acme\SudcmsBundle\Controller\Front;
use Acme\SudcmsBundle\Entity\Pages;
use Acme\SudcmsBundle\Entity\PagesBlocs;
use Acme\SudcmsBundle\Repository\ActualiteCategsRepository;
use Acme\SudcmsBundle\Repository\ActualiteRepository;
use Acme\SudcmsBundle\Repository\PagesBlocsRepository;
use Acme\SudcmsBundle\Repository\PagesRepository;
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 FrontNewsController extends AbstractController
{
private $isThereSliderModule = array();
private $session;
public function __construct()
{
$this->session = new Session();
}
#[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])]
public function index(Request $request, ActualiteRepository $repoActu,
ActualiteCategsRepository $repoCateg, PaginatorInterface $paginator, PagesRepository $pagesRepository, $categorie, $idCategorie)
{
$actualitesQuery = $repoActu->findByCatAllActu(['site_lang' => $request->getLocale(), 'site_uid' => CURRENT_SITE_ID, 'categorie' => $idCategorie], ['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
);
$page = $pagesRepository->findBy(['ppath_interne' => 'front_news']);
$categories = $repoCateg->findBy(['site_lang' => $request->getLocale(), 'site_uid' => CURRENT_SITE_ID], ['act_cat_ordre' => 'ASC']);
$allCateg = [];
foreach ($categories as $categs) {
$allCateg[$categs->getId()] = $categs;
$nbActu = $repoActu->findBy(['act_categ_id' => $categs->getId()]);
$allCateg[$categs->getId()]->nbActus = sizeof($nbActu);
}
return $this->render('front/front_news/index.html.twig', [
'categories' => $allCateg,
'actualites' => $actualites,
'actEnCours' => $idCategorie,
'actuIndexMedia' => $page[0]->getPBandeau(),
]);
}
#[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' => ''])]
public function fiche(ActualiteRepository $repoActu, PagesBlocsRepository $repoBlocActus, $id)
{
$actualite = $repoActu->find(['id' => $id]);
$actualite_content = $this->getActualiteBlocs($id);
return $this->render('front/front_news/fiche.html.twig', [
'actualite' => $actualite,
'actualite_content' => $actualite_content,
]);
}
private function getActualiteBlocs($id)
{
$content = '';
$entityManager = $this->getDoctrine()->getManager();
$blocs = $entityManager->getRepository(PagesBlocs::class)->findByListeBlocsWithMedia($id, 'news');
if (is_array($blocs) && sizeof($blocs) > 0) {
foreach ($blocs as $bloc) {
$MediasBlocs = $entityManager->getRepository(Pages::class)->getAllMediasByBloc($blocs);
$currentBlocMedias = array();
foreach ($MediasBlocs as $media) {
if ($bloc['bloc_id'] == $media["id_bloc"]) {
$currentBlocMedias[] = $media;
}
}
if ($bloc['bloc_type'] == 'texte_slider') {
$this->isThereSliderModule[] = $bloc['id'];
}
$content .= $this->renderView("front/front_blocks/bloc-" . $bloc['bloc_type'] . ".html.twig", [
'medias' => $currentBlocMedias,
'bloc' => $bloc,
'module' => 'actualite'
]);
}
}
return $content;
}
}