<?php
namespace App\Controller;
use App\ClassTheatre\aside\asidesUrlPagination;
use App\ClassTheatre\asides;
use App\ClassTheatre\TheatreController;
use App\Service\Abonnements\Abonnements;
use App\Service\Date_time;
use App\Service\Functions;
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\Contents;
use TheatreCore\Entity\Multimedias;
use TheatreCore\Entity\Persons;
use TheatreCore\Entity\Spectacles;
use TheatreCore\Entity\Texts;
use TheatreCore\Entity\Typesstructures;
class EducController extends TheatreController
{
// l'objet spectacle
protected $spectacles;
// l'objet texts
protected $texts;
// ids de spectacles educ
protected $ids_spectacle_educ;
// ids de spectacles piece demontee
protected $ids_spectacle_piece_demontee;
// ids de spectacles avignon
protected $ids_spectacle_avignon;
// ids de spectacles minute pedagogique
protected $ids_spectacle_minute_pedagogique;
// ids de spectacles theatre en acte
protected $ids_spectacle_theatre_en_acte;
// ids de textes educ
protected $ids_text_educ;
// ids de textes educ
protected $ids_text_theatre_en_acte;
// résultat par page
protected $perPage = 30;
// version de la carte
protected $carte_version = 'svg';
// précision fil d'arianne
protected $locate = null;
// aside
protected $asides = "";
// {{{ _construct()
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator, TokenStorageInterface $tokenStorage, Functions $function, Abonnements $abonnements)
{
parent::__construct($translator, $tokenStorage);
$GLOBALS['rub_courante'] = 'educ';
$this->context['controller'] = $this->view->controller = 'educ';
$this->view->area = '';
$this->em = $em;
$this->function = $function;
$this->spectacles = $em->getRepository(Spectacles::class);
$this->asides = new asides();
$this->getCarteVersion();
$this->serviceAbonnements = $abonnements;
}
// }}}
// {{{ finalizeAction()
/** Code exécuté après chaque action
*
*
* @access protected
* @return void
*/
protected function finalizeAction()
{
if (preg_match("/theatre-en-acte/i", $this->view->action)) {
$this->buildMenuEduc();
}
else{
$this->buildMenu();
}
// aside
$this->view->aside = $this->asides->view($this->view);
// fil d'arianne
$this->view->locate = $this->getLocate();
}
// }}}
public function buildMenuEduc()
{
$this->context['view']->menu_theatreenacte = array(
'theatre-en-acte-accueil' => array('name' => 'Accueil'),
'theatre-en-acte-presentation' => array('name' => 'Présentation'),
'theatre-en-acte-auteurs' => array('name' => 'Auteurs'),
'theatre-en-acte-textes' => array('name' => 'Textes'),
'theatre-en-acte-enscene' => array('name' => 'En scène'),
'theatre-en-acte-preparation' => array('name' => 'En préparation'),
);
foreach($this->context['view']->menu_theatreenacte as $k=>$v) {
if($k==$this->context['action']) {
$this->context['view']->menu_theatreenacte[$k]['active'] = 'on';
}
}
}
public function buildMenu()
{
$this->context['view']->menu_piecedemontee = array(
'piece-demontee' => array('name' => 'Auteurs'),
'piece-demontee-spectacle' => array('name' => 'Spectacles'),
'piece-demontee-metteurs' => array('name' => 'Metteurs en scène'),
'piece-demontee-bientot' => array('name' => 'En préparation'),
);
foreach($this->context['view']->menu_piecedemontee as $k=>$v) {
if($k==$this->context['action']) {
$this->context['view']->menu_piecedemontee[$k]['active'] = 'on';
}
}
}
// {{{ action_view()
/** Présentation
*
* @Route("/educ/", name="educ_view")
*
*/
public function action_view()
{
$this->context['action'] = $this->view->action = 'view';
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
0 => 'Présentation'
);
$this->title_page = 'Présentation du projet Éduc';
return $this->view('educ/view.html.twig');
}
// }}}
// {{{ action_spectacles()
/** Spectacles bénéficiants d'un contenu éduc
*
* @Route("/educ/spectacles", name="educ_spectacles")
* @Route("/educ/spectacles/area/{p_area}", name="educ_spectacles_area")
* @Route("/educ/spectacles/type/{p_type}/area/{p_area}", name="educ_spectacles_area_type")
* @Route("/educ/spectacles/type/{p_type}", name="educ_spectacles_type")
*
*/
public function action_spectacles($p_type = null, $p_area = null)
{
$this->context['params']['area'] = $p_area;
$this->context['params']['type'] = $p_type;
$this->context['action'] = $this->view->action = 'spectacles';
//le menu pour l'aside
$spec_affiche = array(
'prochains' => array(
'name' => 'Spectacles à venir',
'key_filtre' => 'prochains'
),
'tous' => array(
'name' => 'Tous les spectacles',
'key_filtre' => 'tous'
)
);
// Condition pour afficher le titre
if(!empty($this->context['params']['type']) && $this->context['params']['type'] == 'prochains'){
$this->context['view']->prochains_spec = true;
}
else{
$this->context['view']->tous_spec = true;
}
//paramètre par défault pour la pagination
$params = array('perPage' => array('limit' => 20, 'url_custom' => '/educ/spectacles/'));
//on récupère le choix de l'utilisateur
if(!empty($this->context['params']['type']) && !empty($spec_affiche[$this->context['params']['type']])) {
$this->context['view']->type_spectacle = $this->context['params']['type'];
} else {
$this->context['view']->type_spectacle = 'tous';
}
//on applique un filtre
$params['get_date_creation'] = true; //on récupère les dates de créations
$params['tri_date_creation'] = true; //on tri par dates de créations
$this->context['view']->noshow = false;
if($this->context['view']->type_spectacle == 'prochains'){
$params['prochains'] = 720; //on récupère les spectacles dans les prochains 720 jours
$params['get_date_creation'] = false; //on désactive les dates de créations
$params['tri_date_creation'] = false; //on désactive le tri par dates de créations
}
//on récupère les spectacles
$this->getActionSpectaclesClassification(
$this->getListSpectaclesEduc(),
'educ',
null,
false,
false,
$params //on applique les filtres
);
if(!empty($this->context['view']->idtypestructure)){
$this->context['view']->custom_menu_structure = true;
$this->context['view']->custom_aside_top = true;
$asides_top = new asides();
$asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlListsMenuCDN',
)
)
]);
$this->context['view']->aside_top = $asides_top->view($this->context['view']);
}
else if(!empty($this->context['view']->area)){
$this->context['view']->custom_menu_area = true;
$this->context['view']->custom_aside_top = true;
$asides_top = new asides();
$asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlRegions',
)
)
]);
$this->context['view']->aside_top = $asides_top->view($this->context['view']);
}
foreach($this->context['view']->spectacles as $k=>$v) {
$this->context['view']->spectacles[$k]['footer_contact'] = true;
$this->context['view']->spectacles[$v['idspectacle']]['carrer'] = $this->spectacles->getObjectsCarrerDetails($v['idspectacle']);
if(!empty($params['get_date_creation'])){
$this->context['view']->spectacles[$v['idspectacle']]['display']['affiche_date_creation'] = true;
if((!empty($v['creation_date']))){
$this->context['view']->spectacles[$v['idspectacle']]['annee_creation'] = $this->em->getRepository(Spectacles::class)->getFormeDate($v['creation_date'], '%Y', true); //%a %d/%m/%Y
}
unset($this->context['view']->spectacles[$v['idspectacle']]['contact']);
}
}
$this->asides->load(['url_lists'=> array(
'exec' => [
'htmlstart' => true,
'htmlend' => ($this->context['view']->type_spectacle == 'prochains') ? true : false
],
'title' => html_entity_decode('À l\'affiche'),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $spec_affiche,
'url' => '/educ/spectacles/type/key_filtre/area/key_area/generate_params',
'params' => array(
'activate' => $this->context['view']->type_spectacle,
'key_area' => $this->context['view']->area,
),
'structure' => array(
'structure_classic' => array(
'idtypestructure' => 'v_idtypestructure'
)
)
)
)]);
if($this->context['view']->type_spectacle != 'prochains'){
$this->asides->load(['par_saison' => array(
'exec' => ['htmlend' => true],
'php' => array(
'url' => '/educ/spectacles/generate_params',
'method' => 'asidesUrlListsForms',
'structure' => array(
'type' => $this->context['view']->type_spectacle,
'area' => $this->context['view']->area,
'structure_classic' => array(
's' => 'v_saison',
)
)
),
'title' => 'Recherche par période'
)]);
}
$this->asides->load(['url_lists_alone,tn_cdn_sn' => array(
'php' => [
'method' => 'tn_cdn_sn',
'url' => '/educ/spectacles/generate_params',
'params' => array(
'activate' => (isset($this->context['view']->idtypestructure)) ? $this->context['view']->idtypestructure : 'ALL'
),
'structure' => array(
'type' => $this->context['view']->type_spectacle,
'area' => $this->context['view']->area,
'structure_classic' => array(
'd' => 'v_days',
'type' => 'v_type',
's' => 'v_saison',
'y' => 'v_year',
'dateend' => 'v_dateend',
'datestart' => 'v_datestart',
'idtypestructure' => 'key_structure'
)
)
],
'title' => 'Voir dans'
)]);
$this->asides->load(['common_carrer_informations' => [
'color' => 'educ'
]]);
//Chargement de la pub par région
asides::setEntityManager($this->em);
asides::loadaside('Publicite')->addWithRegion($this->asides, ['region' => $this->context['view']->area]); //$this->area
$this->asides->load(['common_carte' => array(
'url' => '/educ/spectacles/area/get_id?carte_version=svg'
)]);
$this->asides->load('educ_lettre_info');
$this->locate = array(
'/educ/' => 'Éduc',
0 => 'Spectacles'
);
$this->view->title_page = 'Spectacles à contenus pédagogiques';
return $this->view('educ/spectacles.html.twig');
}
// }}}
// {{{ action_spectacles_bientot()
/** Spectacles qui bénéficieront prochainement d'un contenu éduc
*
*
*/
public function action_spectacles_bientot()
{
$this->context['action'] = $this->view->action = 'spectacles-bientot';
$this->getCommonInfos();
// rechercher les coproductions
$params_sql = array(
'special' => array(
'by_classification' => 176, // class_educ_attente
'join' => true,
'plus_proche' => true,
),
'dbg' => array('spectacles_bientot', 'Spectacles avec la classification éduc à venir')
);
$this->context['view']->nb_spectacles_total = $this->spectacles->countListSpectacles($params_sql);
$params_sql['params']['limit'] = array($this->getLimitStart(),$this->perPage);
$this->context['view']->spectacles = $this->spectacles->getListSpectacles($params_sql);
$this->context['view']->pagination = $this->getPagination($this->context['view']->nb_spectacles_total);
$this->asides->load('educ_piece_demontee');
$this->asides->load('educ_lettre_info');
$this->asides->load('common_carrer_informations');
}
// }}}
// {{{ action_textes()
/** Textes bénéficiants d'un contenu éduc
*
* @Route("/educ/textes/", name="educ_textes")
* @Route("/educ/textes/area/{p_area}", name="educ_textes_area")
*
*/
public function action_textes($p_area = null)
{
$this->context['action'] = $this->view->action = 'textes';
$this->context['view']->area = $this->context['params']['area'] = $p_area;
$this->context['view']->textes = true; // faire afficher le H1 dans l'html
// trouver les textes disposants d'un contenu éduc
$this->getActionSpectaclesClassification($this->getListSpectaclesEduc(125,'ids_spectacle_educ',true),'educ',null,true);
$this->context['view']->spectacles = false; // faire afficher le H1 dans l'html
if(!empty($this->context['view']->area)){
$this->context['view']->custom_menu_area = true;
$this->context['view']->custom_aside_top = true;
$asides_top = new asides();
$asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlRegions',
)
)
]);
$this->context['view']->aside_top = $asides_top->view($this->context['view']);
}
$this->getCommonInfos();
$nav_texts = array(
array(
'name' => 'Tous les textes',
),
);
$this->asides->load(['url_lists' => array(
'exec' => array(
'htmlstart' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $nav_texts,
'url' => '/educ/textes',
'params' => array(
'activate' => (empty($_REQUEST['s']))
)
),
'title' => 'Voir'
)]);
$this->asides->load(['par_saison' => array(
'exec' => array(
'htmlend' => true
),
'php' => array(
'method' => 'asidesUrlListsForms',
'url' => '/educ/textes/area/key_area/',
'params' => array(
'key_area' => $this->context['view']->area,
)
),
'title' => 'Recherche par période',
'marge' => true
)]);
$this->asides->load(['common_carte' => array(
'url' => '/educ/textes/area/get_id?carte_version=svg'
)]);
$this->asides->load('educ_lettre_info');
$this->locate = array(
'/educ/' => 'Éduc',
0 => 'Textes'
);
$this->view->title_page = 'Textes à contenus pédagogiques';
return $this->view('educ/textes.html.twig');
}
// }}}
// {{{ action_piece_demontee_spectacle()
/** Spectacles bénéficiants d'un contenu pièce démontée
*
* @Route("/educ/piece-demontee-spectacle/", name="educ_piece_demontee_spectacle")*
* @Route("/educ/piece-demontee-spectacle/area/{p_area}", name="educ_piece_demontee_spectacle_area")*
*
*
*/
public function action_piece_demontee_spectacle($p_area = null)
{
$this->context['params']['area'] = $p_area;
$this->context['action'] = $this->view->action = 'piece-demontee-spectacle';
$params['perPage'] = 20;
//on désactive la saison, si l'utilisateur n'en a pas fait le choix
if(!isset($_GET['s']) && empty($_GET['s'])){
$params['saison_desactive'] = true;
$params['prochains'] = 720;
}
$this->getActionSpectaclesClassification(
$this->getListSpectaclesPieceDemontee(),
'piece-demontee',
null,
false,
true,
$params
);
foreach($this->context['view']->spectacles as $k=>$v) {
$this->context['view']->spectacles[$k]['carrer'] = $this->spectacles->getObjectsCarrerDetails($k);
$this->context['view']->spectacles[$k]['footer_contact'] = true;
}
//asides
$spectacle_demontee_nav = array(
array(
'name' => 'Tous les spectacles à venir',
),
);
//asides
$this->asides->load(['url_lists' => array(
'exec' => array(
'htmlstart' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $spectacle_demontee_nav,
'url' => '/educ/piece-demontee-spectacle',
'params' => array(
'activate' => true
)
),
'title' => 'Voir'
)]);
$this->asides->load(['par_saison' => array(
'exec' => array(
'htmlend' => true
),
'php' => array(
'method' => 'asidesUrlListsForms',
'url' => '/educ/piece-demontee-spectacle/area/key_area/',
'params' => array(
'key_area' => $this->context['view']->area,
)
),
'title' => 'Recherche par période'
)]);
$this->asides->load('common_carrer_informations');
$this->asides->load(['common_carte' => array(
'url' => '/educ/piece-demontee-spectacle/area/get_id/'
)]);
$this->asides->load('educ_piece_demontee');
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Pièce (dé)montée',
0 => 'Spectacles'
);
return $this->view('educ/piece-demontee-spectacle.html.twig');
}
// }}}
// {{{ action_theatre_en_acte_accueil()
/** Spectacles en preparation bénéficiants d'un théâtre en acte
*
* @Route("/educ/theatre-en-acte/", name="educ_theatre_en_acte")
* @Route("/educ/theatre-en-acte-accueil/", name="educ_theatre_en_acte_accueil")
*
*/
public function action_theatre_en_acte_accueil()
{
$this->context['action'] = $this->view->action = 'theatre-en-acte-accueil';
// Textes à l'affiche
$this->spectacles = $this->em->getRepository(Spectacles::class);
$this->texts = $this->em->getRepository(Texts::class);
if($idtexts = $this->getListTextsCommon(207,'ids_text_theatre_en_acte')){
foreach($idtexts AS $value){
$itexts[] = $value['idtext'];
}
$params_sql = array(
'special' => array(
'idtext' => $itexts,
'prochains' => 365
),
'params' => array(
// TODO pas les adaptations =>pour avoir le MEME nombre dans les deux cas
'where' => ' AND s.title IS NULL ',
'groupby' => ' t.idtext ',
'limit' => array(0,4)
),
'dbg' => array('list_spectacles_texts', 'Liste des textes theatre-en-acte'),
);
$list_spectacles = $this->spectacles->getListSpectacles($params_sql, null, false, array('carrer_couleurs' => true));
$this->context['view']->texts = $this->texts->getTextsFromSpectacles($list_spectacles, array());
// $vignette_format,false,true,$params_row
$vignette_format = array('width'=>$_ENV['VIGN_TEXT_WIDTH'],'height'=>$_ENV['VIGN_TEXT_HEIGHT'],'direction'=>'thumb');
foreach($this->context['view']->texts AS $key => $val){
$this->context['view']->texts[$key]['vignette'] = $this->em->getRepository(Texts::class)->getVignetteText($val['idtext'], $vignette_format);
}
}
// Mise en scene à l'affiche
$params = [
'prochains' => 365,
'limit' => [0,4]
];
$this->getActionSpectaclesClassification($this->getListSpectaclesTheatreEnActe(),'educ',null, false, false, $params);
foreach($this->context['view']->spectacles AS $k => $v){
$this->view->spectacles[$k]['display']['affiche_date_creation'] = true;
$this->view->spectacles[$k]['annee_creation'] = $this->em->getRepository(Spectacles::class)->getFormeDate($this->view->spectacles[$k]['creation_date'], '%Y', true); //%a %d/%m/%Y
$this->view->spectacles[$k]['carrer'] = $this->spectacles->getObjectsCarrerDetails($k);
$content_array = $this->em->getRepository(Contents::class)->getAssociateContents($v['idspectacle'],'spectacles','class_theatre_en_acte');
$content = reset($content_array['fr']);
$this->view->spectacles[$k]['url_custom'] = '/spectacles/'.$v['url_clean'].'/contenus-pedagogiques/idcontent/'.$content['idcontent'];
}
// aside
$this->asides->load('educ_canope_enacte');
$this->asides->load('common_carrer_informations');
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Théâtre en acte',
0 => 'Accueil'
);
$this->title_page = 'Théâtre en acte - accueil';
return $this->view('educ/theatre-en-acte-accueil.html.twig');
}
// }}}
// {{{ action_theatre_en_acte_presentation()
/** Spectacles en preparation bénéficiants d'un théâtre en acte
*
* @Route("/educ/theatre-en-acte-presentation", name="educ_theatre_en_acte_presentation")
*
*/
public function action_theatre_en_acte_presentation()
{
$this->context['action'] = $this->view->action = 'theatre-en-acte-presentation';
// aside
$this->asides->load('educ_canope_enacte');
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Théâtre en acte',
0 => 'Présentation'
);
$this->title_page = 'Théâtre en acte - présentation';
return $this->view('educ/theatre-en-acte-presentation.html.twig');
}
// }}}
// {{{ action_theatre_en_acte_auteurs()
/** Spectacles en preparation bénéficiants d'un théâtre en acte
*
* @Route("/educ/theatre-en-acte-auteurs", name="educ_theatre_en_acte_auteurs")
* @Route("/educ/theatre-en-acte-auteurs/type/{type}", name="educ_theatre_en_acte_auteurs_type")
*
*/
public function action_theatre_en_acte_auteurs($type = null)
{
$this->context['params']['type'] = $type;
$this->context['action'] = $this->view->action = 'theatre-en-acte-auteurs';
$asidenav = array(
'tous' => array( 'name' => 'Tous les auteurs' )
);
$this->getCommonPersons('authors', $this->getListSpectaclesCommon(207, 'ids_spectacle_theatre_en_acte'));
foreach($this->context['view']->authors AS $k => $auteur){
if($content = $this->em->getRepository(Contents::class)->getAssociateContents($auteur['idperson'],'persons','class_theatre_en_acte')){
$this->context['view']->authors[$k]['idcontent'] = reset($content['fr'])['idcontent'];
}
}
// getListSpectaclesTheatreEnActe
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $asidenav,
'url' => '/educ/theatre-en-acte-auteurs/type/params_1',
'params' => array(
// 'activate' => $selected,
'params_1' => 'auto_key'
)
),
'title' => 'Voir'
)]);
// aside
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Théâtre en acte',
0 => 'Auteurs'
);
$this->title_page = 'Théâtre en acte - auteurs';
return $this->view('educ/theatre-en-acte-auteurs.html.twig');
}
// {{{ action_theatre_en_acte_textes()
/** Spectacles en preparation bénéficiants d'un théâtre en acte
*
* @Route("/educ/theatre-en-acte-textes", name="educ_theatre_en_acte_textes")
* @Route("/educ/theatre-en-acte-textes/type/{type}", name="educ_theatre_en_acte_textes_type")
*
*/
public function action_theatre_en_acte_textes($type = null)
{
$this->context['params']['type'] = $type;
$this->context['action'] = $this->view->action = 'theatre-en-acte-textes';
$asidenav = array(
'tous' => array(
'name' => 'Tous les textes',
'key' => 'tous'
),
'prochains' => array(
'name' => 'Tous les textes à l\'affiche',
'key' => 'prochains'
)
);
$selected = 'tous';
if(isset($this->context['params']['type']) && array_key_exists($this->context['params']['type'], $asidenav)){
$selected = $this->context['params']['type'];
}
$this->texts = $this->em->getRepository(Texts::class);
if($idtexts = $this->getListTextsCommon(207,'ids_text_theatre_en_acte')){
// $vignette_format,false,true,$params_row
$vignette_format = array('width'=>$_ENV['VIGN_TEXT_WIDTH'],'height'=>$_ENV['VIGN_TEXT_HEIGHT'],'direction'=>'thumb');
//Les textes à l'affiche
if($selected == 'prochains'){
foreach($idtexts AS $value){
$itexts[] = $value['idtext'];
}
$params_sql = array(
'special' => array(
'idtext' => $itexts,
'prochains' => 365
),
'params' => array(
// TODO pas les adaptations =>pour avoir le MEME nombre dans les deux cas
'where' => ' AND s.title IS NULL ',
'groupby' => ' t.idtext ',
'limit' => array(0,4)
),
'dbg' => array('list_spectacles_texts', 'Liste des spectacles avec textes non fictifs'),
);
$list_spectacles = $this->spectacles->getListSpectacles($params_sql);
$this->context['view']->texts = $this->texts->getTextsFromSpectacles($list_spectacles, array());
foreach($this->context['view']->texts AS $key => $val){
$this->context['view']->texts[$key]['vignette'] = $this->em->getRepository(Texts::class)->getVignetteText($val['idtext'], $vignette_format);
}
}
//Tous les textes
else{
foreach($idtexts AS $key => $val){
$idtext = $val['idtext'];
$text_content = $this->em->getRepository(Texts::class)->getInfosText($idtext);
$this->context['view']->texts[$idtext] = $text_content;
$this->context['view']->texts[$idtext]['vignette'] = $this->em->getRepository(Texts::class)->getVignetteText($idtext, $vignette_format);
$this->context['view']->texts[$idtext]['publisher_first'] = true;
$this->context['view']->texts[$idtext]['url_custom'] = '/textes/'.$text_content['url_clean'].'/contenus-pedagogiques/idcontent/'.$val['idcontent'];
}
}
}
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $asidenav,
'url' => '/educ/theatre-en-acte-textes/type/params_1',
'params' => array(
'activate' => $selected,
'params_1' => 'auto_key'
)
),
'title' => 'Voir'
)]);
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Théâtre en acte',
0 => 'Textes'
);
$this->title_page = 'Théâtre en acte - textes';
return $this->view('educ/theatre-en-acte-textes.html.twig');
}
// }}}
// {{{ action_theatre_en_acte_enscene()
/** Spectacles en preparation bénéficiants d'un théâtre en acte
*
* @Route("/educ/theatre-en-acte-enscene", name="educ_theatre_en_acte_enscene")
* @Route("/educ/theatre-en-acte-enscene/type/{type}", name="educ_theatre_en_acte_enscene_prochain")
*
*/
public function action_theatre_en_acte_enscene($type = null)
{
$this->context['params']['type'] = $type;
$this->context['action'] = $this->view->action = 'theatre-en-acte-enscene';
$asidenav = array(
'tous' => array( 'name' => 'Toutes les mises en scène', 'key' => 'tous' ),
'prochains' => array( 'name' => 'Prochaines mises en scène', 'key' => 'prochains' )
);
$params = array(
'tous' => ['order' => ['creation_date', 'DESC']],
'prochains' => ['prochains' => 365],
);
if(empty($this->context['params']['type'])){
$this->context['params']['type'] = 'tous';
}
$this->getActionSpectaclesClassification($this->getListSpectaclesTheatreEnActe(),'educ',null,true, false, $params[$this->context['params']['type']]);
foreach($this->context['view']->spectacles AS $k => $v){
$this->view->spectacles[$k]['display']['affiche_date_creation'] = true;
$this->view->spectacles[$k]['annee_creation'] = $this->em->getRepository(Spectacles::class)->getFormeDate($this->view->spectacles[$k]['creation_date'], '%Y', true); //%a %d/%m/%Y
$this->view->spectacles[$k]['carrer'] = $this->spectacles->getObjectsCarrerDetails($k);
$content_array = $this->em->getRepository(Contents::class)->getAssociateContents($v['idspectacle'],'spectacles','class_theatre_en_acte');
$content = reset($content_array['fr']);
$this->view->spectacles[$k]['url_custom'] = '/spectacles/'.$v['url_clean'].'/contenus-pedagogiques/idcontent/'.$content['idcontent'];
}
// aside
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $asidenav,
'url' => '/educ/theatre-en-acte-enscene/type/params_1',
'params' => array(
'activate' => $this->context['params']['type'],
'params_1' => 'auto_key'
)
),
'title' => 'Voir'
)]);
$this->asides->load('common_carrer_informations');
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Théâtre en acte',
0 => 'En scène'
);
$this->title_page = 'Théâtre en acte - en scène';
return $this->view('educ/theatre-en-acte-enscene.html.twig');
}
// }}}
// {{{ action_theatre_en_acte_preparation()
/** Spectacles en preparation bénéficiants d'un théâtre en acte
*
* @Route("/educ/theatre-en-acte-preparation/", name="educ_theatre_en_acte_preparation")
* @Route("/educ/theatre-en-acte-preparation/type/{type}", name="educ_theatre_en_acte_preparation_type")
*
*/
public function action_theatre_en_acte_preparation($type = null)
{
$this->context['params']['type'] = $type;
$this->context['action'] = $this->view->action = 'theatre-en-acte-preparation';
//sous menu principal de la page
$spectacle_demontee_nav = array(
'spectacles' => array(
'name' => ' Les spectacles',
'key' => 'spectacles'
),
'textes' => array(
'name' => ' Les textes',
'key' => 'textes'
),
'auteurs' => array(
'name' => ' Les auteurs',
'key' => 'auteurs'
)
);
$selected = 'spectacles';
if(isset($this->context['params']['type']) && array_key_exists($this->context['params']['type'], $spectacle_demontee_nav)){
$selected = $this->context['params']['type'];
}
$this->context['view']->subtitle = $selected;
//l'utiisateur sélectionne les spectacles
if(in_array($selected,['spectacles'])){
$params_sql = array(
'params' => array(
'order' => ['creation_date', 'DESC']
),
'special' => array(
'by_classification' => 188, // class_piece_demontee_attente
'plus_proche' => true,
),
'dbg' => array('piece_demontee_bientot', 'Spectacles avec la classification pièce démontée à venir')
);
$this->context['view']->nb_spectacles_total = $this->spectacles->countListSpectacles($params_sql);
$params_sql['params']['limit'] = array($this->getLimitStart(),$this->perPage);
if($this->context['view']->spectacles = $this->spectacles->getListSpectacles($params_sql, array(), false, array('allauthors' => true, 'affiche_date_creation' => true))){
$this->context['view']->data = true;
}
$this->context['view']->pagination = $this->getPagination($this->context['view']->nb_spectacles_total);
foreach($this->context['view']->spectacles AS $k => $v){
$this->view->spectacles[$k]['display']['affiche_date_creation'] = true;
$this->view->spectacles[$k]['annee_creation'] = $this->em->getRepository(Spectacles::class)->getFormeDate($this->view->spectacles[$k]['creation_date'], '%Y', true); //%a %d/%m/%Y
}
}
//l'utiisateur sélectionne les textes
else if(in_array($selected,['textes'])){
$this->context['view']->noshow_detail_periode = true; //on cache les détails des dates de spectacle
$this->context['view']->detail_orga = true; //on affiche l'éditeur de publication
$this->context['view']->detail_date = true; //on affiche la date de publication
$this->context['view']->noshow_spectacle_directors = true; //on affiche pas le metteur m'éditeur enscène
$this->getCommonSearch(array(
// 'saisons_annees' => $this->getListSeasonsYears(Theatre::factory('playlists')->getSpectaclesAnneesSaisons($idclassifications)),
'nb_days' => 3650,
));
$params_sql_spectacles = array(
'params' => array(
'limit' => 'all', //all7
'groupby' => 't.idtext'
),
'special' => array(
'by_classification_texts' => 195, // edutheque tx
// 'textfictif' => 0,
// 'plus_proche' => true,
// 'prochains' => 365,
),
'dbg' => array('spectacles_auteurs_affiche','Texte par l\'auteur à l\'affiche')
);
$this->context['view']->nb_textes_total = $this->spectacles->countListSpectacles($params_sql_spectacles);
// $params_sql_spectacles['params']['limit'] = $limit_query;
$list_spectacles = $this->spectacles->getListSpectacles($params_sql_spectacles);
//taille des vignettes
$params_display['vignette_format'] = array('width'=>$_ENV['VIGN_TEXT_WIDTH'],'height'=>$_ENV['VIGN_TEXT_HEIGHT'],'direction'=>'thumb');
//on récupère les textes en provencanes des pectacles
if($this->context['view']->texts = $this->em->getRepository(Texts::class)->getTextsFromSpectacles($list_spectacles,array(),$params_display)){
$this->context['view']->data = true;
}
//on s'occupe de la pagination de tout ça !
$this->context['view']->pagination = $this->getPagination($this->context['view']->nb_textes_total);
$this->context['view']->pagination['texte'] = true;
$this->context['view']->text_title_center = true;
}
//l'utiisateur sélectionne les auteurs
else if(in_array($selected,['auteurs'])){
$persons = $this->em->getRepository(Persons::class);
$params_persons = array(
'params' => array(
'limit' => 'all',
),
'special' => array(
'publish' => 1,
// 'count_only' => true,
'idclassification' => 196
),
'dbg' => array('persons','liste des personnes')
);
if($this->context['view']->persons = $persons->getListPersons($params_persons)){
$this->context['view']->data = true;
}
}
// asides
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $spectacle_demontee_nav,
'url' => '/educ/theatre-en-acte-preparation/type/params_1',
'params' => array(
'activate' => $selected,
'params_1' => 'auto_key'
)
),
'title' => 'Voir'
)]);
// $this->asides->load('educ_theatre_en_acte');
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Théâtre en acte',
0 => 'En préparation'
);
$this->title_page = 'Théâtre en acte - en préparation';
return $this->view('educ/theatre-en-acte-preparation.html.twig');
}
// }}}
// {{{ action_piece_demontee_bientot()
/** Spectacles qui bénéficieront prochainement d'un contenu pièce démontée
*
* @Route("/educ/piece-demontee-bientot", name="educ_peice_demontee_bientot")
*
*/
public function action_piece_demontee_bientot()
{
$this->context['action'] = $this->view->action = 'piece-demontee-bientot';
// rechercher les coproductions
$params_sql = array(
'special' => array(
'by_classification' => 160, // class_piece_demontee_attente
'plus_proche' => true,
),
'dbg' => array('piece_demontee_bientot', 'Spectacles avec la classification pièce démontée à venir')
);
$this->context['view']->nb_spectacles_total = $this->spectacles->countListSpectacles($params_sql);
$params_sql['params']['limit'] = array($this->getLimitStart(),$this->perPage);
$params_display = array('allauthors' => true, 'carrer_couleurs' => true);
$this->context['view']->spectacles = $this->spectacles->getListSpectacles($params_sql, array(), false, $params_display);
$this->context['view']->pagination = $this->getPagination($this->context['view']->nb_spectacles_total);
foreach($this->context['view']->spectacles as $k=>$v) {
$this->context['view']->spectacles[$k]['footer_contact'] = true;
}
$this->asides->load('educ_piece_demontee');
$this->asides->load('educ_lettre_info');
$this->asides->load(['common_carrer_informations' => [
'color' => 'educ'
]]);
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Pièce (dé)montée',
0 => 'À venir'
);
return $this->view('educ/piece-demontee-bientot.html.twig');
}
// }}}
// {{{ action_xml()
/** les régions en XML
*
*/
public function action_xml()
{
if(!empty($this->context['params']['page'])) {
$this->context['view']->page = $this->context['params']['page'];
} else {
$this->context['view']->page = 'spectacles';
}
$this->getCommonXmlCarte($this->context['view']->page);
}
// }}}
// {{{ action_auteurs()
/** les auteurs
*
* @Route("/educ/auteurs/", name="educ_auteurs")
* @Route("/educ/auteurs/periode/{p_periode}", name="educ_auteurs_periode")
* @Route("/educ/auteurs/periode/{p_periode}/area/{p_area}", name="educ_auteurs_periode_area")
* @Route("/educ/auteurs/area/{p_area}", name="educ_auteurs_area")
*
*/
public function action_auteurs($p_periode = null, $p_area = null)
{
$this->view->action = $this->context['action'] = 'auteurs';
$this->context['params']['periode'] = $p_periode;
$this->context['params']['area'] = $p_area;
$idspectacles = $this->getListSpectaclesEduc();
$persons = $this->em->getRepository(Persons::class);
$where_search = null;
// recherche une saison
$saison = $this->getSaison();
$listdates = $this->getSpectaclesDatesCommon($idspectacles);
// récupérer la liste des années et des saisons et générer les listes déroulantes
if(!empty($listdates)) {
$annees_saisons = $this->getListSeasonsYears($listdates,null,true);
// liste des saisons
$this->view->saisons = $annees_saisons['saisons'];
$this->getCommonSearch([
'saisons_annees' => [
'saisons' => $annees_saisons['saisons']
]
]);
$this->getCommonSearchView();
}
// recherche par saison
if(!empty($saison)) {
$annees_saison = explode('-', $saison);
if(count($annees_saison)==2) {
$datestart = Date_time::getSaisonDatestart((int)$annees_saison[0]);
$dateend = Date_time::getSaisonDateend((int)$annees_saison[1]);
}
// saison de recherche
$this->view->saison = $saison;
// saison précédente / suivante
$this->view->saisons_nav = $this->getSaisonsNav($annees_saisons['saisons'],$saison);
}
// recherche période
if(!empty($datestart) && !empty($dateend)) {
$where_search .= ' AND sc.`date` BETWEEN \''.$datestart.'\' AND \''.$dateend.'\' ';
}
// recherche par type d'auteurs
$periodes = array(
'vivant' => 'vivants',
'contemporain' => 'contemporains',
'public' => 'du domaine public',
);
if(!empty($this->context['params']['periode']) && array_key_exists($this->context['params']['periode'],$periodes)) {
$periode = trim(htmlspecialchars(strip_tags($this->context['params']['periode'])));
$this->context['view']->periode = $periodes[$periode];
} else {
$this->context['view']->periode = '';
$periode = '';
}
$params_spectacles = array(
'special' => array(
'idspectacle' => $idspectacles,
//'plus_proche' => true,
),
'params' => array(
'limit' => array(0,2000),
),
'dbg' => array('list_spectacles', 'Liste des spectacles avec un contenu Educ'),
);
if(!empty($where_search)) {
$params_spectacles['params']['where'] = $where_search;
}
// une région en particulier ?
$params_spectacles = $this->setAreaRecherche($params_spectacles);
$spectacles_list = $this->spectacles->getListSpectacles($params_spectacles);
if(!empty($spectacles_list)) {
foreach($spectacles_list as $s) {
// les auteurs
foreach($s['allauthors'] as $k=>$v) {
if(empty($authors[$v['lastname'].'_'.$v['firstname']])) {
// exclure de la recheche suivante
$idpersons_exclude[$v['idperson']] = $v['idperson'];
//infos
$authors[$v['lastname'].'_'.$v['firstname']] = array(
'idperson' => $v['idperson'],
'lastname' => $v['lastname'],
'firstname' => $v['firstname'],
'url_clean' => $v['url_clean'],
'spectacles' => array($s),
);
if($s['textfictif']==0) {
$authors[$v['lastname'].'_'.$v['firstname']]['textreel'] = 1;
}
// vignette
$thumbnail = $persons->getVignettePerson($v['idperson'],array('width'=>$_ENV['VIGN_PERSONS_WIDTH'],'height'=>$_ENV['VIGN_PERSONS_HEIGHT'],'direction'=>'crop'));
if(strpos($thumbnail, 'normal-def')===false) {
$authors[$v['lastname'].'_'.$v['firstname']]['photo'] = $thumbnail;
}
} else {
if($s['textfictif']==0) {
$authors[$v['lastname'].'_'.$v['firstname']]['textreel'] = 1;
}
$authors[$v['lastname'].'_'.$v['firstname']]['spectacles'][] = $s;
}
}
}
}
if(empty($saison)) {
// trouver également les texts qui ont un contenus associés pédagogique en excluant les spectacles
$params_texts = array(
'special' => array(
'idclassification' => array(125),
//'authors' => array('NOT IN', $idpersons_exclude),
'join' => true,
),
'params' => array(
'limit' => array(0,2000),
),
'dbg' => array('list_texts', 'Liste des texts avec un contenu Educ'),
);
$texts_list = $this->em->getRepository(Texts::class)->getListTexts($params_texts);
if(!empty($texts_list)) {
foreach($texts_list as $s) {
// les auteurs
foreach($s['allauthors'] as $k=>$v) {
if(empty($authors[$v['lastname'].'_'.$v['firstname']])) {
if (!isset($v['idperson'])) {
$v['idperson'] = null;
}
if (!isset($v['url_clean'])) {
$v['url_clean'] = null;
}
$authors[$v['lastname'].'_'.$v['firstname']] = array(
'idperson' => $v['idperson'],
'lastname' => $v['lastname'],
'firstname' => $v['firstname'],
'url_clean' => $v['url_clean'],
'texts' => array($s),
);
if (isset($v['idperson'])) {
$authors[$v['lastname'].'_'.$v['firstname']][] = ['idperson' => $v['idperson']];
} else {
$authors[$v['lastname'].'_'.$v['firstname']][] = ['idperson' => null];
}
if (isset($v['url_clean'])) {
$authors[$v['lastname'].'_'.$v['firstname']][] = ['url_clean' => $v['url_clean']];
} else {
$authors[$v['lastname'].'_'.$v['firstname']][] = ['url_clean' => null];
}
if($s['textfictif']==0) {
$authors[$v['lastname'].'_'.$v['firstname']]['textreel'] = 1;
}
$thumbnail = $persons->getVignettePerson($v['idperson'],array('width'=>$_ENV['VIGN_PERSONS_WIDTH'],'height'=>$_ENV['VIGN_PERSONS_HEIGHT'],'direction'=>'crop'));
if(strpos($thumbnail, 'normal-def')===false) {
$authors[$v['lastname'].'_'.$v['firstname']]['photo'] = $thumbnail;
}
} else {
if($s['textfictif']==0) {
$authors[$v['lastname'].'_'.$v['firstname']]['textreel'] = 1;
}
$authors[$v['lastname'].'_'.$v['firstname']]['texts'][] = $s;
}
}
}
}
}
// récupèrer également les dates de l'auteur dans le cas d'une recherche par période
foreach($authors as $k=>$v) {
// suprimer les auteurs qui n'ont que des textes fictifs
if(empty($v['textreel'])) {
unset($authors[$k]);
continue;
}
if (isset($v['idperson'])) {
$infos = $this->em->getRepository(Persons::class)->getInfosPerson($v['idperson']);
}
else {
$infos = null;
}
// les contemporains
if(!empty($infos['dateend'])) {
if($infos['dateend']<0) {
$infos['dateend'] = str_replace('-', '', $infos['dateend']);
$infos['dateend'] = str_pad($infos['dateend'], 4, '0', STR_PAD_LEFT);
$infos['dateend'] = '-'.$infos['dateend'];
} else {
$infos['dateend'] = str_pad($infos['dateend'], 4, '0', STR_PAD_LEFT);
}
$today = new \DateTime(date('Y-m-d'));
$dateend = new \DateTime($infos['dateend'].'-01-01');
$interval = $dateend->diff($today);
if($interval->format('%Y')>70) {
$periode_person = 'public';
} else {
$periode_person = 'contemporain';
}
} else {
$periode_person = 'vivant';
}
$authors[$k]['periode'] = $periode_person;
}
// tri periode
if(!empty($periode)) {
foreach($authors as $k=>$v) {
// pour les contemporains
if($periode=='contemporain' && $v['periode']=='vivant') {
continue;
}
if($v['periode']!=$periode) {
unset($authors[$k]);
}
}
}
ksort($authors);
$this->context['view']->authors = $authors;
if(!empty($saison) || !empty($this->context['view']->area) || !empty($periode)) {
$this->context['view']->search_mode = true;
}
if(!empty($this->context['view']->area)){
$this->context['view']->custom_menu_area = true;
$this->context['view']->custom_aside_top = true;
$asides_top = new asides();
$asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlRegions',
)
)
]);
$this->context['view']->aside_top = $asides_top->view($this->context['view']);
}
$this->getCommonInfos();
$educ_menu_root = array(
array(
'name' => 'Tous',
'key_url' => '/educ/auteurs/',
'key_active' => 'all'
),
array(
'name' => 'Contemporains',
'key_url' => '/educ/auteurs/periode/contemporain',
'key_active' => 'contemporain'
),
array(
'name' => 'Vivants',
'key_url' => '/educ/auteurs/periode/vivant',
'key_active' => 'vivant'
),
array(
'name' => 'Du domaine public',
'key_url' => '/educ/auteurs/periode/public',
'key_active' => 'public'
),
);
//asides
$this->asides->load(['url_lists' => array(
'exec' => array(
'htmlstart' => true,
// 'root' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $educ_menu_root,
'url' => 'key_url',
'params' => [
// 'activate' => (!empty($_GET['s'])) ? '' : (empty($periode)) ? 'all' : $periode
]
),
'title' => 'Auteurs'
)]);
$this->asides->load(['par_saison' => array(
'exec' => array(
'htmlend' => true,
// 'root' => true
),
'action' => '/educ/auteurs/',
'title' => 'Rechercher par',
'marge' => true
)]);
$this->asides->load(['common_carte' => array(
'url' => '/educ/auteurs/area/get_id?carte_version=svg'
)]);
$this->asides->load('ecoles_modifier');
$this->asides->load('educ_lettre_info');
return $this->view('educ/auteurs.html.twig');
}
// }}}
// {{{ action_minute_pedagogique()
/** les auteurs
*
* @Route("/educ/minute-pedagogique/", name="educ_minute_pedagogique")
* @Route("/educ/minute-pedagogique/type/{p_type}", name="educ_minute_pedagogique_type")
*
*/
public function action_minute_pedagogique($p_type = 'prochains')
{
$this->context['action'] = $this->view->action = 'minute-pedagogique';
$this->context['params']['type'] = $p_type;
$menu_minutepeda = array(
'prochains' => array('name' => 'Spectacles à venir', 'key' => 'prochains'),
'tous' => array('name' => 'Tous les spectacles', 'key' => 'tous'),
);
$selected = $default_choice = "prochains";
if(!empty($this->context['params']['type']) && array_key_exists($this->context['params']['type'], $menu_minutepeda)){
$selected = $this->context['params']['type'];
}
if($this->context['params']['type'] == 'tous'){
$this->context['view']->all_spec = true;
}
$this->context['view']->show_title = true;
$multimedias = $this->em->getRepository(Multimedias::class);
// recherche de base
$params_query_affiches = array(
//valeur par default pour éviter des erreurs
'affiche' => array(
'datestart' => '1999-01-01', //la date du jour
'dateend' => '2030-01-01',
),
'order' => array(
'creation_date DESC'
),
'idclassification' => 145,
'limit' => array(0,100),
'dbg' => array('affiche','Vidéos de minutes pédagogiques'),
);
//Les prochains spectacles
if($selected == 'prochains'){
$params_query_affiches['affiche'] = array(
'datestart' => date('Y-m-d'), //la date du jour
'dateend' => '2030-01-01',
);
}
//Tous les spectacles, recheche par saison
else{
// recherche une saison
$saison = $this->getSaison();
$listdates = $this->getSpectaclesDatesCommon($this->getListSpectaclesMinutePedagogique());
// récupérer la liste des années et des saisons et générer les listes déroulantes
if(!empty($listdates)) {
$annees_saisons = $this->getListSeasonsYears($listdates,null,true);
// liste des saisons
$this->context['view']->saisons = $annees_saisons['saisons'];
$this->getCommonSearch([
'saisons_annees' => array(
'saisons' => $annees_saisons['saisons'],
)
]);
$this->getCommonSearchView();
}
if(!empty($saison)) {
$annees_saison = explode('-', $saison);
if(count($annees_saison)==2) {
$params_query_affiches['affiche'] = array(
'datestart' => Date_time::getSaisonDatestart((int)$annees_saison[0]),
'dateend' => Date_time::getSaisonDateend((int)$annees_saison[1]),
);
}
// saison de recherche
$this->context['view']->saison = $saison;
// saison précédente / suivante
$this->context['view']->saisons_nav = $this->getSaisonsNav($annees_saisons['saisons'],$saison);
}
}
$this->context['view']->contactsvideos = true;
$this->context['view']->videos = $multimedias->getListMultimedias($params_query_affiches,array(),array('get_schedule' => 'plus_proche'));
//on affiche la date de création
if($selected != 'prochains'){
foreach($this->context['view']->videos AS $idvideos => $video){
$this->context['view']->videos[$idvideos]['spectacle']['footer_creation_date'] = true;
// $this->context['view']->videos[$idvideos]['spectacle'] = $this->>em->$this->getRepository(Spectacles::class)->clearSpectaclesAddAllPersons($this->context['view']->videos[$idvideos]['spectacle']);
}
}
$this->asides->load(['url_lists' => array(
'exec' => [
'htmlstart' => true,
'htmlend' => ($selected == 'prochains') ? true : false
],
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $menu_minutepeda,
'url' => '/educ/minute-pedagogique/type/key_test',
'params' => array(
'activate' => $selected,
'key_test' => 'auto_key'
)
),
'title' => html_entity_decode('À l\'affiche')
)]);
if($selected != 'prochains'){
$this->asides->load(['par_saison' => array(
'exec' => [
'htmlend' => true
],
'action' => '/educ/minute-pedagogique/type/'.$selected
)]);
}
$this->asides->load(['common_participer' => array(
'php' => array(
'method' => 'asidesUrlLists_Ajoutez'
)
)]);
return $this->view('educ/minute-pedagogique.html.twig');
}
// }}}
// {{{ action_jeunes_critiques()
/** les auteurs
*
*/
public function action_jeunes_critiques()
{
$multimedias = $this->em->getRepository(Multimedias::class);
// recherche de base
$params_query_affiches = array(
'affiche' => array(
'datestart' => '1999-01-01',
'dateend' => '2030-01-01',
),
'idclassification' => 156, // jeunes critiques
'limit' => array(0,100),
'dbg' => array('affiche','Vidéos de jeunes critiques'),
);
$this->context['view']->videos = $multimedias->getListMultimedias($params_query_affiches,array(),array('get_schedule' => 'plus_proche'));
}
// }}}
// {{{ action_piece_demontee()
/** les pieces demontées auteurs
*
* @Route("/educ/piece-demontee", name="educ_peice_demontee")
*
*/
public function action_piece_demontee()
{
$this->context['action'] = $this->view->action = 'piece-demontee';
$this->getPieceDemonteePersons('authors');
$educ_menu_root = array(
array(
'name' => 'Tous',
'key_url' => '/educ/piece-demontee/'
),
array(
'name' => 'Contemporains',
'key_url' => '/educ/piece-demontee/periode/contemporain'
),
array(
'name' => 'Vivants',
'key_url' => '/educ/piece-demontee/periode/vivant'
),
array(
'name' => 'Du domaine public',
'key_url' => '/educ/piece-demontee/periode/public'
),
);
//asides
$this->asides->load(['url_lists_alone,isroot' => array(
'exec' => array(
'htmlstart' => true,
'root' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $educ_menu_root,
'url' => 'key_url',
),
'title' => 'Auteurs'
)]);
$this->asides->load('educ_piece_demontee');
$this->asides->load('educ_lettre_info');
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Pièce (dé)montée',
0 => 'Auteurs'
);
return $this->view('educ/piece-demontee.html.twig');
}
// }}}
// {{{ action_piece_demontee_metteurs()
/** les pieces demontées metteurs en scène
*
* @Route("/educ/piece-demontee-metteurs", name="educ_peice_demontee_metteurs")
*
*/
public function action_piece_demontee_metteurs()
{
$this->context['action'] = $this->view->action = 'piece-demontee-metteurs';
$this->getPieceDemonteePersons('directors');
$this->asides->load('educ_piece_demontee');
$this->asides->load('educ_lettre_info');
$this->locate = array(
'/educ/' => 'Éduc',
'/educ/piece-demontee/' => 'Pièce (dé)montée',
0 => 'Metteurs en scène'
);
return $this->view('educ/piece-demontee-metteurs.html.twig');
}
// }}}
// {{{ action_belle_saison()
/** les auteurs et textes de la belle saison
*
*/
public function action_belle_saison()
{
$this->texts = $this->em->getRepository(Texts::class);
$texts_list = $this->texts->getListTexts(array(
'special' => array(
'by_classification' => array(153), // Text "Belle saison"
'join' => true,
),
'params' => array(
'limit' => array(0,200)
),
'dbg' => array('list_texts_bs', 'Liste des texts belle saison'),
));
$persons = $this->em->getRepository(Persons::class);
// recherche par type d'auteurs
$periodes = array(
'vivant' => 'vivants',
'contemporain' => 'contemporains',
'public' => 'du domaine public',
);
if(!empty($this->context['params']['periode']) && array_key_exists($this->context['params']['periode'],$periodes)) {
$periode = trim(htmlspecialchars(strip_tags($this->context['params']['periode'])));
$this->context['view']->periode = $periodes[$periode];
} else {
$this->context['view']->periode = '';
}
if(!empty($texts_list)) {
foreach($texts_list as $t) {
// les auteurs
foreach($t['allauthors'] as $k=>$v) {
if(empty($results[$v['lastname'].'_'.$v['firstname']])) {
$results[$v['lastname'].'_'.$v['firstname']] = array(
'lastname' => $v['lastname'],
'firstname' => $v['firstname'],
'url_clean' => $v['url_clean'],
'idperson' => $v['idperson'],
'texts' => array(
$t
),
);
$thumbnail = $persons->getVignettePerson($v['idperson'],array('width'=>100,'height'=>100,'direction'=>'crop'));
if(strpos($thumbnail, 'normal-def')===false) {
$results[$v['lastname'].'_'.$v['firstname']]['photo'] = $thumbnail;
}
} else {
$results[$v['lastname'].'_'.$v['firstname']]['texts'][] = $t;
}
}
}
}
foreach($results as $k=>$v) {
if(count($v['texts'])>4) {
$results[$k]['is_list'] = true;
}
}
// récupèrer également les dates de l'auteur dans le cas d'une recherche par période
foreach($results as $k=>$v) {
$infos = $this->em->getRepository(Persons::class)->getInfosPerson($v['idperson']);
// les contemporains
if(!empty($infos['dateend'])) {
if($infos['dateend']<0) {
$infos['dateend'] = str_replace('-', '', $infos['dateend']);
$infos['dateend'] = str_pad($infos['dateend'], 4, '0', STR_PAD_LEFT);
$infos['dateend'] = '-'.$infos['dateend'];
} else {
$infos['dateend'] = str_pad($infos['dateend'], 4, '0', STR_PAD_LEFT);
}
$today = new \DateTime(date('Y-m-d'));
$dateend = new \DateTime($infos['dateend'].'-01-01');
$interval = $dateend->diff($today);
if($interval->format('%Y')>70) {
$periode_person = 'public';
} else {
$periode_person = 'contemporain';
}
} else {
$periode_person = 'vivant';
}
$results[$k]['periode'] = $periode_person;
}
// tri periode
if(!empty($periode)) {
foreach($results as $k=>$v) {
// pour les contemporains
if($periode=='contemporain' && $v['periode']=='vivant') {
continue;
}
if($v['periode']!=$periode) {
unset($results[$k]);
}
}
}
ksort($results);
$this->context['view']->authors = $results;
$this->asides->load('educ_belle_saison');
$this->asides->load('ecoles_modifier');
}
// }}}
// {{{ action_theatrales()
/** les contenus théâtrales éditions (idclassification = 146)
*
* @Route("/educ/theatrales", name="educ_theatrales")
*
*/
public function action_theatrales()
{
$this->context['action'] = $this->view->action = 'theatrales';
$texts = $this->em->getRepository(Texts::class);
$persons = $this->em->getRepository(Persons::class);
// recherche de base
$params_query_texts = array(
'params' => array(
'limit' => array(0,100),
),
'dbg' => array('theatrales','Auteurs théâtrales contenu éduc et contenu carnet péda (146)'),
'special' => array(
'idclassification' => array(146),
),
);
$texts_list = $texts->getListTexts($params_query_texts);
if(!empty($texts_list)) {
foreach($texts_list as $s) {
// les auteurs
foreach($s['allauthors'] as $k=>$v) {
if(empty($authors[$v['lastname'].'_'.$v['firstname']])) {
$authors[$v['lastname'].'_'.$v['firstname']] = array(
'lastname' => $v['lastname'],
'firstname' => $v['firstname'],
'url_clean' => $v['url_clean'],
);
if(!empty($t)) {
$authors[$v['lastname'].'_'.$v['firstname']]['texts'] = array(
$t
);
}
$thumbnail = $persons->getVignettePerson($v['idperson'],array('width'=>$_ENV['VIGN_PERSONS_WIDTH'],'height'=>$_ENV['VIGN_PERSONS_HEIGHT'],'direction'=>'crop'));
if(strpos($thumbnail, 'normal-def')===false) {
$authors[$v['lastname'].'_'.$v['firstname']]['photo'] = $thumbnail;
}
} else {
$authors[$v['lastname'].'_'.$v['firstname']]['spectacles'][] = $s;
}
}
}
}
ksort($authors);
$this->context['view']->authors = $authors;
// situation et titre meta
$this->locate = array(
'/educ/' => 'Éduc',
0 => 'Auteurs bénéficiant d\'un carnet artistique et pédagogique'
);
$this->view->title_page = 'Auteurs bénéficiant d\'un carnet artistique et pédagogique';
$this->rub_courante = 'educ';
$this->asides->load('educ_note_intention');
$this->asides->load('educ_lettre_info');
return $this->view('educ/theatrales.html.twig');
}
// }}}
// {{{ action_biographie_langagière()
/** Biographie langagière
*
* @Route("/educ/biographie-langagiere", name="educ_biographie_langagiere")
* @Route("/educ/biographie-langagiere-argumentaire", name="educ_biographie_langagiere_argumentaire")
* @Route("/educ/biographie-langagiere-bilingue", name="educ_biographie_langagiere_bilingue")
* @Route("/educ/biographie-langagiere-mots", name="educ_biographie_langagiere_mots")
* @Route("/educ/biographie-langagiere-ressources", name="educ_biographie_langagiere_ressources")
*/
public function action_biographie_langagiere()
{
// On récupère la route demandée
$uri = $_SERVER['REQUEST_URI'];
$uriArray = explode('/', $uri);
// Ici $wanted page prend comme valeur la route demandée (sans le /)
$wantedPage = end($uriArray);
$this->context['action'] = $this->view->action = $wantedPage;
// Récupère les spectacles qui ont des contenus bio lang => 137
$this->context['view']->spectacles_list = $this->getBioLangSpectacles();
// Récupère les textes associés
$this->context['view']->texts_list = $this->getBioLangTexts();
// menu pour bio lang
$this->view->menu_biolang = [
'biographie-langagiere' => ['name' => 'Présentation'],
'biographie-langagiere-argumentaire' => ['name' => 'Argumentaire'],
'biographie-langagiere-bilingue' => ['name' => 'Être bilingue'],
'biographie-langagiere-mots' => ['name' => 'Mots clés'],
'biographie-langagiere-ressources' => ['name' => 'Ressources']
];
foreach($this->view->menu_biolang as $k => $v) {
if ($k == $this->context['action']) {
$this->view->menu_biolang[$k]['active'] = 'on';
}
}
$this->context['view']->addthis = true;
// asides
$this->asides->load('educ_spectacle_list');
$this->asides->load('educ_langagiere');
$this->asides->load('educ_lettre_info');
// Situation et titre meta
$wantedPageArray = explode('-', $wantedPage);
$wantedPageSuffix = end($wantedPageArray);
switch($wantedPageSuffix) {
case 'argumentaire':
$suffix = 'Argumentaire';
break;
case 'bilingue':
$suffix = 'Être bilingue, devenir plurilingue';
break;
case 'mots':
$suffix = 'Mots clés';
break;
case 'ressources':
$suffix = 'Ressources';
break;
default:
$suffix = '';
}
$this->title_page = 'Biographie langagière';
if ($suffix === '') {
$this->locate = [0 => 'Biographie langagière'];
} else {
$this->locate = [
'/educ/biographie-langagiere' => 'Biographie langagière',
0 => $suffix
];
$this->title_page .= ' - ' . $suffix;
}
return $this->view('educ/' . $wantedPage . '.html.twig');
}
// }}}
// {{{ action_avignon()
/** les spectacles avignon auteurs
*
*/
public function action_avignon() {
$this->getAvignonPersons('authors');
$festival_avignon = array(
array(
'name' => '+ d\'infos',
'key_url' => '/contacts/Festival-Avignon/'
)
);
//asides
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $festival_avignon,
'url' => 'key_url'
),
'title' => 'Festival d\'Avignon'
)]);
}
// }}}
// {{{ action_avignon_metteurs()
/** metteurs en scène des spectacles d'avignon
*
*/
public function action_avignon_metteurs() {
$this->getAvignonPersons('directors');
$festival_avignon = array(
array(
'name' => '+ d\'infos',
'key_url' => '/contacts/Festival-Avignon/'
)
);
//asides
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $festival_avignon,
'url' => 'key_url'
),
'title' => 'Festival d\'Avignon'
)]);
}
// }}}
// {{{ action_avignon_spectacle()
/** Spectacles bénéficiants d'un contenu pièce démontée
*
*/
public function action_avignon_spectacle() {
$this->getActionSpectaclesClassification($this->getListSpectaclesAvignon(),'avignon',233);
$festival_avignon = array(
array(
'name' => '+ d\'infos',
'key_url' => '/contacts/Festival-Avignon/'
)
);
//asides
$this->asides->load(['par_saison_alone' => array(
'action' => '/educ/avignon-spectacle/{v_area_view}'
)]);
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $festival_avignon,
'url' => 'key_url'
),
'title' => 'Festival d\'Avignon'
)]);
}
// }}}
// {{{ action_eduscol()
/** éduscol
*
*/
public function action_eduscol() {
$type_person = 'authors';
// trouver également les texts qui ont un contenus associés pédagogique en excluant les spectacles
$params_texts = array(
'special' => array(
'idclassification' => array(139),
'join' => true,
),
'params' => array(
'limit' => array(0,2000),
),
'dbg' => array('list_texts', 'Liste des texts avec un contenu Eduscol'),
);
$texts_list = $this->em->getRepository(Texts::class)->getListTexts($params_texts);
if(!empty($texts_list)) {
// les spectacles par auteurs / piècé demontée
$persons = $this->em->getRepository(Persons::class);
foreach($texts_list as $s) {
// les auteurs
foreach($s['allauthors'] as $k=>$v) {
if(empty($results[$v['lastname'].'_'.$v['firstname']])) {
$results[$v['lastname'].'_'.$v['firstname']] = array(
'idperson' => $v['idperson'],
'lastname' => $v['lastname'],
'firstname' => $v['firstname'],
'url_clean' => $v['url_clean'],
'texts' => array($s),
);
$thumbnail = $persons->getVignettePerson($v['idperson'],array('width'=>100,'height'=>100,'direction'=>'crop'));
if(strpos($thumbnail, 'normal-def')===false) {
$results[$v['lastname'].'_'.$v['firstname']]['photo'] = $thumbnail;
}
} else {
$results[$v['lastname'].'_'.$v['firstname']]['texts'][] = $s;
}
}
}
}
foreach($results as $k=>$v) {
if(count($v['texts'])>4) {
$results[$k]['is_list'] = true;
}
}
ksort($results);
$this->context['view']->$type_person = $results;
$eduscol_infos = array(
array(
'name' => '+ d\'infos',
'key_url' => 'http://eduscol.education.fr/'
)
);
//asides
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $eduscol_infos,
'url' => 'key_url'
),
'title' => 'Éduscol'
)]);
}
// }}}
// {{{ action_ajouter()
/** Ajouter un contenu pédagogique
*
*/
public function action_ajouter() {}
// }}}
// {{{ getPieceDemonteePersons()
/** les auteurs ou metteurs en scène avec des pièces démontées
*
*/
public function getPieceDemonteePersons($type_person='authors') { $this->getCommonPersons($type_person,$this->getListSpectaclesPieceDemontee()); }
// }}}
// {{{ getListSpectaclesEduc()
/** Liste des spectacles dans le lieu
*
* @return array
*/
protected function getListSpectaclesEduc($idclassification=125,$type_result='ids_spectacle_educ',$with_text=false) {
return $this->getListSpectaclesCommon($idclassification,$type_result,$with_text);
}
// }}}
// {{{ getListSpectaclesPieceDemontee()
/** Liste des spectacles avec pièce démontée
*
* @return array
*/
protected function getListSpectaclesPieceDemontee() { return $this->getListSpectaclesCommon(82,'ids_spectacle_piece_demontee'); }
// }}}
// {{{ getListSpectaclesTheatreEnActe()
/** Liste des spectacles avec pièce démontée
*
* @return array
*/
protected function getListSpectaclesTheatreEnActe() { return $this->getListSpectaclesCommon(207, 'ids_spectacle_theatre_en_acte'); }
// }}}
// {{{ getListSpectaclesAvignon()
/** Liste des spectacles avec pièce démontée
*
* @return array
*/
protected function getListSpectaclesAvignon() {
$idcontact = 233;
$idclassification = 125;
$type_result = 'ids_spectacle_avignon';
// trouver les spectacles qui ont des contenus éduc => 125 et qui sont joués à avignon
$sql = 'SELECT s.`idspectacle` FROM spectacles s
JOIN object_content oc ON oc.`idobject`=s.`idspectacle`
JOIN contents c ON c.`idcontent`=oc.`idcontent`
JOIN content_classification cc ON cc.`idcontent`=c.`idcontent`
JOIN schedules sc ON sc.`idspectacle`=s.`idspectacle`
WHERE c.publish=1
AND oc.object=\'spectacles\'
AND cc.idclassification='.(int)$idclassification.'
AND sc.idcontact='.(int)$idcontact.'
AND s.`publish`=1 AND s.`valid`=1';
$idspectacles = $this->spectacles->queryCol($sql);
$this->{$type_result} = $idspectacles;
return $idspectacles;
}
// }}}
// {{{ getListSpectaclesMinutePedagogique()
/** Liste des spectacles avec minute pedagogique
*
* @return array
*/
protected function getListSpectaclesMinutePedagogique() {
$idclassification = 145;
$type_result = 'ids_spectacle_minute_pedagogique';
$sql = 'SELECT spectacles.`idspectacle`
FROM
`object_multimedia` ,
`schedules` ,
`spectacles` ,
`contacts` ,
`multimedias` ,
`multimedia_classification`
WHERE multimedias.`publish`=1
AND object_multimedia.`object`="spectacles"
AND object_multimedia.`idrole` IS NULL
AND multimedia_classification.`idclassification`='.(int)$idclassification.'
AND multimedias.`idmultimedia`=object_multimedia.`idmultimedia`
AND schedules.`idspectacle`=spectacles.`idspectacle`
AND spectacles.`idspectacle`=object_multimedia.`idobject`
AND contacts.`idcontact`=schedules.`idcontact`
AND multimedias.`idmultimedia`=multimedia_classification.`idmultimedia`
GROUP BY object_multimedia.`idobject`';
$idspectacles = $this->spectacles->queryCol($sql);
$this->{$type_result} = $idspectacles;
return $idspectacles;
}
// }}}
// {{{ getAvignonPersons()
/** les auteurs ou metteurs en scène avec des spectacles avignon
*
*/
public function getAvignonPersons($type_person='authors') { $this->getCommonPersons($type_person,$this->getListSpectaclesAvignon()); }
// }}}
// {{{ getCommonPersons()
/** les auteurs ou metteurs en scène
*
*/
public function getCommonPersons($type_person='authors',$idspectacles)
{
$spectacles_list = $this->spectacles->getListSpectacles(array(
'special' => array(
'idspectacle' => $idspectacles,
),
'params' => array(
'limit' => array(0,200)
),
'dbg' => array('list_spectacles_'.$type_person, 'Liste des spectacles'),
));
// les spectacles par auteurs / piècé demontée
$persons = $this->em->getRepository(Persons::class);
// recherche par type d'auteurs
$periodes = array(
'vivant' => 'vivants',
'contemporain' => 'contemporains',
'public' => 'du domaine public',
);
if(!empty($this->context['params']['periode']) && array_key_exists($this->context['params']['periode'],$periodes)) {
$periode = trim(htmlspecialchars(strip_tags($this->context['params']['periode'])));
$this->context['view']->periode = $periodes[$periode];
} else {
$this->context['view']->periode = '';
}
if(!empty($spectacles_list)) {
foreach($spectacles_list as $s) {
// les auteurs
foreach($s['all'.$type_person] as $k=>$v) {
if(empty($results[$v['lastname'].'_'.$v['firstname']])) {
$results[$v['lastname'].'_'.$v['firstname']] = array(
'lastname' => $v['lastname'],
'firstname' => $v['firstname'],
'idperson' => $v['idperson'],
'url_clean' => $v['url_clean'],
'spectacles' => array(
$s
),
);
if($s['textfictif']==0) {
$results[$v['lastname'].'_'.$v['firstname']]['textreel'] = 1;
}
$thumbnail = $persons->getVignettePerson($v['idperson'],array('width'=>$_ENV['VIGN_PERSONS_WIDTH'],'height'=>$_ENV['VIGN_PERSONS_HEIGHT'],'direction'=>'crop'));
if(strpos($thumbnail, 'normal-def')===false) {
$results[$v['lastname'].'_'.$v['firstname']]['photo'] = $thumbnail;
}
} else {
if($s['textfictif']==0) {
$results[$v['lastname'].'_'.$v['firstname']]['textreel'] = 1;
}
$results[$v['lastname'].'_'.$v['firstname']]['spectacles'][] = $s;
}
}
}
}
foreach($results as $k=>$v) {
// suprimer les auteurs qui n'ont que des textes fictifs
if(empty($v['textreel']) && $type_person=='authors') {
unset($results[$k]);
continue;
}
if(count($v['spectacles'])>4) {
$results[$k]['is_list'] = true;
}
}
if($type_person=='authors') {
// récupèrer également les dates de l'auteur dans le cas d'une recherche par période
foreach($results as $k=>$v) {
$infos = $this->em->getRepository(Persons::class)->getInfosPerson($v['idperson']);
// les contemporains
if(!empty($infos['dateend'])) {
if($infos['dateend']<0) {
$infos['dateend'] = str_replace('-', '', $infos['dateend']);
$infos['dateend'] = str_pad($infos['dateend'], 4, '0', STR_PAD_LEFT);
$infos['dateend'] = '-'.$infos['dateend'];
} else {
$infos['dateend'] = str_pad($infos['dateend'], 4, '0', STR_PAD_LEFT);
}
$today = new \DateTime(date('Y-m-d'));
$dateend = new \DateTime($infos['dateend'].'-01-01');
$interval = $dateend->diff($today);
if($interval->format('%Y')>70) {
$periode_person = 'public';
} else {
$periode_person = 'contemporain';
}
} else {
$periode_person = 'vivant';
}
$results[$k]['periode'] = $periode_person;
}
// tri periode
if(!empty($periode)) {
foreach($results as $k=>$v) {
// pour les contemporains
if($periode=='contemporain' && $v['periode']=='vivant') {
continue;
}
if($v['periode']!=$periode) {
unset($results[$k]);
}
}
}
} // fin période
ksort($results);
$this->context['view']->$type_person = $results;
}
// }}}
// {{{ getActionSpectaclesClassification()
/** Spectacles bénéficiants d'un contenu specifique
*
*/
protected function getActionSpectaclesClassification($idspectacles,$name='educ',$idcontact=null,$get_texts=false,$next_by_default=false,$params=array())
{
// recherche une année ?
$saison = $this->getSaison();
// les dates des spectacles de tous les spectacles
$listdates = $this->getSpectaclesDatesCommon($idspectacles);
// récupérer la liste des années et des saisons et générer les listes déroulantes
$annees_saisons = $this->getListSeasonsYears($listdates,null,true);
// liste des saisons
$this->getCommonSearch(array(
'saisons_annees' => [
'saisons' => $annees_saisons['saisons']
]
));
$this->getCommonSearchView();
//Si on ne veux pas les prochains spectacles
if(!empty($listdates) && empty($params['prochains'])) {
$this->view->saisons = $annees_saisons['saisons'];
}
if($next_by_default) {
// si aucune recherche par person, par année ou par saison => recherche par saison
if(empty($saison) && empty($idperson_director) && empty($idperson_author) && empty($params['prochains'])){
// prendre la dernière saison
$saison = Date_time::getLastSaison($annees_saisons['saisons']);
}
}
// recherche par saison
if(!empty($saison) && empty($params['prochains']) && empty($params['saison_desactive'])){
$annees_saison = explode('-', $saison);
if(count($annees_saison)==2) {
$datestart = Date_time::getSaisonDatestart((int)$annees_saison[0]);
$dateend = Date_time::getSaisonDateend((int)$annees_saison[1]);
}
// saison de recherche
$this->view->saison = $saison;
// saison précédente / suivante
$this->view->saisons_nav = $this->getSaisonsNav($annees_saisons['saisons'],$saison);
}
$choix_type = array('SN','TN','CDN','SC');
// les types de structure
$typesstructure_list = $this->em->getRepository(Typesstructures::class)->getTypeStructureList(true,true,$choix_type);
// type de structure recherchée
if(!empty($_REQUEST['idtypestructure']) && array_key_exists($_REQUEST['idtypestructure'], $typesstructure_list)) {
$this->context['view']->idtypestructure = filter_var($_REQUEST['idtypestructure'], FILTER_SANITIZE_STRING);
foreach(array('typestructure','typestructure_pluriel') as $s) {
$typesstructure_list_simple[$s] = strtolower($typesstructure_list[$this->context['view']->idtypestructure][$s]);
}
$typesstructure_list_simple['idtypestructure'] = $this->context['view']->idtypestructure;
$this->context['view']->typestructure = $typesstructure_list_simple;
}
// recherche période
if(!empty($datestart) && !empty($dateend)) {
$where_search = ' AND sc.`date` BETWEEN \''.$datestart.'\' AND \''.$dateend.'\' ';
}
// recherche dans un lieu précis (Avignon Style)
if(!empty($idcontact)) {
$where_idcontact = ' AND c.`idcontact`='.(int)$idcontact.' ';
$where_search .= $where_idcontact;
}
$params_spectacles = array(
'special' => array(
'idspectacle' => $idspectacles,
// 'plus_proche' => true
),
'params' => array(
'limit' => 'all',
),
'dbg' => array('list_spectacles_'.$name, 'Liste des spectacles avec un contenu '.$name),
);
if(!empty($where_search)) {
$params_spectacles['params']['where'] = $where_search;
}
if($next_by_default && empty($datestart) && empty($dateend) && empty($saison)) {
$params_spectacles['special']['prochains'] = 'all';
$this->context['view']->prochains = true;
}
//on récupère les prochains spectacles hors saison et hors date prochains/à venir
if(!empty($params['order'])){
$params_spectacles['params']['order'] = $params['order'];
}
//on récupère les prochains spectacles hors saison et hors date prochains/à venir
if(!empty($params['prochains'])){
$params_spectacles['special']['prochains'] = $params['prochains'].'';
}
if(!empty($params['tri_date_creation'])){
$params_spectacles['params']['order'] = ['creation_date', 'DESC'];
}
if(!empty($params['limit'])){
$params_spectacles['params']['limit'] = $params['limit'];
}
// une région en particulier ?
$params_spectacles = $this->setAreaRecherche($params_spectacles);
if(array_key_exists('idtypestructure', (array)$this->context['view'])){
$params_spectacles['special']['structures_specifiques'] = true;
$params_spectacles['special']['idtypestructure'] = $this->context['view']->idtypestructure;
}
if(array_key_exists('perPage', $params)){
$url_custom = '/educ/'.$this->context['action'];
if(is_numeric($params['perPage'])){
$this->perPage = $params['perPage'];
}
elseif(is_array($params['perPage'])){
if(array_key_exists('limit', $params['perPage'])){
$this->perPage = $params['perPage']['limit'];
}
if(array_key_exists('url_custom', $params['perPage'])){
$urlpagination = new asidesUrlPagination(
$params['perPage']['url_custom'].'generate_params',
array(
'area' => $this->context['view']->area,
'saison' => (!empty($this->context['view']->saison)) ? $this->context['view']->saison : false,
),
$this->context
);
$url_custom = $urlpagination->url_pagination();
}
}
$this->context['view']->nb_spectacles_total = $this->spectacles->countListSpectacles($params_spectacles);
$this->context['view']->pagination = $this->getPagination($this->context['view']->nb_spectacles_total, 10);
$params_spectacles['params']['limit'] = array($this->getLimitStart(),$this->perPage);
// $this->context['view']->pagination['url_custom'] = $url_custom;
$this->context['view']->pagination['spectacle'] = true;
}
$allauthors = array('allauthors' => true);
$this->context['view']->spectacles = $this->spectacles->getListSpectacles($params_spectacles,array(),false,$allauthors);
$i = 0;
foreach($this->context['view']->spectacles as $k=>$v) {
$this->context['view']->spectacles[$k]['url_clean_more'] = 'contenus-pedagogiques/';
// retrouver des textes
if(!empty($get_texts) && !empty($v['idtext']) && $v['textfictif']==0) {
$idtexts[$v['idtext']] = $v['idtext'];
}
if($v['textfictif']==0) {
$i++;
}
}
if(!empty($idtexts)) {
$this->context['view']->texts = $this->em->getRepository(Texts::class)->getListTexts(
array(
'params' => array(
'limit' => 'all',
),
'special' => array(
'idtext' => array('IN', $idtexts),
),
'dbg' => array('texts_educ','Textes avec contenus pédagogiques'),
),
array(
'stylemore' => array('imagep' => 'width:75px;', 'desctxt' => 'width:190px;'),
'vignette_format' => array('width'=>$_ENV['VIGN_TEXT_WIDTH'],'height'=>$_ENV['VIGN_TEXT_HEIGHT'],'direction'=>'thumb')
)
);
if(!empty($this->context['view']->texts)) {
foreach($this->context['view']->texts as $k=>$v) {
$this->context['view']->texts[$k]['url_clean_more'] = 'contenus-pedagogiques/';
}
}
}
}
// }}}
// {{{ getListSpectaclesCommon()
/** Liste des spectacles avec classification spécifique
*
* @return array
*/
protected function getListSpectaclesCommon($idclassification,$type_result='ids_spectacle_educ',$with_text=false)
{
// trouver les spectacles qui ont des contenus éduc => 125
$sql = 'SELECT s.`idspectacle` FROM spectacles s
JOIN object_content oc ON oc.`idobject`=s.`idspectacle`
JOIN contents c ON c.`idcontent`=oc.`idcontent`
JOIN content_classification cc ON cc.`idcontent`=c.`idcontent`
WHERE c.publish=1
AND oc.object=\'spectacles\'
AND cc.idclassification='.(int)$idclassification.'
AND s.`publish`=1 AND s.`valid`=1';
$idspectacles_from_spectacles = $this->spectacles->queryCol($sql);
if(!empty($idspectacles_from_spectacles)) {
foreach($idspectacles_from_spectacles as $k=>$v) {
$ids[$v] = $v;
}
}
// si pas de contenu associé éduc sur le spectacle
if($with_text) {
// trouver les spectacles de texte qui ont des contenus éduc
$sql = 'SELECT ts.`idspectacle` FROM texts t
JOIN text_spectacle ts ON ts.`idtext`=t.`idtext`
JOIN object_content oc ON oc.`idobject`=t.`idtext`
JOIN contents c ON c.`idcontent`=oc.`idcontent`
JOIN content_classification cc ON cc.`idcontent`=c.`idcontent`
WHERE c.publish=1
AND oc.object=\'texts\'
AND cc.idclassification='.(int)$idclassification.'
AND t.`publish`=1 AND t.`valid`=1';
$idspectacles_from_texts = $this->spectacles->queryCol($sql);
if(!empty($idspectacles_from_texts)) {
foreach($idspectacles_from_texts as $k=>$v) {
$ids[$v] = $v;
}
}
}
if(isset($ids)){
$this->{$type_result} = $ids;
return $ids;
}
else{
return array();
}
}
// }}}
// {{{ getListTextsCommon()
/** Liste des textes avec classification spécifique
*
* @return array
*/
protected function getListTextsCommon($idclassification,$type_result='ids_text_educ')
{
// trouver les textes qui ont des contenus éduc => 125 par exemple
$sql = 'SELECT t.`idtext`, c.`idcontent` FROM texts t
JOIN object_content oc ON oc.`idobject`=t.`idtext`
JOIN contents c ON c.`idcontent`=oc.`idcontent`
JOIN content_classification cc ON cc.`idcontent`=c.`idcontent`
WHERE c.publish=1
AND oc.object=\'texts\'
AND cc.idclassification='.(int)$idclassification.'
AND t.`publish`=1 AND t.`valid`=1';
$idtexts = $this->texts->queryAll($sql);
$this->{$type_result} = $idtexts;
return $idtexts;
}
// }}}
// {{{ getSpectaclesDatesCommon()
/** Récupere la liste des dates des spectacles à partir de la liste de tous les spectacles
*
* @return array
*/
public function getSpectaclesDatesCommon($ids_spectacle=array(),$ids_text=array())
{
if(!empty($ids_spectacle)) {
$sql_annees = '
SELECT schedules.`date`, YEAR(schedules.`date`) as annee
FROM schedules, spectacles
WHERE schedules.`idspectacle`=spectacles.`idspectacle`
AND spectacles.`publish`=1
AND schedules.`idspectacle` IN ('.join(',', $ids_spectacle).')
ORDER BY schedules.`date`';
}
if(!empty($ids_text)) {
$sql_annees = '
SELECT schedules.`date`, YEAR(schedules.`date`) as annee
FROM schedules, spectacles
JOIN text_spectacle ON spectacles.`idspectacle`=text_spectacle.`idtext`
WHERE schedules.`idspectacle`=spectacles.`idspectacle`
AND spectacles.`publish`=1
AND text_spectacle.`idtext` IN ('.join(',', $ids_text).')
ORDER BY schedules.`date`';
}
//si $sql_annees n'existe pas
if(!isset($sql_annees)){
return array();
}
$listdates = $this->spectacles->queryAll($sql_annees);
// liste des saisons et des années
if(empty($listdates)) {
//echo $listdates->getDebugInfos();
return array();
} else {
return $listdates;
}
}
// }}}
// {{{ getCommonInfos()
/** Récupere des infos pour les menus auteurs, textes, spectacles
*
* @return void
*/
protected function getCommonInfos()
{
// menu pour piece demontee
$this->context['view']->menu_contents = array(
'auteurs' => array('name' => 'Auteurs'),
'textes' => array('name' => 'Textes'),
'spectacles' => array('name' => 'Spectacles'),
);
if(!empty($this->context['view']->custom_menu_area)){
$this->asides->load(['url_lists,menu_' => array(
'exec' => array(
'htmlstart' => true,
'htmlend' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/educ/key_page/generate_params',
'urls' => $this->context['view']->menu_contents,
'params' => array(
'key_page' => 'auto_key',
'activate' => $this->context['action']
),
'structure' => array(
'area' => $this->context['view']->area
)
),
'title' => 'Navigation'
)]);
}
// ajouter masonery
$this->context['view']->js_more[] = 'jquery.masonry.min.js';
// style en plus
$this->context['view']->style_more = array(
'dossier',
'rubrique',
'pageregion'
);
}
// }}}
// {{{ getLocate()
/** Ou se trouve t'on (getter)
*
*/
public function getLocate() { return $this->locate; }
// }}}
// {{{ getBioLangSpectacles()
/** Récupère les spectacles qui ont des contenus bio lang => 137
*
*/
public function getBioLangSpectacles() {
$sql = 'SELECT s.`idspectacle` FROM spectacles s
JOIN object_content oc ON oc.`idobject` = s.`idspectacle`
JOIN contents c ON c.`idcontent` = oc.`idcontent`
JOIN content_classification cc ON cc.`idcontent` = c.`idcontent`
WHERE c.`publish` = 1
AND oc.`object` = \'spectacles\'
AND cc.`idclassification` = 245
AND s.`publish` = 1
AND s.`valid` = 1
';
$idspectacles = $this->spectacles->queryCol($sql);
$params_spectacles = [
'special' => [
'idspectacle' => $idspectacles
],
'params' => [
'limit' => [0, 200]
],
'dbg' => ['list_spectacles', 'Liste des spectacles avec une bio lang']
];
$spectacles_list = $this->spectacles->getListSpectacles($params_spectacles);
if (!empty($spectacles_list)) {
foreach($spectacles_list as $k => $v) {
$spectacles_list[$k]['url_clean_more'] = 'contenus-pedagogiques/';
}
}
return $spectacles_list;
}
// }}}
// {{{ getBioLangTexts()
/** Récupère les textes pour les pages biographie langagière
*
*/
public function getBioLangTexts ()
{
$params_texts = [
'special' => [
'idclassification' => [137]
],
'params' => [
'limit' => [0, 200]
],
'dbg' => ['list_textes', 'Liste des textes avec une bio lang']
];
$texts_list = $this->em->getRepository(Texts::class)->getListTexts($params_texts);
if (!empty($texts_list)) {
foreach ($texts_list as $k => $v) {
$texts_list[$k]['url_clean_more'] = 'contenus-pedagogiques/';
}
}
return $texts_list;
}
}