<?php
namespace App\Controller;
use App\Service\WordpressAPIService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class PressAreaController extends AbstractController
{
#[Route('/notizie', name: 'notizie', methods: ['GET', 'HEAD'])]
public function notizie(Request $request)
{
$page = max(1, (int)($request->query->get('pagina') ?? 1)); // non posso scendere al di sotto di 1
$search = $request->query->get('cerca') ?? null;
$wordpressAPIService = new WordpressAPIService();
// elenco di articoli da mostrare
$q1 = $wordpressAPIService->getArticles($page, 6, $search);
$totPages = $q1['totPages'] ?? -1;
$articles = $q1['articles'] ?? [];
// ottengo gli articoli recenti
$q2 = $wordpressAPIService->getArticles(1, 4);
$recentArticles = $q2['articles'];
// ottengo l'elenco delle categorie degli articoli
$q3 = $wordpressAPIService->getCategories();
$categories = $q3['categories'];
// ottengo l'URI di richiesta da passare alla view
$uri = (explode('?', $request->getRequestUri()))[0];
return new Response(
$this->renderView('pages/press_area/notizie.html.twig', [
'uri' => $uri,
'page' => $page,
'search' => $search,
'totPages' => $totPages,
'articles' => $articles,
'recentArticles' => $recentArticles,
'categories' => $categories
]),
200
);
}
#[Route('/notizie/categoria/{idCategory}', methods: ['GET', 'HEAD'])]
public function notizieCategoria(int $idCategory, Request $request)
{
$page = max(1, (int)($request->query->get('pagina') ?? 1)); // non posso scendere al di sotto di 1
$search = $request->query->get('cerca') ?? null;
$wordpressAPIService = new WordpressAPIService();
// elenco di articoli da mostrare
$q1 = $wordpressAPIService->getArticles($page, 6, $search, [$idCategory]);
$totPages = $q1['totPages'] ?? -1;
$articles = $q1['articles'] ?? [];
// ottengo gli articoli recenti
$q2 = $wordpressAPIService->getArticles(1, 4);
$recentArticles = $q2['articles'];
// ottengo l'elenco delle categorie degli articoli
$q3 = $wordpressAPIService->getCategories();
$categories = $q3['categories'];
// ottengo l'URI di richiesta da passare alla view
$uri = (explode('?', $request->getRequestUri()))[0];
return new Response(
$this->renderView('pages/press_area/notizie.html.twig', [
'uri' => $uri,
'idCategory' => $idCategory,
'page' => $page,
'search' => $search,
'totPages' => $totPages,
'articles' => $articles,
'recentArticles' => $recentArticles,
'categories' => $categories
]),
200
);
}
#[Route('/articolo/{slug}', name: 'articolo', methods: ['GET', 'HEAD'])]
public function articoloSlug(string $slug)
{
$wordpressAPIService = new WordpressAPIService();
// articolo da mostrare
$article = $wordpressAPIService->getArticle($slug);
if ($article === null) {
return $this->redirectToRoute('notizie');
}
// ottengo gli articoli recenti
$q1 = $wordpressAPIService->getArticles(1, 4);
$recentArticles = $q1['articles'];
// ottengo l'elenco delle categorie degli articoli
$q2 = $wordpressAPIService->getCategories();
$categories = $q2['categories'];
return new Response(
$this->renderView('pages/press_area/articolo.html.twig', [
'slug' => $slug,
'article' => $article,
'recentArticles' => $recentArticles,
'categories' => $categories
]),
200
);
}
#[Route('/ufficio-stampa', name: 'ufficio-stampa', methods: ['GET', 'HEAD'])]
public function ufficioStampa()
{
return new Response(
$this->renderView('pages/press_area/ufficio_stampa.html.twig'),
200
);
}
}