src/Controller/BookletsController.php line 210

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\ClassTheatre\asides;
  4. use App\ClassTheatre\TheatreController;
  5. use App\Exception\RedirectException;
  6. use App\Service\Date_time;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. use TheatreCore\Entity\Files;
  12. class BookletsController extends TheatreController
  13. {
  14.     // l'objet fichier
  15.     protected $files;
  16.     // asides
  17.     protected $asides  "";
  18.     // asides
  19.     protected $asides_top  "";
  20.     // version de la carte
  21.     protected $carte_version 'svg';
  22.     // {{{ _construct()
  23.     /** constructeur hérité
  24.      *
  25.      */
  26.     public function __construct(EntityManagerInterface $emTranslatorInterface $translatorTokenStorageInterface $tokenStorage)
  27.     {
  28.         // load new aside
  29.         $this->asides = new asides();
  30.         $GLOBALS['rub_courante'] = 'contacts';
  31.         $this->em $em;
  32.         // hérite du constructeur parent
  33.         parent::__construct($translator$tokenStorage);
  34.         //asides
  35.         $this->asides = new asides();
  36.         $this->asides_top = new asides();
  37.         $this->files $em->getRepository(Files::class);
  38.         $this->getCarteVersion();
  39.     }
  40.     // }}}
  41.     // {{{ finalizeAction()
  42.     /** Après l'action, construit le titre de page et le fil d'arianne
  43.      *
  44.      *
  45.      * @access protected
  46.      * @return void
  47.      */
  48.     protected function finalizeAction()
  49.     {
  50.         // charge l'aside à la vue,
  51.         $this->view->aside $this->asides->view($this->view);
  52.         $this->view->aside_top $this->asides_top->view($this->view);
  53.     }
  54.     // }}}
  55.     // {{{ action_programmes
  56.     /** les programmes
  57.      *
  58.      * @Route("/contacts/archives/programmes/area/{p_area}", name="booklets_programmes_area")
  59.      * @Route("/contacts/archives/programmes/idtypestructure/{p_idtypestructure}", name="booklets_programmes_idtypestructure")
  60.      *
  61.      */
  62.     public function action_programmes($p_area null$p_idtypestructure null)
  63.     {
  64.         $this->context['action'] = $this->view->action 'programmes';
  65.         $this->context['params']['area'] = $p_area;
  66.         $this->context['params']['idtypestructure'] = $p_idtypestructure;
  67.         $this->context['view']->menu_typestructures = array(
  68.             'TN' => array('name' => 'Théâtres nationaux''direction' => true),
  69.             'CDN' => array('name' => 'Centres dramatiques''direction' => true),
  70.             'SN' => array('name' => 'Scènes nationales''direction' => true),
  71.             'all' => array('name' => 'Derniers programmes'),
  72.             'FT' => array('name' => 'Festivals'),
  73.         );
  74.         //menu en dehors des régions
  75.         $voir_aussi_PDF = array(
  76.             array(
  77.                 'name' => 'Des théâtres nationaux',
  78.                 'url' => '/contacts/archives/programmes/idtypestructure/TN'
  79.             ),
  80.             array(
  81.                 'name' => 'Des centres dramatiques',
  82.                 'url' => '/contacts/archives/programmes/idtypestructure/CDN'
  83.             ),
  84.             array(
  85.                 'name' => 'Des scènes nationales',
  86.                 'url' => '/contacts/archives/programmes/idtypestructure/SN'
  87.             ),
  88.         );
  89.         //pour les régions
  90.         $recherche_dans_region = array(
  91.             '' => array('name' => 'Une structure''url' => '/contacts''key_url' => 'null' ),
  92.             'TN' => array('name' => 'Les théâthres nationaux''key_url' => 'TN' ),
  93.             'CDN' => array('name' => 'Les centres dramatiques''key_url' => 'CDN' ),
  94.             'SN' => array('name' => 'Les scènes nationales''key_url' => 'SN' ),
  95.         );
  96.         //on supprime les théâtres nationaux partout sauf dans les régins 1 et 8
  97.         if(isset($area) && !in_array($area, [1,8])){
  98.             unset($recherche_dans_region['TN']);
  99.         }
  100.         if(empty($this->context['params']['idtypestructure'])
  101.             || !array_key_exists($this->context['params']['idtypestructure'], $this->context['view']->menu_typestructures)) {
  102.             $idtypestructure 'all';
  103.         } else {
  104.             $idtypestructure $this->context['params']['idtypestructure'];
  105.         }
  106.         if(!empty($this->context['view']->menu_typestructures[$idtypestructure]['direction'])) {
  107.             $this->context['view']->with_link_directeur true;
  108.         }
  109.         $this->context['view']->idtypestructure $idtypestructure;
  110.         $this->context['view']->idtypestructure_title $this->context['view']->menu_typestructures[$idtypestructure]['name'];
  111.         $this->context['view']->saison Date_time::getSaisonParam();
  112.         if(empty($this->context['view']->saison)) {
  113.             $this->context['view']->saisons = array(
  114.                 Date_time::getLastSaison(),
  115.                 Date_time::getNextSaison(Date_time::getLastSaison()),
  116.             );
  117.         } else {
  118.             $this->context['view']->saisons = array($this->context['view']->saison);
  119.         }
  120.         $params_sql = array(
  121.             'limit' => array(0,200),
  122.             'order' => array('contacts.`organisation`'),
  123.             'direction' => 'ASC',
  124.             'saison' => $this->context['view']->saisons,
  125.             'idclassification' => array(112),
  126.             'dbg' => array('list_file','Liste des programmes')
  127.         );
  128.         // une région en particulier ?
  129.         if(!empty($this->context['params']['area']) &&
  130.             ($this->files->my_is_int($this->context['params']['area']) || strlen($this->context['params']['area'])==2)) {
  131.             $area $this->context['params']['area'];
  132.             $this->context['view']->area_view 'area/'.$area.'/';
  133.             // recherche dans la région
  134.             $params_sql['area']= $area;
  135.             if($this->files->my_is_int($area)) {
  136.                 $this->context['view']->region_name $this->em->getRepository('TheatreCore\Entity\\'.$this->getCarteVersion())->getRegionName($area); // nom de la région
  137.             } else {
  138.                 $this->context['view']->country_name $this->em->getRepository('TheatreCore\Entity\\'.$this->getCarteVersion())->getNameCountry($area); // nom de la région
  139.             }
  140.             // pas de recherche par type de structure dans ce cas
  141.             unset($this->context['view']->idtypestructure_title);
  142.             foreach($this->context['view']->menu_typestructures as $k=>$v) {
  143.                 $this->context['view']->menu_typestructures[$k]['active'] = '';
  144.             }
  145.         } else {
  146.             $area null;
  147.             $this->context['view']->area_view '';
  148.             if($idtypestructure!='all') {
  149.                 unset($this->context['view']->idtypestructure_title);
  150.                 $params_sql['idtypestructure'] = $idtypestructure;
  151.                 $this->context['view']->structure_name $this->context['view']->menu_typestructures[$idtypestructure]['name'];
  152.             } elseif($idtypestructure=='all') {
  153.                 //$params_sql['exclude_idtypestructure'] = array('SN','TN','CDN','FT');
  154.             }
  155.         }
  156.             $this->context['view']->programmes $this->files->getListFiles($params_sql,array(),array('group_by_saison' => true));
  157.             if (!$this->context['view']->programmes) {
  158.                 throw new RedirectException($this->generateUrl('erreur_type', ['type' => 'introuvable']));
  159.             }
  160.         if(!empty($this->context['view']->programmes)) {
  161.             krsort($this->context['view']->programmes);
  162.         }
  163.         // ajouter masonery
  164.         $this->context['view']->js_more[] = 'jquery.masonry.min.js';
  165.         $this->context['view']->use_addthis true;
  166.         // trouver les saisons
  167.         $saisons $this->getListSeasonsYears($this->files->getSaisons(array('start_at' => '2013-09-01')));
  168.         if(!empty($saisons)) {
  169.             krsort($saisons['saisons']);
  170.         }
  171.         $this->getCommonSearch([
  172.             'saisons_annees' => [
  173.                 'saisons' => $saisons['saisons']
  174.             ]
  175.         ]);
  176.         $this->getCommonSearchView();
  177.         $with_link_directeur = array(
  178.             array(
  179.                 'name' => 'Tous les spectacles à l\'affiche',
  180.                 'key_url' => '/spectacles/liste/structures?idtypestructure={v_idtypestructure}'
  181.             ),
  182.         );
  183.         if(isset($area) && !empty($area)){
  184.             //asides_top
  185.             $this->asides_top->load(['aside_top' => array(
  186.                 'php' => array(
  187.                     'method' => 'asidesUrlRegions'
  188.                 )
  189.             )]);
  190.             //asides
  191.             $this->asides->load(['url_lists_alone,recherche_dans_region' => array(
  192.                 'php' => [
  193.                     'method' => 'asidesUrlLists',
  194.                     'urls' => $recherche_dans_region,
  195.                     'url' => '/contacts/generate_params',
  196.                     'params' => array(
  197.                         'activate' => (isset($idtypestructure)) ? $idtypestructure 'null',
  198.                     ),
  199.                     'structure' => array(
  200.                         'structure_classic' => array(
  201.                             'area' => (isset($area)) ? $area null,
  202.                             'idtypestructure' => 'key_url'
  203.                         )
  204.                     )
  205.                 ],
  206.                 'title' => 'Rechercher'
  207.             )]);
  208.         }
  209.         if(isset($idtypestructure) && $idtypestructure!='all'){
  210.             $this->asides_top->load(['aside_top' => array(
  211.                 'php' => array(
  212.                     'method' => 'asidesUrlListsMenuCDN'
  213.                 )
  214.             )
  215.             ]);
  216.         }
  217.         if(isset($area) && empty($area)){
  218.             $this->asides->load(['url_lists' => array(
  219.                 'exec' => array(
  220.                     'htmlstart' => true
  221.                 ),
  222.                 'php' => array(
  223.                     'method' => 'asidesUrlLists',
  224.                     'urls' => $this->context['view']->menu_typestructures,
  225.                     'url' => '/contacts/archives/programmes/idtypestructure/key_structure',
  226.                     'params' => array(
  227.                         'key_structure' => 'auto_key'
  228.                     )
  229.                 ),
  230.                 'title' => 'Voir'
  231.             )]);
  232.         }
  233.         else{
  234.             $this->asides->load(['url_lists' => array(
  235.                 'exec' => array(
  236.                     'htmlstart' => true
  237.                 ),
  238.                 'php' => array(
  239.                     'method' => 'asidesUrlLists',
  240.                     'urls' => array(
  241.                         'TP' => array('name' => 'Tous les programmes''key' => 'TP'),
  242.                     ),
  243.                     'url' => '/contacts/archives/programmes/idtypestructure/all/generate_params',
  244.                     'params' => array(
  245.                         'activate' => (count($this->context['view']->saisons) == 2) ? 'TP' null
  246.                     ),
  247.                     'structure' => array(
  248.                         'area' => $area
  249.                     )
  250.                 ),
  251.                 'title' => 'Programme en PDF'
  252.             )]);
  253.         }
  254.         $this->asides->load(['par_saison' => array(
  255.             'exec' => array(
  256.                 'htmlend' => true
  257.             ),
  258.             'php' => array(
  259.                 'url' => '/contacts/archives/programmes/idtypestructure/generate_params/',
  260.                 'method' => 'asidesUrlsForms',
  261.                 'params' => array(
  262.                     'key_structure' => 'auto_key',
  263.                     'key_area' => $area
  264.                 )
  265.             ),
  266.             'title' => 'Recherche par période'
  267.         )]);
  268.         $this->asides->load(['common_carte' => array(
  269.             'url' => '/contacts/archives/programmes/area/get_id/'
  270.         )]);
  271.         if(isset($area) && !empty($area)){
  272.             $this->asides->load(['url_lists_alone,tn_cdn_sn' => array(
  273.                 'php' => [
  274.                     'method' => 'tn_cdn_sn',
  275.                     'url' => '/contacts/generate_params',
  276.                     'params' => array(
  277.                         'activate' => $idtypestructure,
  278.                         'key_area' => $area
  279.                     ),
  280.                     'structure' => array(
  281.                         'structure_classic' => array(
  282.                             'area' => 'key_area',
  283.                             'idtypestructure' => 'key_structure',
  284.                         )
  285.                     )
  286.                 ],
  287.                 'title' => 'Voir'
  288.             )]);
  289.         }
  290.         // $this->asides->load(['url_lists_alone,voir_aussi' => array(
  291.         //     'php' => array(
  292.         //         'method' => 'asidesUrlLists',
  293.         //         'urls' => $with_link_directeur,
  294.         //         'url' => 'key_url',
  295.         //         'params' => array(
  296.         //             'key_structure' => 'auto_key',
  297.         //         )
  298.         //     ),
  299.         //     'title' => 'Voir aussi'
  300.         // )]);
  301.         $this->asides->load(['url_lists_alone,voir_aussi_PDF'=> array(
  302.             'php' => array(
  303.                 'method' => 'asidesUrlLists',
  304.                 'urls' => $voir_aussi_PDF,
  305.             ),
  306.             'title' => 'Voir aussi',
  307.             'subtitle' => 'Les programmes en PDF'
  308.         )]);
  309.         $this->asides->load(['common_participer' => array(
  310.             'php' => array(
  311.                 'method' => 'asidesUrlLists_Ajoutez',
  312.                 'loadcustom' => array(
  313.                     'spectacle' => array(
  314.                         'name' => 'lié à une structure',
  315.                         'url' => '/contacts/documents/documents-ajout/'
  316.                     )
  317.                 )
  318.             )
  319.         )]);
  320.         return $this->view('contacts/programmes.html.twig');
  321.     }
  322.     // }}}
  323.     // {{{ action_xml_programmes
  324.     /** les régions en XML
  325.      *
  326.      */
  327.     public function action_xml_programmes() { $this->getCommonXmlCarte(); }
  328.     // }}}
  329. }