<?php
namespace App\Controller;
use App\Entity\Altro;
use App\Entity\Opera;
use App\Entity\Mostra;
use App\Entity\Articolo;
use App\Entity\Documento;
use App\Entity\Tipoopera;
use Doctrine\DBAL\Types\Type;
use App\Entity\OperaMultimedia;
use App\Entity\MostraMultimedia;
use Symfony\Component\Form\Forms;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SearchType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
Type::overrideType('datetime', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('datetimetz', 'Doctrine\DBAL\Types\VarDateTimeType');
Type::overrideType('time', 'Doctrine\DBAL\Types\VarDateTimeType');
class DefaultController extends AbstractController
{
#[Route('/', name: 'homepage')]
public function index(): Response
{
return $this->render('frontend/homepage.html.twig');
}
#[Route("/notizie-biografiche", name: "notizieBiografiche")]
public function notizieBiografiche(Request $request): Response
{
return $this->redirectToRoute('homepage');
// return $this->render('frontend/notiziebiografiche.html.twig');
}
// Pagina Archivio del sito pubblico
#[Route('/archivio', name: 'archivio')]
public function archivioPubblico(): Response
{
return $this->render('archivio/archivio-pubblico.html.twig');
}
// Homepage della nuova pagina Archivio che รจ come se fosse un sito separato
#[Route('/archivio-homepage', name: 'archivio-homepage')]
public function archivioHomepage(): Response
{
return $this->render('archivio/archivio-homepage.html.twig');
}
#[Route("/archivio-opere", name: "archivio-opere")]
public function opereArchivio(Request $request, ManagerRegistry $doctrine): Response
{
// Tipo opera
$selected_tipo_opera = "S"; // the default required value is Scultura
$selected_year = "";
$tipo_opera_repo = $doctrine->getRepository(Tipoopera::class);
$all_tipo_opera = $tipo_opera_repo->findBy([], ['priority' => 'ASC']);
$choices_tipo_opera = array();
foreach ($all_tipo_opera as $tipo_opera) {
if(strcmp($tipo_opera->getSigla(), "L") != 0){
$type = $tipo_opera->getTipo();
if(strcmp($tipo_opera->getSigla(), "D") == 0){
$type = strtoupper("$type - Collage");
}
$choices_tipo_opera[$type] = $tipo_opera->getSigla();
}
}
$operas_repo = $doctrine->getRepository(Opera::class);
$query_opera_years = $operas_repo->createQueryBuilder("opera")
->select("opera.anno")
->orderBy("opera.anno");
$all_years = $query_opera_years->getQuery()->getResult();
$choices_year = array();
foreach ($all_years as $year) {
$year_str = $year['anno'];
if(strcmp("$year_str", "") != 0){
$choices_year["$year_str"] = "$year_str";
}
}
$dynamicFormModifier = function (FormInterface $form, string $sigla_tipoopera = null, string $input_year = null) use ($doctrine){
if(!is_null($sigla_tipoopera)){
$operas_repo = $doctrine->getRepository(Opera::class);
$query_tipoopera_years = $operas_repo->createQueryBuilder("opera")
->select("opera.anno")
->join("opera.multimedias", "ms")
->join("opera.idtipoopera", "tipoopera")
->join("ms.multimedia", "m")
->where("m.tipo='image'");
if(strcmp($sigla_tipoopera, "") != 0){
$query_tipoopera_years = $query_tipoopera_years->where("tipoopera.sigla = :sigla")->setParameter(":sigla", $sigla_tipoopera);
}
$query_tipoopera_years = $query_tipoopera_years->orderBy("opera.anno");
$subset_years = $query_tipoopera_years->getQuery()->getResult();
$choices_year = array();
$previously_selected_year_contained = FALSE;
foreach ($subset_years as $year) {
$year_str = $year['anno'];
if(strcmp("$year_str", "") != 0){
$choices_year["$year_str"] = "$year_str";
// if we find out that the previously selected year is contained in the array of years
if(strcmp($input_year, $year_str) == 0){
$previously_selected_year_contained = TRUE;
}
}
}
$selected_year = $input_year;
if(!is_null($selected_year) && strcmp($selected_year, "") != 0 && $previously_selected_year_contained){
$form->add('year', ChoiceType::class, array(
'choices' => $choices_year,
'attr' => array('onchange' => 'this.form.submit()'),
'placeholder' => 'SELEZIONA ANNO',
'data' => "$selected_year"
));
}else{
$form->add('year', ChoiceType::class, array(
'choices' => $choices_year,
'attr' => array('onchange' => 'this.form.submit()'),
'placeholder' => 'SELEZIONA ANNO'
));
}
}
};
//Create a form builder for page number
$formFactory = Forms::createFormFactory();
$form_operas_type_and_year = $formFactory->createBuilder()
->add('operas_type', ChoiceType::class,
array(
'choices' => $choices_tipo_opera,
'placeholder' => 'SELEZIONA TIPO',
'attr' => array('onchange' => 'this.form.submit()')
)
)
->add('year', ChoiceType::class,
array(
'choices' => $choices_year,
'attr' => array('onchange' => 'this.form.submit()'),
'placeholder' => 'SELEZIONA ANNO'
)
)
->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) use ($dynamicFormModifier)
{
$data = $event->getData();
$dynamicFormModifier($event->getForm(), $data['operas_type'], $data['year']);
}
)
->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($doctrine)
{
$data = $event->getData();
$sigla_tipoopera = $data['operas_type'];
if(strcmp($sigla_tipoopera, "") != 0){
$operas_repo = $doctrine->getRepository(Opera::class);
$query_tipoopera_years = $operas_repo->createQueryBuilder("opera")
->select("opera.anno")
->join("opera.multimedias", "ms")
->join("opera.idtipoopera", "tipoopera")
->join("ms.multimedia", "m")
->where("m.tipo='image'")
->where("tipoopera.sigla = :sigla")->setParameter(":sigla", $sigla_tipoopera);
$query_tipoopera_years = $query_tipoopera_years->orderBy("opera.anno");
$subset_years = $query_tipoopera_years->getQuery()->getResult();
$choices_year = array();
foreach ($subset_years as $year) {
$year_str = $year['anno'];
if(strcmp("$year_str", "") != 0){
$choices_year[] = "$year_str";
}
}
if(!in_array($data["year"], $choices_year)){
$data["year"] = "";
$event->setData($data);
}
}
}
)
->getForm();
$form_operas_type_and_year->handleRequest();
if($form_operas_type_and_year->isSubmitted() && $form_operas_type_and_year->isValid()){
$selected_tipo_opera = $form_operas_type_and_year->getData()["operas_type"];
$selected_year = $form_operas_type_and_year->getData()["year"];
}
// get operas
$query_opere = $operas_repo->createQueryBuilder("opera")
->distinct("opera.id")
->join("opera.multimedias", "ms")
->join("ms.multimedia", "m")
->join("opera.idtipoopera", "tipoopera")
->where("m.tipo = 'image'")
->where("opera.visibile = true");
// force NULL selection to Scultura
if(is_null($selected_tipo_opera)){
$selected_tipo_opera = "S";
}
// this if-statement should be removed
if(strcmp($selected_tipo_opera, "") != 0){
$query_opere = $query_opere->andWhere("tipoopera.sigla = :sigla")->setParameter("sigla", $selected_tipo_opera);
// If the user selects DISEGNI we also want to add COLLAGE to the results
if(strcmp($selected_tipo_opera, "D") == 0){
$query_opere = $query_opere->andWhere("tipoopera.sigla = :selected OR tipoopera.sigla = :collage")
->setParameter('selected', $selected_tipo_opera)
->setParameter("collage", "L");
}
}
if(!is_null($selected_year) && strcmp($selected_year, "") != 0){
$query_opere = $query_opere->andWhere("opera.anno = :anno")->setParameter("anno", $selected_year);
}
// order operas by descendent year 1985 - 1984 ...
// $query_opere = $query_opere->orderBy("opera.anno", "DESC");
// as required by the customer we want a special selection when TipoSculture = "S" and Y = 1985
// i.e. we want only operas with ids = 915/916/905/532 - 534/537/910/538
if(strcmp($selected_tipo_opera, "S") == 0 && (is_null($selected_year) || (!is_null($selected_year) && (strcmp($selected_year, "1985") == 0) || strcmp($selected_year, "") == 0))){
$special_ids = ["915", "916", "905", "532", "534", "537", "910", "538"];
$query_opere = $query_opere->andWhere("opera.id IN (:special_ids)")->setParameter("special_ids", $special_ids);
$query_opere = $query_opere->orderBy("opera.datainserimento", "ASC");
} else {
$query_opere = $query_opere->addOrderBy("opera.anno","desc");
$query_opere = $query_opere->addOrderBy("opera.numprogressivoanno","asc");
}
$opere = $query_opere->setMaxResults(20)->getQuery()->getResult();
$cover_presence = [];
foreach ($opere as $opera){
$id_opera = $opera->getId();
foreach ($opera->getMultimedias() as $m ){
if ($m->getCover())
$cover_presence[$id_opera] = True;
}
if(!array_key_exists($id_opera, $cover_presence))
$cover_presence[$id_opera] = False;
}
return $this->render('archivio/archivio-opere.html.twig',
array(
"opere" => $opere,
"cover_presence" => $cover_presence,
"form_operas_type_and_year" => $form_operas_type_and_year->createView(),
"selected_tipoopera" => $selected_tipo_opera,
"selected_year" => $selected_year
));
}
#[Route("/opere", name: "opere")]
public function opere(Request $request, ManagerRegistry $doctrine): Response
{
return $this->render('frontend/opere.html.twig', [
]);
}
#[Route("/dettaglio-opere/{categoria?}", name: "dettaglioOpere")]
public function dettaglioOpere(Request $request, ManagerRegistry $doctrine, $categoria): Response
{
$tipo = intval($_GET['tipo'] ?? 1);
if ($categoria != 'nel-tempo' and $categoria != 'nei-materiali') {
$categoria = 'nel-tempo';
}
if ($categoria == 'nel-tempo') {
$tipi = [
1 => ['label' => 'Esordi', 'id' => [4, 713, 629, 473, 110]], // Esordi
2 => ['label' => 'Verso il figurativo indiretto', 'id' => [612, 2991, 607, 622, 559, 641]], // Verso il figurativo indiretto
3 => ['label' => 'Figurativo indiretto', 'id' => [668, 2956, 2995, 683, 684, 743, 698, 685, 761]], // Il figurativo indiretto
4 => ['label' => 'Le foglie', 'id' => [765, 766, 4111, 4116, 529, 3100, 531, 537]], // Le foglie
5 => ['label' => 'Il colore', 'id' => [905, 915, 916, 534, 910, 4119, 906, 985]] // Il colore
];
} else {
$tipi = [
1 => ['label' => 'Ulivo e tiglio', 'id' => [520, 519, 522, 511]], // Ulivo e tiglio
2 => ['label' => 'Mogano, abete e cirmolo', 'id' => [591, 593, 682, 681, 637, 4121]], // Mogano e abete
3 => ['label' => 'Onice e Alabastro', 'id' => [835, 2994, 842, 836, 841, 839, 837]], // Onice e Alabastro
4 => ['label' => 'Trachite e pietra di Vicenza', 'id' => [848, 700, 658, 680]], // Trachite
5 => ['label' => 'Ferro', 'id' => [532, 496, 909, 497, 502, 2955]], // Ferro
6 => ['label' => 'Vetroresina, titanio e alluminio', 'id' => [699, 960, 961, 962, 4102, 614]] // Altri metalli
];
}
$idOpere = $tipi[$tipo] ?? $tipi[1];
$title = $idOpere['label'] ?? '';
$opere = [];
foreach ($idOpere['id'] as $id) {
$opera = $this->getDoctrine()->getRepository(Opera::class)->find($id);
$opere[$id] = $opera;
}
$categoriaTitle = 'Nel tempo';
if ($categoria == 'nei-materiali') {
$categoriaTitle = 'Nei materiali';
}
return $this->render('frontend/opere-dettaglio.html.twig', [
'title' => $title,
'opere' => $opere,
'categoria' => $categoria,
'categoriaTitle' => $categoriaTitle,
'tipi' => $tipi,
'tipo' => $tipo
]);
}
#[Route("/monografie-cataloghi", name: "monografieCataloghi")]
public function monografieCataloghi(Request $request, ManagerRegistry $doctrine): Response
{
/**
* @since 2023-11-20
*/
return $this->redirectToRoute('homepage');
$documents_repo = $doctrine->getRepository(Documento::class);
$monografie_query = $documents_repo->createQueryBuilder("doc")
->where("doc.tipo = 'monografia'")
->orderBy("doc.anno", "DESC");
$monografie = $monografie_query->getQuery()->getResult();
$cataloghi_query = $documents_repo->createQueryBuilder("doc")
->where("doc.tipo = 'catalogo'")
->orderBy("doc.anno", "DESC");
$cataloghi = $cataloghi_query->getQuery()->getResult();
$libri_query = $documents_repo->createQueryBuilder("doc")
->where("doc.tipo = 'libro'")
->orderBy("doc.anno", "DESC");
$libri = $libri_query->getQuery()->getResult();
return $this->render('frontend/monografiecataloghi.html.twig',
array(
"monografie" => $monografie,
"cataloghi" => $cataloghi,
"libri" => $libri
));
}
#[Route("/archivio-mostre", name: "archivio-mostre")]
public function mostre(Request $request, ManagerRegistry $doctrine): Response
{
/**
* @since 2023-11-20
*/
// return $this->redirectToRoute('homepage');
$mostra_repo = $doctrine->getRepository(Mostra::class);
$mostraMultimedia = $doctrine->getRepository(MostraMultimedia::class);
$mostre_personali = $mostra_repo->createQueryBuilder("m")
->where("m.personale = TRUE")
->orderBy('m.numprogressivaanno', 'ASC')
->getQuery()->getResult();
$mostre_collettive = $mostra_repo->createQueryBuilder("m")
->where("m.collettiva = TRUE")
->getQuery()->getResult();
$anniMostrePersonali = [];
$i = 0;
foreach ($mostre_personali as $mostraPersonale) {
if (!isset($anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()])) {
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['mostra'] = $mostraPersonale;
$idEsposizione = $mostraPersonale->getId();
$queryImmagine = $mostraMultimedia->createQueryBuilder('mm')
->join('mm.multimedia', 'file')
->select('file.fileref, file.estensione')
->where("mm.mostra = {$idEsposizione} AND file.estensione = 'pdf'")
->orderBy('mm.id', 'ASC')
->setMaxResults(1)
->getQuery();
if (!empty($queryImmagine->getResult()[0])) {
$immagineEsposizione = $queryImmagine->getResult()[0];
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['fileref'] = str_replace('-', '', $immagineEsposizione['fileref']);
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['estensione'] = $immagineEsposizione['estensione'];
}
}
$i++;
}
ksort($anniMostrePersonali);
$anniMostreCollettive = [];
$i = 0;
foreach ($mostre_collettive as $mostraCollettiva) {
if (!isset($anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()])) {
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['mostra'] = $mostraCollettiva;
$idEsposizione = $mostraCollettiva->getId();
$queryImmagine = $mostraMultimedia->createQueryBuilder('mm')
->join('mm.multimedia', 'file')
->select('file.fileref, file.estensione')
->where("mm.mostra = {$idEsposizione} AND file.estensione = 'pdf'")
->orderBy('mm.id', 'ASC')
->setMaxResults(1)
->getQuery();
if (!empty($queryImmagine->getResult()[0])) {
$immagineEsposizione = $queryImmagine->getResult()[0];
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['fileref'] = str_replace('-', '', $immagineEsposizione['fileref']);
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['estensione'] = $immagineEsposizione['estensione'];
}
}
$i++;
}
ksort($anniMostreCollettive);
// return $this->render('frontend/mostre.html.twig',
return $this->render(
'esposizioni/esposizioni-archivio.html.twig',
array(
"mostre_personali" => $mostre_personali,
"mostre_collettive" => $mostre_collettive,
"anniMostrePersonali" => $anniMostrePersonali,
"anniMostreCollettive" => $anniMostreCollettive
)
);
}
#[Route("/emeroteca", name: "emeroteca")]
public function emeroteca(Request $request, ManagerRegistry $doctrine): Response
{
/**
* @since 2023-11-20
*/
return $this->redirectToRoute('homepage');
$articles = $doctrine->getRepository(Articolo::class)->findBy([], ["anno" => "DESC"]);
return $this->render('frontend/emeroteca.html.twig',
array(
'articles' => $articles
));
}
#[Route("/altro", name: "altro")]
public function altro(Request $request): Response
{
/**
* @since 2023-11-20
*/
return $this->redirectToRoute('homepage');
$altro = $this->getDoctrine()->getRepository(Altro::class)->findAll();
return $this->render('frontend/altro.html.twig',
array(
"altro" => $altro
));
}
/**
* @since 2023-11-17
*/
#[Route('/biografia', name: 'biografia', methods: ['GET'])]
public function showBiografia(Request $request): Response
{
return $this->render('biografia/biografia.html.twig', ['accordion' => '']);
}
#[Route('/interviste', name: 'interviste', methods: ['GET'])]
public function showInterviste(Request $request): Response
{
return $this->render('interviste/interviste.html.twig', ['accordion' => 'interviste']);
}
#[Route('/contatti', name: 'contatti', methods: ['GET'])]
public function showContatti(Request $request): Response
{
return $this->render('frontend/contatti.html.twig', []);
}
#[Route('/archivio-biografia', name: 'archivio-biografia', methods: ['GET'])]
public function showArchivioBiografia(Request $request): Response
{
return $this->render('archivio/archivio-biografia.html.twig');
}
#[Route('/archivio-bibliografia', name: 'archivio-bibliografia', methods: ['GET'])]
#[Route('/bibliografia', name: 'bibliografia', methods: ['GET'])]
public function showBibliografia(Request $request, ManagerRegistry $doctrine, ?string $tipo): Response
{
return $this->render('bibliografia/bibliografia.html.twig', []);
}
/**
* @since 2023-11-17
*/
#[Route('/bibliografia/{tipo?}', name: 'bibliografia-tipo', methods: ['GET'])]
public function showBibliografiaTipo(Request $request, ManagerRegistry $doctrine, string $tipo): Response
{
if ($tipo != 'elenco' and $tipo != 'giornali' && $tipo != 'monografie' && $tipo != 'libri') {
$tipo = 'elenco';
}
$tipoLabel = '';
switch ($tipo) {
case 'elenco':
$tipoLabel = 'Elenco';
break;
case 'giornali':
$tipoLabel = 'Giornali e riviste';
break;
case 'monografie':
$tipoLabel = 'Monografie e cataloghi';
break;
case 'libri':
$tipoLabel = 'Libri';
break;
default:
break;
}
$documents_repo = $doctrine->getRepository(Documento::class);
$monografie_cataloghi = $documents_repo->findBy(['tipo' => ['monografia', 'catalogo']], ['anno' => 'ASC', 'numero_progressivo' => 'ASC']);
$cataloghi = $documents_repo->findBy(['tipo' => 'catalogo'], ['anno' => 'ASC', 'numero_progressivo' => 'ASC']);
$libri = $documents_repo->findBy(['tipo' => 'libro'], ['anno' => 'ASC', 'numero_progressivo' => 'ASC']);
$riviste = $documents_repo->findBy(['tipo' => 'rivista'], ['anno' => 'ASC', 'numero_progressivo' => 'ASC']);
$giornali = $doctrine->getRepository(Articolo::class)->findBy([], ['anno' => 'ASC', 'mese' => 'ASC', 'giorno' => 'ASC']);
// $anni = [];
$anniMonografieCataloghi = [];
foreach ($monografie_cataloghi as $monografia_catalogo) {
$anno = intval($monografia_catalogo->getAnno());
if ($anno != 0) {
$anniMonografieCataloghi[$anno]['monografie_cataloghi'][$monografia_catalogo->getId()] = $monografia_catalogo;
}
}
$anniLibri = [];
foreach ($libri as $libro) {
$anno = intval($libro->getAnno());
if ($anno) {
$anniLibri[$anno]['libri'][$libro->getId()] = $libro;
}
}
$anniGiornali = [];
foreach ($giornali as $giornale) {
$anno = intval($giornale->getAnno());
if ($anno) {
// $anniGiornali[$anno]['giornali'][$giornale->getId()] = $giornale;
$anniGiornaliRiviste[$anno][$giornale->getId()]['_tipo'] = 'giornale';
$anniGiornaliRiviste[$anno][$giornale->getId()]['_object'] = $giornale;
}
}
// ksort($anniGiornali);
$anniRiviste = [];
foreach ($riviste as $rivista) {
$anno = intval($rivista->getAnno());
if ($anno) {
// $anniRiviste[$anno]['riviste'][$rivista->getId()] = $rivista;
$anniGiornaliRiviste[$anno][$rivista->getId()]['_tipo'] = 'rivista';
$anniGiornaliRiviste[$anno][$rivista->getId()]['_object'] = $rivista;
}
}
// ksort($anniRiviste);
ksort($anniGiornaliRiviste);
return $this->render(
'bibliografia/bibliografia-tipo.html.twig',
[
'monografie_cataloghi' => $monografie_cataloghi,
'cataloghi' => $cataloghi,
'libri' => $libri,
'giornali' => $giornali,
'anniMonografieCataloghi' => $anniMonografieCataloghi,
'anniLibri' => $anniLibri,
// 'anniGiornali' => $anniGiornali,
// 'anniRiviste' => $anniRiviste
'anniGiornaliRiviste' => $anniGiornaliRiviste,
'tipoLabel' => $tipoLabel,
'tipo' => $tipo
]
);
}
#[Route('/esposizioni', name: 'esposizioni', methods: ['GET'])]
public function showEsposizioni(Request $request): Response
{
return $this->render('esposizioni/esposizioni.html.twig');
}
#[Route('/esposizioni/{tipo?}', name: 'esposizioni-tipo', methods: ['GET'])]
public function showEsposizioniTipo(Request $request, ManagerRegistry $doctrine, string $tipo): Response
{
if ($tipo != 'personali' and $tipo != 'collettive') {
$tipo = 'personali';
}
$tipoLabel = 'Personali ed eventi';
if ($tipo == 'collettive') {
$tipoLabel = 'Collettive';
}
$mostra_repo = $doctrine->getRepository(Mostra::class);
$mostraMultimedia = $doctrine->getRepository(MostraMultimedia::class);
$mostre_personali = $mostra_repo->createQueryBuilder("m")
->where("m.personale = TRUE")
->orderBy('m.numprogressivaanno', 'ASC')
->getQuery()->getResult();
$mostre_collettive = $mostra_repo->createQueryBuilder("m")
->where("m.collettiva = TRUE")
->getQuery()->getResult();
$anniMostrePersonali = [];
$i = 0;
foreach ($mostre_personali as $mostraPersonale) {
if (!isset($anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()])) {
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['mostra'] = $mostraPersonale;
$idEsposizione = $mostraPersonale->getId();
$queryImmagine = $mostraMultimedia->createQueryBuilder('mm')
->join('mm.multimedia', 'file')
->select('file.fileref, file.estensione')
->where("mm.mostra = {$idEsposizione} AND file.estensione = 'pdf'")
->orderBy('mm.id', 'ASC')
->setMaxResults(1)
->getQuery();
if (!empty($queryImmagine->getResult()[0])) {
$immagineEsposizione = $queryImmagine->getResult()[0];
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['fileref'] = str_replace('-', '', $immagineEsposizione['fileref']);
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['estensione'] = $immagineEsposizione['estensione'];
}
}
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['hasVisibleOperas'] = false;
foreach ($mostraPersonale->getIdopera() as $key => $opera) {
if ($opera->getVisibile()) {
$anniMostrePersonali[$mostraPersonale->getAnno()]['esposizioni'][$mostraPersonale->getId()]['hasVisibleOperas'] = true;
}
}
$i++;
}
ksort($anniMostrePersonali);
$anniMostreCollettive = [];
$i = 0;
foreach ($mostre_collettive as $mostraCollettiva) {
if (!isset($anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()])) {
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['mostra'] = $mostraCollettiva;
$idEsposizione = $mostraCollettiva->getId();
$queryImmagine = $mostraMultimedia->createQueryBuilder('mm')
->join('mm.multimedia', 'file')
->select('file.fileref, file.estensione')
->where("mm.mostra = {$idEsposizione} AND file.estensione = 'pdf'")
->orderBy('mm.id', 'ASC')
->setMaxResults(1)
->getQuery();
if (!empty($queryImmagine->getResult()[0])) {
$immagineEsposizione = $queryImmagine->getResult()[0];
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['fileref'] = str_replace('-', '', $immagineEsposizione['fileref']);
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['estensione'] = $immagineEsposizione['estensione'];
}
}
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['hasVisibleOperas'] = false;
foreach ($mostraCollettiva->getIdopera() as $key => $opera) {
if ($opera->getVisibile()) {
$anniMostreCollettive[$mostraCollettiva->getAnno()]['esposizioni'][$mostraCollettiva->getId()]['hasVisibleOperas'] = true;
}
}
$i++;
}
ksort($anniMostreCollettive);
return $this->render('esposizioni/esposizioni-tipo.html.twig', [
'tipo' => $tipo,
'tipoLabel' => $tipoLabel,
"mostre_personali" => $mostre_personali,
"mostre_collettive" => $mostre_collettive,
"anniMostrePersonali" => $anniMostrePersonali,
"anniMostreCollettive" => $anniMostreCollettive,
]);
}
#[Route('/archivio-interviste', name: 'archivio-interviste', methods: ['GET'])]
public function showMultimedia(Request $request): Response
{
return $this->render('archivio/archivio-interviste.html.twig');
}
#[Route("/biografia-ragionata", name: "biografiaRagionata")]
public function biografiaRagionata(Request $request): Response
{
/**
* @since 2023-11-20
*/
return $this->redirectToRoute('homepage');
// return $this->render('frontend/biografiaragionata.html.twig');
}
#[Route("/archivio-opere/ricerca-avanzata/", name: "opereAdvancedSearch")]
public function opereAdvancedSearch(Request $request, ManagerRegistry $doctrine): Response
{
// get tipoopera
$tipo_operas = $this->getDoctrine()->getRepository(Tipoopera::class)->findAll();
$tipoopera_key_value_map = [];
foreach ($tipo_operas as $tipo){
$tipoopera_key_value_map[$tipo->getTipo()] = $tipo->getSigla();
}
// get opera years
$operas_repo = $this->getDoctrine()->getRepository(Opera::class);
$query_opera_years = $operas_repo->createQueryBuilder("opera")
->select("opera.anno")
// ->orderBy("opera.anno");
->addOrderBy("opera.anno","desc")
->addOrderBy("opera.numprogressivoanno","asc")
->addOrderBy("opera.id","asc");
$all_years = $query_opera_years->getQuery()->getResult();
$choices_year = array();
foreach ($all_years as $year) {
$year_str = $year['anno'];
if(strcmp("$year_str", "") != 0){
$choices_year["$year_str"] = "$year_str";
}
}
$formFactory = Forms::createFormFactory();
$search_form = $formFactory->createBuilder()
->add('titolo', SearchType::class, array('required' => false))
->add('anno', ChoiceType::class, array('required' => false, 'choices' => $choices_year, 'placeholder' => 'Seleziona Anno'))
->add('numprogressivoanno', IntegerType::class, array('required' => false))
->add('tipoopera', ChoiceType::class, array('required' => false, 'choices' => $tipoopera_key_value_map, 'placeholder' => 'Seleziona un tipo di opera'))
->add('collezione', SearchType::class, array('required' => false))
->add('chiave', SearchType::class, array('required' => false))
->getForm();
$search_form->handleRequest();
$operas_results = null;
$multimedias_look_up_table = [];
$visible_operas = [];
if($search_form->isSubmitted() && $search_form->isValid()){
$data = $search_form->getData();
$title = strtolower($data["titolo"]);
$year = $data["anno"];
$npy = $data["numprogressivoanno"];
$tipo_opera = $data["tipoopera"];
$collezione = strtolower($data["collezione"]);
$chiave = strtolower($data["chiave"]);
if(!((strcmp($title, "") == 0) && is_null($year) && is_null($npy) && is_null($tipo_opera) && (strcmp($collezione, "") == 0) && (strcmp($chiave, "") == 0))){
$opera_repo = $this->getDoctrine()->getRepository(Opera::class);
$query = $opera_repo->createQueryBuilder("op")
->select("op.id, op.titolo, op.anno, op.numprogressivoanno, op.visibile, op.mat, "
. "op.materiale, tipoopera.tipo, op.tecnica, op.x, op.y, op.z, op.collezione, op.chiavi")
->join("op.idtipoopera", "tipoopera")
->addOrderBy("op.anno","desc")
->addOrderBy("op.numprogressivoanno","asc")
->addOrderBy("op.id","asc");
if(strcmp($title, "") != 0){
$query = $query->andWhere('LOWER(op.titolo) LIKE :title')->setParameter('title', "%$title%");
}
if(!is_null($year)){
$query = $query->andWhere('op.anno = :anno')->setParameter('anno', $year);
}
if(!is_null($npy)){
$query = $query->andWhere('op.numprogressivoanno = :numprogressivoanno')->setParameter('numprogressivoanno', $npy);
}
if(!is_null($tipo_opera)){
$query = $query->andWhere('tipoopera.sigla = :tipoopera')->setParameter('tipoopera', $tipo_opera);
}
if(strcmp($collezione, "") != 0){
$query = $query->andWhere('LOWER(op.collezione) LIKE :collezione')->setParameter('collezione', "%$collezione%");
}
if(strcmp($chiave, "") != 0){
$query = $query->andWhere('LOWER(op.chiavi) LIKE :chiave')->setParameter('chiave', "%$chiave%");
}
$query = $query->distinct("op.id");
$operas_results = $query->getQuery()->getResult();
// Get the multimedia files from the operas id
foreach ($operas_results as $elem){
$current_id = $elem['id'];
$multimedia_repo = $doctrine->getRepository(OperaMultimedia::class);
$multimedia_query = $multimedia_repo->createQueryBuilder("om")
->select("m.widthNormal, m.heightNormal, m.fileref, m.estensione, m.nome, m.tipo, om.cover")
->join("om.opera", "op")
->join("om.multimedia", "m")
->where("op.id = :idopera AND m.tipo = 'image'")->setParameter('idopera', $current_id);
$final_multimedia_query = $multimedia_query->getQuery();
$multimedia_results = $final_multimedia_query->getResult();
/**
* Check if any cover image exists. If at least a cover
* exits then set it as the only output multimedia for the
* opera.
*/
if(count($multimedia_results) > 1){
$cover_found = false;
$cover_key = NULL;
foreach ($multimedia_results as $key => $result){
if($result["cover"]){
$cover_found = true;
$cover_key = $key;
break;
}
}
if($cover_found){
$tmp_cover = $multimedia_results[$cover_key];
unset($multimedia_results);
$multimedia_results = array();
$multimedia_results[0] = $tmp_cover;
}
}
$multimedias_look_up_table[$current_id] = $multimedia_results;
}
// end fetch
// Remove the operas without any multimedia item from the search results
foreach ($multimedias_look_up_table as $key => $value) {
if(empty($value)){
foreach ($operas_results as $operas_key => $operas_values) {
if(strcmp($operas_values["id"], "$key") == 0){
unset($operas_results[$operas_key]);
}
}
}
}
// check the opera's visibility property
foreach ($operas_results as $key => $opera) {
if ($opera["visibile"]){
$visible_operas[$key] = $opera;
}
}
// count the final number of visible operas
$count_results = count($visible_operas);
$msg = "";
if($count_results == 1)
{
$msg = "La tua ricerca ha prodotto 1 risultato";
}else{
$msg = "La tua ricerca ha prodotto " . $count_results . " risultati";
}
$this->addFlash(
'notice',
$msg
);
}else{
// all form fields are empty
$this->addFlash(
"errors",
"Errore: i campi del form sono tutti vuoti."
);
}
}
return $this->render('frontend/opere.search.html.twig', array('form' => $search_form->createView(), 'opere' => $visible_operas, 'multimedias' => $multimedias_look_up_table));
}
#[Route("/archivio-opere/{idopera?}", name: "archivio-opere-scheda")]
// , requirements: {"paginator"="\d+"}
public function opereSingleOpera(Request $request, $idopera): Response
{
$opera = $this->getDoctrine()->getRepository(Opera::class)->find($idopera);
if(!$opera){
throw $this->createNotFoundException('Nessuna opera trovata con id '. $opera);
}
$cover_presence = False;
foreach ($opera->getMultimedias() as $m){
if ($m->getCover())
$cover_presence = True;
}
// foreach ($opera->getIddocumento() as $documento) {
// dd($documento);
// }
/**
* @since 2024-04-27 Vogliamo far apparire anche giornali e pubblicazioni delle mostre collegate [TICKET 8]
*/
$pubblicazioni = $giornali = [];
foreach ($opera->getIdmostra() as $mostra) {
if ($mostra->getIddocumento()) {
foreach ($mostra->getIddocumento() as $pubblicazioneMostra) {
if (!isset($pubblicazioni[$pubblicazioneMostra->getId()])) {
$pubblicazioni[$pubblicazioneMostra->getId()] = $pubblicazioneMostra;
}
}
}
if ($mostra->getIdarticolo()) {
foreach ($mostra->getIdarticolo() as $giornaleMostra) {
if (!isset($giornali[$giornaleMostra->getId()])) {
$giornali[$giornaleMostra->getId()] = $giornaleMostra;
}
}
}
}
# Proviamo ad eliminare i giornali duplicati presenti sia nelle mostre sia nell'opera,
if ($opera->getIdarticolo()) {
foreach ($opera->getIdarticolo() as $giornaleOpera) {
if (!isset($giornali[$giornaleOpera->getId()])) {
$giornali[$giornaleOpera->getId()] = $giornaleOpera;
}
}
}
# Idem per le pubblicazioni
if ($opera->getIddocumento()) {
foreach ($opera->getIddocumento() as $pubblicazioneOpera) {
if (!isset($pubblicazioni[$pubblicazioneOpera->getId()])) {
$pubblicazioni[$pubblicazioneOpera->getId()] = $pubblicazioneOpera;
}
}
}
return $this->render('frontend/opera.html.twig', [
"opera" => $opera,
"cover_presence" => $cover_presence,
'pubblicazioni' => $pubblicazioni,
'giornali' => $giornali
]);
}
#[Route("/opereAjax", name: "opereAjax", methods: ["POST"])]
public function opereAjax(Request $request): Response
{
$selected_operas = $request->get('selected_operas');
$selected_year = $request->get('selected_year');
$selected_sigla = $request->get('selected_sigla');
$opera_repo = $this->getDoctrine()->getRepository(Opera::class);
$query = $opera_repo->createQueryBuilder("op")
->select("op.id AS idopera, op.anno, op.titolo, op.visibile, mt.fileref, mt.estensione, mts.cover, mt.id AS idmultimedia")
->join("op.multimedias", "mts")
->join("mts.multimedia", "mt")
->join("op.idtipoopera", "topera")
->where("mt.tipo = 'image' AND op.id NOT IN (:array_of_ids)")->setParameter("array_of_ids", $selected_operas);
if(!is_null($selected_sigla) && strcmp($selected_sigla, "") != 0){
$query = $query->andWhere("topera.sigla = :top")->setParameter('top', $selected_sigla);
// If the user selects DISEGNI we also want to add COLLAGEs to the results
if(strcmp($selected_sigla, "D") == 0){
$query = $query->andWhere("topera.sigla = :selected OR topera.sigla = :collage")
->setParameter('selected', $selected_sigla)
->setParameter("collage", "L");
}
}
if(!is_null($selected_year) && strcmp($selected_year, "") != 0){
$query = $query->andWhere("op.anno = :anno")->setParameter('anno', $selected_year);
}
$query = $query->addOrderBy("op.anno","desc");
$query = $query->addOrderBy("op.numprogressivoanno","asc");
$query = $query->addOrderBy("op.id","asc");
$new_operas = $query->getQuery()->getResult();
$visible_operas = [];
foreach ($new_operas as $key => $opera) {
if ( $opera["visibile"] ){
$visible_operas[$key] = $opera;
}
}
$remove_duplicated_operas = [];
foreach ($visible_operas as $key => $opera) {
if(!array_key_exists($opera["idopera"], $remove_duplicated_operas)){
$remove_duplicated_operas[$opera["idopera"]] = $visible_operas[$key];
}elseif($opera["cover"]){
$remove_duplicated_operas[$opera["idopera"]] = $visible_operas[$key];
}
if(count($remove_duplicated_operas) == 10){
break;
}
}
$remove_duplicated_operas = array_values($remove_duplicated_operas);
return new JsonResponse(array("opere" => $remove_duplicated_operas));
}
#[Route("/monografie-cataloghi/{iddocumento}/", name: "documentoMonografieCataloghi")]
public function documento(Request $request, ManagerRegistry $doctrine, $iddocumento): Response
{
$document =$doctrine->getRepository(Documento::class)->find($iddocumento);
if(!$document){
throw $this->createNotFoundException('Nessuna documento trovato con id ' . $iddocumento);
}
return $this->render('frontend/monografiecataloghi.documento.html.twig',
array(
"document" => $document
));
}
#[Route("/altro/{idaltro}", name: "altroSingleElement")]
public function altroSingleElement(Request $request, ManagerRegistry $doctrine, $idaltro): Response
{
$altro = $doctrine->getRepository(Altro::class)->find($idaltro);
if(!$altro){
throw $this->createNotFoundException('Nessuna elemento trovato con id ' . $altro);
}
return $this->render('frontend/altro.singleelement.html.twig',
array(
"titolo" => $altro->getTitle(),
"altro" => $altro
));
}
#[Route("/emeroteca/{idarticle}/", name: "emerotecaArticle")]
public function emerotecaArticle(Request $request, $idarticle): Response
{
$article = $this->getDoctrine()->getRepository(Articolo::class)->find($idarticle);
if(!$article){
throw $this->createNotFoundException('Nessuna articolo trovato con id '. $idarticle);
}
return $this->render('frontend/emeroteca.articolo.html.twig',
array(
'article' => $article
));
}
#[Route("/archivio-mostre/{idmostra?}", name: "showMostra")]
public function showMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if (!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
$cover_presence = [];
foreach ($visible_operas as $opera){
$id_opera = $opera->getId();
foreach ($opera->getMultimedias() as $m ){
if ($m->getCover())
$cover_presence[$id_opera] = True;
}
if(!array_key_exists($id_opera, $cover_presence))
$cover_presence[$id_opera] = False;
}
return $this->render(
'frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"cover_presence" => $cover_presence,
"mostra" => $mostra,
"opere" => $visible_operas,
"cat" => "opere",
'isArchivio' => true
)
);
}
#[Route("/archivio-mostre/{idmostra?}/opere", name: "opereMostra")]
public function opereMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
$cover_presence = [];
foreach ($visible_operas as $opera){
$id_opera = $opera->getId();
foreach ($opera->getMultimedias() as $m ){
if ($m->getCover())
$cover_presence[$id_opera] = True;
}
if(!array_key_exists($id_opera, $cover_presence))
$cover_presence[$id_opera] = False;
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"cover_presence" => $cover_presence,
"mostra" => $mostra,
"opere" => $visible_operas,
"cat" => "opere",
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/allestimento", name: "allestimentoMostra")]
public function allestimentoMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
$allestimento = [];
foreach ($mostra->getMultimedias() as $multimedia) {
if ($multimedia->getTipo() != 'allestimento') {
continue;
}
$allestimento[] = $multimedia->getMultimedia();
}
usort($allestimento, function($a, $b) {
return strnatcmp($a->getNome(), $b->getNome());
});
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "allestimento",
'allestimento' => $allestimento,
'opere' => $visible_operas,
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/vernice", name: "verniceMostra")]
public function verniceMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $this->getDoctrine()->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "vernice",
'opere' => $visible_operas,
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/video", name: "videoMostra")]
public function videoMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "video",
'opere' => $visibile_operas,
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/manifesto", name: "manifestoMostra")]
public function manifestoMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "manifesto",
'opere' => $visible_operas,
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/brochure", name: "brochureMostra")]
public function brochureMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "brochure",
'opere' => $visible_operas,
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/altro", name: "altroMostra")]
public function altroMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "altro",
'opere' => $visible_operas,
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/pubblicazioni", name: "pubblicazioniMostra")]
public function pubblicazioniMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "pubblicazioni",
'opere' => $visible_operas,
'isArchivio' => true
));
}
#[Route("/archivio-mostre/{idmostra?}/giornali", name: "giornaliMostra")]
public function giornaliMostra(Request $request, ManagerRegistry $doctrine, $idmostra): Response
{
$mostra = $doctrine->getRepository(Mostra::class)->find($idmostra);
if(!$mostra){
throw $this->createNotFoundException('Nessuna mostra trovata con id '.$idmostra);
}
$visible_operas = [];
foreach ($mostra->getIdopera() as $key => $opera) {
if ( $opera->getVisibile() ){
$visible_operas[$key] = $opera;
}
}
return $this->render('frontend/mostra.commonattachments.html.twig',
array(
"titolo" => $mostra->getNome(),
"mostra" => $mostra,
"cat" => "giornali",
'opere' => $visible_operas,
'isArchivio' => true
));
}
#[Route("/privacy-and-cookies-policy", name: "privacyAndCookiesPolicy")]
public function privacyAndCookiesPolicy(Request $request): Response
{
return $this->render('frontend/policy.html.twig');
}
#[Route("/setup/cookie/", name: "setupCookie")]
public function setupCookieAction(Request $request){
$cookie = new Cookie('privacyAndCookiesPolicy', 'accepted', time() + ( 2 * 365 * 24 * 60 * 60));
$res = new Response();
$res->headers->setCookie($cookie);
$res->send();
$status = array("success"=>"true");
return new JsonResponse($status);
}
}