<?php
namespace App\Controller;
use App\ClassTheatre\asides;
use App\ClassTheatre\TheatreController;
use App\Exception\RedirectException;
use App\Service\Date_time;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use TheatreCore\Entity\Files;
class BookletsController extends TheatreController
{
// l'objet fichier
protected $files;
// asides
protected $asides = "";
// asides
protected $asides_top = "";
// version de la carte
protected $carte_version = 'svg';
// {{{ _construct()
/** constructeur hérité
*
*/
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator, TokenStorageInterface $tokenStorage)
{
// load new aside
$this->asides = new asides();
$GLOBALS['rub_courante'] = 'contacts';
$this->em = $em;
// hérite du constructeur parent
parent::__construct($translator, $tokenStorage);
//asides
$this->asides = new asides();
$this->asides_top = new asides();
$this->files = $em->getRepository(Files::class);
$this->getCarteVersion();
}
// }}}
// {{{ finalizeAction()
/** Après l'action, construit le titre de page et le fil d'arianne
*
*
* @access protected
* @return void
*/
protected function finalizeAction()
{
// charge l'aside à la vue,
$this->view->aside = $this->asides->view($this->view);
$this->view->aside_top = $this->asides_top->view($this->view);
}
// }}}
// {{{ action_programmes
/** les programmes
*
* @Route("/contacts/archives/programmes/area/{p_area}", name="booklets_programmes_area")
* @Route("/contacts/archives/programmes/idtypestructure/{p_idtypestructure}", name="booklets_programmes_idtypestructure")
*
*/
public function action_programmes($p_area = null, $p_idtypestructure = null)
{
$this->context['action'] = $this->view->action = 'programmes';
$this->context['params']['area'] = $p_area;
$this->context['params']['idtypestructure'] = $p_idtypestructure;
$this->context['view']->menu_typestructures = array(
'TN' => array('name' => 'Théâtres nationaux', 'direction' => true),
'CDN' => array('name' => 'Centres dramatiques', 'direction' => true),
'SN' => array('name' => 'Scènes nationales', 'direction' => true),
'all' => array('name' => 'Derniers programmes'),
'FT' => array('name' => 'Festivals'),
);
//menu en dehors des régions
$voir_aussi_PDF = array(
array(
'name' => 'Des théâtres nationaux',
'url' => '/contacts/archives/programmes/idtypestructure/TN'
),
array(
'name' => 'Des centres dramatiques',
'url' => '/contacts/archives/programmes/idtypestructure/CDN'
),
array(
'name' => 'Des scènes nationales',
'url' => '/contacts/archives/programmes/idtypestructure/SN'
),
);
//pour les régions
$recherche_dans_region = array(
'' => array('name' => 'Une structure', 'url' => '/contacts', 'key_url' => 'null' ),
'TN' => array('name' => 'Les théâthres nationaux', 'key_url' => 'TN' ),
'CDN' => array('name' => 'Les centres dramatiques', 'key_url' => 'CDN' ),
'SN' => array('name' => 'Les scènes nationales', 'key_url' => 'SN' ),
);
//on supprime les théâtres nationaux partout sauf dans les régins 1 et 8
if(isset($area) && !in_array($area, [1,8])){
unset($recherche_dans_region['TN']);
}
if(empty($this->context['params']['idtypestructure'])
|| !array_key_exists($this->context['params']['idtypestructure'], $this->context['view']->menu_typestructures)) {
$idtypestructure = 'all';
} else {
$idtypestructure = $this->context['params']['idtypestructure'];
}
if(!empty($this->context['view']->menu_typestructures[$idtypestructure]['direction'])) {
$this->context['view']->with_link_directeur = true;
}
$this->context['view']->idtypestructure = $idtypestructure;
$this->context['view']->idtypestructure_title = $this->context['view']->menu_typestructures[$idtypestructure]['name'];
$this->context['view']->saison = Date_time::getSaisonParam();
if(empty($this->context['view']->saison)) {
$this->context['view']->saisons = array(
Date_time::getLastSaison(),
Date_time::getNextSaison(Date_time::getLastSaison()),
);
} else {
$this->context['view']->saisons = array($this->context['view']->saison);
}
$params_sql = array(
'limit' => array(0,200),
'order' => array('contacts.`organisation`'),
'direction' => 'ASC',
'saison' => $this->context['view']->saisons,
'idclassification' => array(112),
'dbg' => array('list_file','Liste des programmes')
);
// une région en particulier ?
if(!empty($this->context['params']['area']) &&
($this->files->my_is_int($this->context['params']['area']) || strlen($this->context['params']['area'])==2)) {
$area = $this->context['params']['area'];
$this->context['view']->area_view = 'area/'.$area.'/';
// recherche dans la région
$params_sql['area']= $area;
if($this->files->my_is_int($area)) {
$this->context['view']->region_name = $this->em->getRepository('TheatreCore\Entity\\'.$this->getCarteVersion())->getRegionName($area); // nom de la région
} else {
$this->context['view']->country_name = $this->em->getRepository('TheatreCore\Entity\\'.$this->getCarteVersion())->getNameCountry($area); // nom de la région
}
// pas de recherche par type de structure dans ce cas
unset($this->context['view']->idtypestructure_title);
foreach($this->context['view']->menu_typestructures as $k=>$v) {
$this->context['view']->menu_typestructures[$k]['active'] = '';
}
} else {
$area = null;
$this->context['view']->area_view = '';
if($idtypestructure!='all') {
unset($this->context['view']->idtypestructure_title);
$params_sql['idtypestructure'] = $idtypestructure;
$this->context['view']->structure_name = $this->context['view']->menu_typestructures[$idtypestructure]['name'];
} elseif($idtypestructure=='all') {
//$params_sql['exclude_idtypestructure'] = array('SN','TN','CDN','FT');
}
}
$this->context['view']->programmes = $this->files->getListFiles($params_sql,array(),array('group_by_saison' => true));
if (!$this->context['view']->programmes) {
throw new RedirectException($this->generateUrl('erreur_type', ['type' => 'introuvable']));
}
if(!empty($this->context['view']->programmes)) {
krsort($this->context['view']->programmes);
}
// ajouter masonery
$this->context['view']->js_more[] = 'jquery.masonry.min.js';
$this->context['view']->use_addthis = true;
// trouver les saisons
$saisons = $this->getListSeasonsYears($this->files->getSaisons(array('start_at' => '2013-09-01')));
if(!empty($saisons)) {
krsort($saisons['saisons']);
}
$this->getCommonSearch([
'saisons_annees' => [
'saisons' => $saisons['saisons']
]
]);
$this->getCommonSearchView();
$with_link_directeur = array(
array(
'name' => 'Tous les spectacles à l\'affiche',
'key_url' => '/spectacles/liste/structures?idtypestructure={v_idtypestructure}'
),
);
if(isset($area) && !empty($area)){
//asides_top
$this->asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlRegions'
)
)]);
//asides
$this->asides->load(['url_lists_alone,recherche_dans_region' => array(
'php' => [
'method' => 'asidesUrlLists',
'urls' => $recherche_dans_region,
'url' => '/contacts/generate_params',
'params' => array(
'activate' => (isset($idtypestructure)) ? $idtypestructure : 'null',
),
'structure' => array(
'structure_classic' => array(
'area' => (isset($area)) ? $area : null,
'idtypestructure' => 'key_url'
)
)
],
'title' => 'Rechercher'
)]);
}
if(isset($idtypestructure) && $idtypestructure!='all'){
$this->asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlListsMenuCDN'
)
)
]);
}
if(isset($area) && empty($area)){
$this->asides->load(['url_lists' => array(
'exec' => array(
'htmlstart' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $this->context['view']->menu_typestructures,
'url' => '/contacts/archives/programmes/idtypestructure/key_structure',
'params' => array(
'key_structure' => 'auto_key'
)
),
'title' => 'Voir'
)]);
}
else{
$this->asides->load(['url_lists' => array(
'exec' => array(
'htmlstart' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => array(
'TP' => array('name' => 'Tous les programmes', 'key' => 'TP'),
),
'url' => '/contacts/archives/programmes/idtypestructure/all/generate_params',
'params' => array(
'activate' => (count($this->context['view']->saisons) == 2) ? 'TP' : null
),
'structure' => array(
'area' => $area
)
),
'title' => 'Programme en PDF'
)]);
}
$this->asides->load(['par_saison' => array(
'exec' => array(
'htmlend' => true
),
'php' => array(
'url' => '/contacts/archives/programmes/idtypestructure/generate_params/',
'method' => 'asidesUrlsForms',
'params' => array(
'key_structure' => 'auto_key',
'key_area' => $area
)
),
'title' => 'Recherche par période'
)]);
$this->asides->load(['common_carte' => array(
'url' => '/contacts/archives/programmes/area/get_id/'
)]);
if(isset($area) && !empty($area)){
$this->asides->load(['url_lists_alone,tn_cdn_sn' => array(
'php' => [
'method' => 'tn_cdn_sn',
'url' => '/contacts/generate_params',
'params' => array(
'activate' => $idtypestructure,
'key_area' => $area
),
'structure' => array(
'structure_classic' => array(
'area' => 'key_area',
'idtypestructure' => 'key_structure',
)
)
],
'title' => 'Voir'
)]);
}
// $this->asides->load(['url_lists_alone,voir_aussi' => array(
// 'php' => array(
// 'method' => 'asidesUrlLists',
// 'urls' => $with_link_directeur,
// 'url' => 'key_url',
// 'params' => array(
// 'key_structure' => 'auto_key',
// )
// ),
// 'title' => 'Voir aussi'
// )]);
$this->asides->load(['url_lists_alone,voir_aussi_PDF'=> array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $voir_aussi_PDF,
),
'title' => 'Voir aussi',
'subtitle' => 'Les programmes en PDF'
)]);
$this->asides->load(['common_participer' => array(
'php' => array(
'method' => 'asidesUrlLists_Ajoutez',
'loadcustom' => array(
'spectacle' => array(
'name' => 'lié à une structure',
'url' => '/contacts/documents/documents-ajout/'
)
)
)
)]);
return $this->view('contacts/programmes.html.twig');
}
// }}}
// {{{ action_xml_programmes
/** les régions en XML
*
*/
public function action_xml_programmes() { $this->getCommonXmlCarte(); }
// }}}
}