<?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 Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use TheatreCore\Entity\Aides;
use TheatreCore\Entity\Classifications;
use TheatreCore\Entity\Contents;
use TheatreCore\Entity\Podcasts;
use TheatreCore\Entity\Spectacles;
use TheatreCore\Entity\SpectacleAide;
use TheatreCore\Entity\Typesstructures;
class CritiquesController extends TheatreController
{
// id de la table
protected $idcontent = null;
// nom de l'objet
protected $contents;
// paramètres
protected $params;
// infos sur la critique
public $data_object = null;
// pagination
protected $paged_data = array();
//aside
protected $asides;
// {{{ _construct()
/** constructeur hérité
*
*/
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator, TokenStorageInterface $tokenStorage, Abonnements $abonnements)
{
$GLOBALS['rub_courante'] = 'critiques';
$this->em = $em;
// hérite du constructeur parent
parent::__construct($translator, $tokenStorage);
$this->serviceAbonnements = $abonnements;
}
private function InitController($idcontent = null, $action = null)
{
// id de l'objet
$this->idcontent = $idcontent;
$this->context['action'] = $this->view->action = $action;
// objet contents
$this->contents = $this->em->getRepository(Contents::class);
$this->asides = new asides();
}
// {{{ finalizeAction()
/** Code exécuté après chaque action
*
*
* @access protected
* @return void
*/
protected function finalizeAction()
{
$this->context['view']->nombre_total_critiques = $this->contents->countContents(['idclassifications' => 101]);
$this->context['view']->meta_description = 'Listes des critiques des prochainses mies-en-scènes de la création scénique dans les pays francophones et en langue française dans le monde. Le site propose l’actualité en régions, des contenus pédagogiques, des vidéos, des critiques...';
if(!empty($this->asides)){
$this->context['view']->aside = $this->asides->view($this->context['view']);
}
$menu_contents = array(
'actualites' => array(
'name' => 'actualités',
'key_url' => 'actualites',
),
'spectacles' => array(
'name' => 'en scène',
'key_url' => 'spectacles',
),
'recommandations' => array(
'name' => 'Recommandations',
'key_url' => 'recommandations'
),
'critique' => array(
'name' => 'Dernières parutions',
'key_url' => '',
'key_url_2' => 'view',
),
'audios' => array(
'name' => 'audio',
'key_url' => 'audios',
)
);
$asides_top = new asides();
if (!empty($this->context['view']->area_active) && $this->context['view']->area_active) {
$asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlRegions',
)
)
]);
} else if (isset($this->context['view']->idtypestructure)) {
$asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlListsMenuCDN'
)
)
]);
} else {
$asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/critiques/key_url',
'urls' => $menu_contents,
'params' => [
'activate' => $this->context['action']
]
),
)]);
}
$this->context['view']->aside_top = $asides_top->view($this->context['view']);
}
// }}}
// {{{ audiosactualites()
/** Actualité des critiques
*
* @Route("/critiques/actualites", name="critiques_actualites")
*
*/
public function action_actualites()
{
$this->InitController(null, 'actualites');
//Les deux dernières critiques
$this->getListCritiques(array(), ['vignette_large_format' => true, 'perPage' => 2]);
$params_sql = array(
'params' => array(
'limit' => [0,8],
),
'special' => array(
'prochains' => true,
'idclassification' => 101,
'publish_valid' => true,
),
'dbg' => array('scenes','Les spectacles à l\'affiche avec une critique'),
);
$vignettes_spectacles = ['vignette' => array('width'=>$_ENV['VIGN_SPECTACLE_WIDTH'],'height'=>$_ENV['VIGN_SPECTACLE_HEIGHT'],'direction'=>'crop')];
$display_spectacles = ['allauthors' => true];
$spectacles = $this->em->getRepository(Spectacles::class);
//Les prochains spectacles à l'affiche
$spectacles_datas = $spectacles->getListSpectacles( $params_sql, $vignettes_spectacles, false, $display_spectacles );
foreach($spectacles_datas AS $k=>$v) {
$spectacles_datas[$k]['footer_critique'] = true;
$spectacles_datas[$k]['nombre_critique'] = $this->em->getRepository(Contents::class)->countAssociateContent('spectacles',$v['idspectacle'],'class_critique',array('publish_valid' => 1));
$spectacles_datas[$k]['url_clean_more'] = 'critiques/';
}
$this->context['view']->list_spectacles = $spectacles_datas;
//Les prochains spectacles par émission
$params_sql['special']['podcasts']['emission'] = ['la-dispute', 'le-masque-et-la-plume'];
$display_spectacles['carrer_couleurs'] = true;
$list_spectacles_emissions = $spectacles->getListSpectacles( $params_sql, $vignettes_spectacles, false, $display_spectacles );
foreach($list_spectacles_emissions as $key=>$val) {
$list_spectacles_emissions[$key]['footer_contact'] = true;
}
$this->context['view']->list_spectacles_emissions = $list_spectacles_emissions;
//Les derniers podcasts
$franceculture_params = array(
'limit' => array(0, 3),
'special' => array(
'emission' => ['la-dispute', 'le-masque-et-la-plume']
),
'dbg' => array('derniers_franceculture', 'Les trois derniers podcasts france radio référencés'),
);
$display['display']['vignette'] = array('width'=>$_ENV['VIGN_SPECTACLE_WIDTH'],'height'=>$_ENV['VIGN_SPECTACLE_HEIGHT']);
$this->context['view']->spectacles_prochains = $this->em->getRepository(Spectacles::class)->getListSpectacles($params_sql, $display, null, array('allauthors' => true, 'carrer_couleurs' => true));
$podcasts = $this->em->getRepository(Podcasts::class);
$api_derniers_franceculture = $podcasts->getListPodcasts($franceculture_params);
foreach ($api_derniers_franceculture AS $k => $v) {
$currentDate = $v['datePodcast']->format('Y-m-d');
if(empty($derniers_franceculture[$currentDate])) {
$derniers_franceculture[$currentDate]['date'] = $podcasts->getFormeDate($v['datePodcast'], '%a %d %B %Y', true); //%a %d/%m/%Y
}
$derniers_franceculture[$currentDate]['datas'][] = $v;
}
$this->context['view']->podcasts_par_date = $derniers_franceculture;
$this->asides->load('common_carte');
asides::setEntityManager($this->em);
asides::loadaside('Publicite')->addWithNational($this->asides); //$this->area
// $this->asides->load('videos_nb_vid');
$this->asides->load('common_facebook');
$this->asides->load('common_twitter');
$this->asides->load('common_participer_contacts');
$this->asides->load('common_culturebox');
// situation et titre meta
$this->view->title_page = 'L\'Actualité des critiques';
$this->view->locate = array(
'/critiques/' => 'Espace critique',
0 => 'Actualités',
);
//On affiche la publicité google
$asides_publicite = new asides();
asides::setEntityManager($this->em);
asides::loadaside('Publicite')->addGoogle($asides_publicite, $this->serviceAbonnements);
$this->context['view']->asides_publicite = $asides_publicite->view($this->context['view']);
return $this->view('critiques/actualites.html.twig');
}
// }}}
// {{{ action_audios()
/** Critiques en audio
*
* @Route("/critiques/audios", name="critiques_audios")
* @Route("/critiques/audios/emission/{emission}", name="critiques_audios_emission")
*
*/
public function action_audios($emission = null)
{
$this->InitController(null, 'audios');
$this->context['params']['emission'] = $emission;
$emissions = [ 'la-dispute','le-masque-et-la-plume' ];
$podcasts = $this->em->getRepository(Podcasts::class);
$culturebox_params = array(
'direction' => 'DESC',
'special' => array(
'emission' => $emissions
),
'dbg' => array('derniers_culturebox_current', 'Les replay France Culture référencés'),
);
//On récupère les podcasts une émission spécifique
if(!empty($emission) && in_array($emission, $emissions)){
$culturebox_params['special']['emission'] = [$emission];
}
//On récupère toutes les émissions sans distinctions (d'après le contenu de la variable $emissionS)
else{
$culturebox_params['special']['emission'] = $emissions;
}
$this->perPage = 20;
//Nombre total de podcasts
$total_podcasts = $podcasts->countListPodcasts($culturebox_params);
$this->context['view']->pagination = $this->getPagination($total_podcasts);
$this->context['view']->pagination['totalItems'] = $total_podcasts;
$this->context['view']->pagination['custom'] = true;
$this->context['view']->pagination['custom_name'] = "podcasts";
$culturebox_params['limit'] = array($this->getLimitStart(), $this->perPage);
//données renvoyées à la vue
$this->context['view']->list_captations = $podcasts->getListPodcasts($culturebox_params);
$this->asides->load(['url_lists_alone,listes_emissions' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => [
[
'name' => 'Toutes les émissions',
'key_emission' => false,
'key_emission_2' => 'toutes'
],
[
'name' => 'La Dispute',
'key_emission' => 'la-dispute'
],
[
'name' => 'Le Masque et la plume',
'key_emission' => 'le-masque-et-la-plume'
]
],
'url' => '/critiques/audios/generate_params',
'params' => array(
'activate' => ($emission) ? $emission : 'toutes'
),
'structure' => array(
'emission' => 'key_emission'
)
),
'title' => 'émissions critiques'
)]);
$this->asides->load([
'contact_franceculture_menu,autres' => [
'php' => [
'method' => 'asidesPodcasts',
'params' => [
'station' => 'soundcloud',
'em' => $this->em
]
]
]
]);
$this->asides->load([
'contact_franceculture_menu,franceculture' => [
'php' => [
'method' => 'asidesPodcasts',
'params' => [
'station' => 'franceculture',
'em' => $this->em
]
]
]
]);
$this->asides->load([
'contact_franceculture_menu,franceinter' => [
'php' => [
'method' => 'asidesPodcasts',
'params' => [
'station' => 'franceinter',
'em' => $this->em
]
]
]
]);
$this->asides->load('common_carte');
// situation et titre meta
$this->view->title_page = 'Les spectacles à l\'affiche avec une critique';
$this->view->locate = array(
'/critiques/' => 'Espace critique',
0 => 'Spectacles à l\'affiche',
);
return $this->view('critiques/audios.html.twig');
}
// }}}
// {{{ action_view()
/** Dernières parutions
*
* @Route("/critiques/", name="critiques_accueil")
*
*/
public function action_view()
{
$this->InitController(null, 'view');
$this->getListCritiques(array(), ['vignette_large_format' => true]);
$this->getAsidesDernieresParutions();
$this->view->title_page = 'Toutes les critiques des spectacles de théâtre actuellement à l\'affiche';
$this->view->locate = array(0 => 'Espace critique');
return $this->view('critiques/view.html.twig');
}
// }}}
// {{{ action_spectacles()
/** Spectacles à l'affiche
*
* @Route("/critiques/spectacles", name="critiques_spectacles")
* @Route("/critiques/spectacles/type/{type}", name="critiques_spectacles_type")
* @Route("/critiques/spectacles/area/{area}", name="critiques_spectacles_area")
* @Route("/critiques/spectacles/type/{type}/area/{area}", name="critiques_spectacles_type_area")
*
*/
public function action_spectacles(Request $request, $type = null, $area = null)
{
$this->context['params']['type'] = $type;
$this->context['params']['area'] = $area;
$this->InitController(null, 'spectacles');
$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;
}
// saison courante
$this->context['view']->current_saison = Date_time::getLastSaison();
$this->context['view']->menu_jours = array(
3 => array('name' => '3 prochains jours','key_day' => 3),
7 => array('name' => '7 prochains jours','key_day' => 7),
30 => array('name' => '30 prochains jours','key_day' => 30),
// 90 => array('name' => '3 prochains mois','key_day' => 90),
// 365 => array('name' => '12 prochains mois','key_day' => 365),
//'saison' => array('name' => 'au cours de la saison '.$this->context['view']->current_saison),
);
// une saison ?
$this->context['view']->saison = Date_time::getSaisonParam();
// une période ?
$this->context['view']->datestart = Date_time::getDateParam('datestart');
$this->context['view']->dateend = Date_time::getDateParam('dateend');
if(!Date_time::checkDateFormat($this->context['view']->datestart)) {
$this->context['view']->datestart = null;
} else {
$this->context['view']->datestart_string = $this->em->getRepository(Spectacles::class)->getFormeDate($this->context['view']->datestart,'d/m/y');
}
if(!Date_time::checkDateFormat($this->context['view']->dateend)) {
$this->context['view']->dateend = null;
} else {
$this->context['view']->dateend_string = $this->em->getRepository(Spectacles::class)->getFormeDate($this->context['view']->dateend,'d/m/y');
}
// un nombre de jours ?
$this->context['view']->days = Date_time::getDaysParam($this->context['view']->menu_jours, 30);
$this->context['view']->days_name = $this->context['view']->menu_jours[$this->context['view']->days]['name'];
// une année ?
$this->context['view']->year = Date_time::getYearParam();
if(!$this->context['view']->saison && !$this->context['view']->year && !$this->context['view']->days && !$this->context['view']->datestart && !$this->context['view']->dateend) {
if(!empty($this->context['params']['area']) && $this->context['params']['area']!=11) {
$this->context['view']->days = 30;
} else {
$this->context['view']->days = 30;
}
}
$type = 'tous';
if(!empty($this->context['params']['type']) && in_array($this->context['params']['type'], ['emissions'])) {
$type = $this->context['params']['type'];
}
$this->context['view']->type = $type;
$this->context['view']->{'type_'.$type} = true;
$spectacles = $this->em->getRepository(Spectacles::class);
$total_count_sql = $params_sql = array(
'params' => array(
'limit' => 'all',
),
'special' => array(
'prochains' => true,
'idclassification' => 101,
'publish_valid' => true,
),
'dbg' => array('scenes','Les spectacles à l\'affiche avec une critique'),
);
if($type == 'emissions') {
$params_sql['special']['podcasts'] = [
'emission' => ['la-dispute', 'le-masque-et-la-plume'],
'publish' => 1
];
}
// recherche par saison
if(!empty($this->context['view']->saison)) {
$params_sql['special']['saison'] = $this->context['view']->saison;
$this->context['view']->days = null;
} elseif(!empty($this->context['view']->year)) { // recherche par année
$params_sql['special']['year'] = $this->context['view']->year;
$this->context['view']->days = null;
} elseif(!empty($this->context['view']->datestart) && !empty($this->context['view']->dateend)) { // par période
$params_sql['special']['period'] = array(
'start' => $this->context['view']->datestart,
'end' => $this->context['view']->dateend,
);
$this->context['view']->days = null;
} else { // prochains jours
$params_sql['special']['prochains'] = $this->context['view']->days;
}
if(!empty($this->context['view']->idtypestructure)){
$params_sql['special']['idtypestructure'] = $this->context['view']->idtypestructure;
$params_sql['special']['structures_specifiques'] = $this->context['view']->idtypestructure;
}
$this->context['view']->area_active = false;
$this->context['view']->area = null;
$this->context['view']->area_view = '';
// une région en particulier ?
if(!empty($this->context['params']['area']) &&
($spectacles->my_is_int($this->context['params']['area']) || strlen($this->context['params']['area'])==2)) {
$this->context['view']->area_active = true;
$this->context['view']->area = $area = $this->context['params']['area'];
$this->context['view']->area_view = 'area/'.$area.'/';
$params_sql['special']['area'] = $area; // recherche dans la région
$params_sql['special']['carte_version'] = 'Bigregions';
if($spectacles->my_is_int($area)) {
$this->context['view']->region_name = $this->em->getRepository('TheatreCore\Entity\\'.$params_sql['special']['carte_version'])->getRegionName($area); // nom de la région
} else {
$this->context['view']->country_name = $this->em->getRepository('TheatreCore\Entity\\'.$params_sql['special']['carte_version'])->getNameCountry($area); // nom de la région
}
// définir la zone de recherche
$area_sql = $this->em->getRepository('TheatreCore\Entity\\'.$params_sql['special']['carte_version'])->getZipCode($area);
$spectacles->setZoneRecherche($area_sql); // définir la zone de recherche
}
$totalItems = $spectacles->countListSpectacles($params_sql);
$this->perPage = 20;
// pagination
$this->context['view']->pagination = $this->getPagination($totalItems);
$urlpagination = new asidesUrlPagination(
'/critiques/spectacles/generate_params',
array(
'area' => (isset($area)) ? $area : 'all',
'day' => $this->context['view']->days,
'datestart' => $this->context['view']->datestart,
'dateend' => $this->context['view']->dateend
),
$this->context
);
$this->view->pagination['spectacle'] = true;
$this->view->pagination['url_custom'] = $urlpagination->url_pagination();
$params_sql['params']['limit'] = 'all'; //array($this->getLimitStart(),$this->perPage);
$spectacles_datas = $spectacles->getListSpectacles(
$params_sql,
array(
'vignette' => array('width'=>$_ENV['VIGN_SPECTACLE_WIDTH'],'height'=>$_ENV['VIGN_SPECTACLE_HEIGHT'],'direction'=>'crop')
),
false,
array(
'allauthors' => true,
'carrer_couleurs' => true
)
);
// Tri par nombre de critiques
$this->context['view']->orderBy = 'date';
if ($request->query->get('order') === 'critiques') {
$this->context['view']->orderBy = 'critiques';
array_multisort(array_map(function ($elem) {
return $elem['carrer']['critiques'];
}, $spectacles_datas), SORT_DESC, $spectacles_datas);
}
if ($request->query->get('order') === 'nbRecommandations') {
return $this->redirect("/critiques/recommandations/type/tous/area/" . $area . "?d=30&order=nbRecommandations");
}
$nb_total_critiques = 0;
foreach($spectacles_datas AS $k=>$v) {
$spectacles_datas[$k]['footer_critique'] = true;
$nb_total_critiques += $spectacles_datas[$k]['nombre_critique'] = $this->em->getRepository(Contents::class)->countAssociateContent('spectacles',$v['idspectacle'],'class_critique',array('publish_valid' => 1));
if(!empty($this->context['params']['type']) && $this->context['params']['type'] == 'emissions'){
$spectacles_datas[$k]['url_clean_more'] = 'podcasts/';
}
// add dots on spectacles for recommandations
$spectacles_datas[$k]['nbRecommandations'] = $spectacles->countSpectacleRecommandations($spectacles_datas[$k]['idspectacle']);
$spectacles_datas[$k] = $spectacles->clearSpectaclesAddAllPersons($spectacles_datas[$k]);
}
$this->context['view']->spectacles = $spectacles_datas;
if($type != 'emissions') {
$this->view->pagination['totalItems'] = $totalItems;
$this->view->pagination['critique_spectacle'] = true;
$params_sql['special']['count_only'] = true;
$params_sql['special']['count_only_distinct'] = 'oc2.idcontent';
$params_sql['params']['limit'] = 'all';
$countQuery = $spectacles->getSQLSpectacles($params_sql['params'], $params_sql['special']);
$this->context['view']->pagination['nb_total'] = $countQuery->getSingleResult(\Doctrine\ORM\Query::HYDRATE_SCALAR)['total'];
}
$this->getCommonSearch();
$this->getCommonSearchView();
//Total
$this->context['view']->nb_spectacles_total = $spectacles->countListSpectacles($total_count_sql);
//Total par émission
$total_count_sql['special']['podcasts'] = [
'emission' => ['la-dispute', 'le-masque-et-la-plume'],
'publish' => 1
];
$this->context['view']->nb_spectacles_emissions = $spectacles->countListSpectacles($total_count_sql);
$this->getAsidesSpectacles($area, $type);
// La légende des carrer_couleurs
$this->asides->load(['common_carrer_informations'=> array(
'color' => 'critiques'
)]);
// situation et titre meta
$this->view->title_page = 'Les spectacles à l\'affiche avec une critique';
$this->view->locate = array(
'/critiques/' => 'Espace critique',
0 => 'Spectacles à l\'affiche',
);
return $this->view('critiques/spectacles.html.twig');
}
// }}}
// {{{ action_recommandations()
/** Spectacles recommandés
*
* @Route("/critiques/recommandations", name="critiques_recommandations")
* @Route("/critiques/recommandations/type/{type}", name="critiques_recommandations_type")
* @Route("/critiques/recommandations/area/{area}", name="critiques_recommandations_area")
* @Route("/critiques/recommandations/type/{type}/area/{area}", name="critiques_recommandations_type_area")
*
*/
public function action_recommandations(Request $request, $type = null, $area = null)
{
$this->context['params']['type'] = $type;
$this->context['params']['area'] = $area;
$this->InitController(null, 'recommandations');
$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;
}
// saison courante
$this->context['view']->current_saison = Date_time::getLastSaison();
$this->context['view']->menu_jours = array(
3 => array('name' => '3 prochains jours','key_day' => 3),
7 => array('name' => '7 prochains jours','key_day' => 7),
30 => array('name' => '30 prochains jours','key_day' => 30),
);
// une saison ?
$this->context['view']->saison = Date_time::getSaisonParam();
// une période ?
$this->context['view']->datestart = Date_time::getDateParam('datestart');
$this->context['view']->dateend = Date_time::getDateParam('dateend');
if(!Date_time::checkDateFormat($this->context['view']->datestart)) {
$this->context['view']->datestart = null;
} else {
$this->context['view']->datestart_string = $this->em->getRepository(Spectacles::class)->getFormeDate($this->context['view']->datestart,'d/m/y');
}
if(!Date_time::checkDateFormat($this->context['view']->dateend)) {
$this->context['view']->dateend = null;
} else {
$this->context['view']->dateend_string = $this->em->getRepository(Spectacles::class)->getFormeDate($this->context['view']->dateend,'d/m/y');
}
// un nombre de jours ?
$this->context['view']->days = Date_time::getDaysParam($this->context['view']->menu_jours, 30);
$this->context['view']->days_name = $this->context['view']->menu_jours[$this->context['view']->days]['name'];
$params_sql['special']['prochains'] = $this->context['view']->days;
// une année ?
$this->context['view']->year = Date_time::getYearParam();
if(!$this->context['view']->saison && !$this->context['view']->year && !$this->context['view']->days && !$this->context['view']->datestart && !$this->context['view']->dateend) {
if(!empty($this->context['params']['area']) && $this->context['params']['area']!=11) {
$this->context['view']->days = 30;
} else {
$this->context['view']->days = 30;
}
}
$type = 'tous';
if(!empty($this->context['params']['type']) && in_array($this->context['params']['type'], ['emissions'])) {
$type = $this->context['params']['type'];
}
$this->context['view']->type = $type;
$this->context['view']->{'type_'.$type} = true;
$spectacleRepo = $this->em->getRepository(Spectacles::class);
$params_sql = array(
'params' => array(
'limit' => 'all',
),
'special' => array(
'prochains' => true,
'recommandations' => true,
'publish_valid' => true,
)
);
if($type == 'emissions') {
$params_sql['special']['podcasts'] = [
'emission' => ['la-dispute', 'le-masque-et-la-plume'],
'publish' => 1
];
}
// recherche par saison
if(!empty($this->context['view']->saison)) {
$params_sql['special']['saison'] = $this->context['view']->saison;
$this->context['view']->days = null;
} elseif(!empty($this->context['view']->year)) { // recherche par année
$params_sql['special']['year'] = $this->context['view']->year;
$this->context['view']->days = null;
} elseif(!empty($this->context['view']->datestart) && !empty($this->context['view']->dateend)) { // par période
$params_sql['special']['period'] = array(
'start' => $this->context['view']->datestart,
'end' => $this->context['view']->dateend,
);
$this->context['view']->days = null;
} else { // prochains jours
$params_sql['special']['prochains'] = $this->context['view']->days;
}
if(!empty($this->context['view']->idtypestructure)){
$params_sql['special']['idtypestructure'] = $this->context['view']->idtypestructure;
$params_sql['special']['structures_specifiques'] = $this->context['view']->idtypestructure;
}
$this->context['view']->area_active = false;
$this->context['view']->area = null;
$this->context['view']->area_view = '';
// une région en particulier ?
if(!empty($this->context['params']['area']) &&
($spectacleRepo->my_is_int($this->context['params']['area']) || strlen($this->context['params']['area'])==2)) {
$this->context['view']->area_active = true;
$this->context['view']->area = $area = $this->context['params']['area'];
$this->context['view']->area_view = 'area/'.$area.'/';
$params_sql['special']['area'] = $area; // recherche dans la région
$params_sql['special']['carte_version'] = 'Bigregions';
if($spectacleRepo->my_is_int($area)) {
$this->context['view']->region_name = $this->em->getRepository('TheatreCore\Entity\\'.$params_sql['special']['carte_version'])->getRegionName($area); // nom de la région
} else {
$this->context['view']->country_name = $this->em->getRepository('TheatreCore\Entity\\'.$params_sql['special']['carte_version'])->getNameCountry($area); // nom de la région
}
// définir la zone de recherche
$area_sql = $this->em->getRepository('TheatreCore\Entity\\'.$params_sql['special']['carte_version'])->getZipCode($area);
$spectacleRepo->setZoneRecherche($area_sql); // définir la zone de recherche
}
$recommandedSpectacles = $spectacleRepo->getListSpectacles(
$params_sql,
);
$paramsVignette = [
'vignette' => [
'width' => 100,
'height' => 100,
'direction' => 'crop',
'fleche' => 'moyen'
],
'get_vignette' => true
];
$spectacles = [];
// Setup for the aside of contacts that recommanded the shown spectacles
$this->view->type_aides = array(
'recommandations' => array(
'type_aides' => array(4),
'label' => 'Médias référencés',
),
);
$allRecommandationsContacts = [];
// Toutes les infos des prochains spectacles avec recommandations
foreach ($recommandedSpectacles as $spectacle) {
$spectacle = $spectacleRepo->getInfosSpectacle($spectacle['idspectacle'], $paramsVignette);
$spectacle['carrer'] = $spectacleRepo->getObjectsCarrerDetails($spectacle['idspectacle']);
if ($dates = $spectacleRepo->getProchDateLieu(array('prochains' => true), $spectacle['idspectacle'])) {
$spectacle = array_merge($spectacle, $dates);
}
if (!isset($spectacle['affcontact'])
&& (isset($spectacle['contact']) && isset($spectacle['contact']['organisation']) && !empty($spectacle['contact']['organisation']))
) {
$spectacle['affcontact'] = true;
}
$spectacle['footer_critique'] = true;
$spectacle['nombre_critique'] = $this->em->getRepository(Contents::class)->countAssociateContent('spectacles',$spectacle['idspectacle'],'class_critique',array('publish_valid' => 1));
$spectacle['url_clean_more'] = 'critiques/';
$spectacle['nbRecommandations'] = $spectacleRepo->countSpectacleRecommandations($spectacle['idspectacle']);
// Params to get additional infos on Aide
$params_sql_aide = array(
'where' => array(
array('spectacle_aide', 'publish', 1)
),
'idspectacle' => $spectacle['idspectacle'],
'special' => array(
'aides' => array(
'type_aides' => 4
),
),
"recommandations_only" => true,
'dbg' => array('spectacle_recommandation', "Recommandation(s)"),
);
$spectacleRecommandationsIds = $spectacleRepo->getSpectacleRecommandations($spectacle['idspectacle']);
$listSpectacleAide = $this->em->getRepository(SpectacleAide::class)->getListSpectacleAide($params_sql_aide);
foreach ($spectacleRecommandationsIds as $key => $value) {
$singleRecommandation = $this->em->getRepository(Aides::class)->getInfosAide($value["idaide"], array(
'get_aidecontact' => true,
'get_contact' => true,
));
// Remove same contacts from the aside and get all the infos for the recommandations (if available)
if (!in_array($singleRecommandation["contact"]["idcontact"], $allRecommandationsContacts)) {
$allRecommandationsContacts[] = $singleRecommandation["contact"]["idcontact"];
if (isset($listSpectacleAide[$value["idaide"]])) {
$this->view->type_aides["recommandations"]['aides'][$value["idaide"]] = $listSpectacleAide[$value["idaide"]];
}
$this->view->type_aides["recommandations"]['aides'][$value["idaide"]]["aide"] = $singleRecommandation;
}
}
$spectacle = $spectacleRepo->clearSpectaclesAddAllPersons($spectacle);
$spectacles[] = $spectacle;
}
$this->context['view']->orderBy = 'date';
if(!empty($this->context['params']['area'])) {
if ($request->query->get('order') === 'date') {
return $this->redirect("/critiques/spectacles/area/" . $area . "?d=30&order=date");
}
};
// Tri par nombre de recommandation
if ($request->query->get('order') === 'nbRecommandations') {
$this->context['view']->orderBy = 'nbRecommandations';
array_multisort(array_map(function ($elem) {
return $elem['nbRecommandations'];
}, $spectacles), SORT_DESC, $spectacles);
}
if ($request->query->get('order') === 'critiques') {
return $this->redirect("/critiques/spectacles/area/" . $area . "?d=30&order=critiques");
}
$this->context['view']->pagination['recommandations']['all'] = count($spectacles);
// Tri par nombre de critiques
if ($request->query->get('order') === 'critiques') {
$this->context['view']->orderBy = 'critiques';
array_multisort(array_map(function ($elem) {
return $elem['carrer']['critiques'];
}, $spectacles), SORT_DESC, $spectacles);
}
$nb_total_critiques = 0;
foreach($spectacles AS $k=>$v) {
$spectacles[$k]['footer_critique'] = true;
$nb_total_critiques += $spectacles[$k]['nombre_critique'] = $this->em->getRepository(Contents::class)->countAssociateContent('spectacles',$v['idspectacle'],'class_critique',array('publish_valid' => 1));
if(!empty($this->context['params']['type']) && $this->context['params']['type'] == 'emissions'){
$spectacles[$k]['url_clean_more'] = 'podcasts/';
}
}
$this->view->spectacles = $spectacles;
// asides
$spectacleAideRepo = $this->em->getRepository(SpectacleAide::class);
$listPossibleRecommandationNb = $spectacleAideRepo->getIndiceNombresRecommandations();
foreach ($listPossibleRecommandationNb as $key => $value) {
if ($value['totalRecommandation'] == 1) {
unset($listPossibleRecommandationNb[$key]);
} else {
/* just check if there is really at least 1 spectacle with the nb of recommandations because of a bug */
$testSpectacleExist = $spectacleRepo->getRecommandedSpectacles($value['totalRecommandation'], ['start' => 0, 'max' => 1]);
if (empty($testSpectacleExist)) {
unset($listPossibleRecommandationNb[$key]);
continue;
}
$listPossibleRecommandationNb[$key]['name'] = $value['totalRecommandation'] . ' recommandations';
}
}
$this->getCommonSearch();
$this->getCommonSearchView();
$menu_trier = array(
'next-spectacles' => array(
'name' => 'Tous les spectales',
'key_type' => 'tous',
),
);
$menu_order = [
'date' => [
'name' => 'Dates',
'key_order' => 'date'
],
];
if(!empty($this->context['params']['area'])) {
$menu_order['critiques'] = [
'name' => 'Nombre de critiques',
'key_order' => 'critiques'
];
};
$menu_order['nbRecommandations'] = [
'name' => 'Nombre de recommandations',
'key_order' => 'nbRecommandations'
];
$this->asides->load(['url_lists,trier' => array(
'exec' => array(
'htmlstart' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/critiques/recommandations/generate_params',
'urls' => $menu_trier,
'params' => array(
'activate' => true,
'key_area' => $this->context['view']->area,
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'd' => 'v_day',
's' => 'v_saison',
'y' => 'v_year',
'idtypestructure' => 'v_idtypestructure',
'order' => 'key_order'
)
),
),
'title' => html_entity_decode('Trier'),
)]);
$this->asides->load(['url_lists,par' => array(
'exec' => array(
'alone' => false
),
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/critiques/recommandations/generate_params',
'urls' => $menu_order,
'params' => array(
'activate' => $this->context['view']->orderBy,
'key_area' => $this->context['view']->area,
'key_type' => $this->context['view']->type
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'd' => 'v_days',
's' => 'v_saison',
'y' => 'v_year',
'dateend' => 'v_dateend',
'datestart' => 'v_datestart',
'idtypestructure' => 'v_idtypestructure',
'order' => 'key_order'
)
)
),
'title' => html_entity_decode('Par')
)]);
$this->asides->load(['url_lists,textes_a_venir' => array(
'exec' => array(
'alone' => false
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $this->context['view']->menu_jours,
'url' => '/critiques/recommandations/generate_params',
'params' => array(
'activate' => $this->context['view']->days,
'key_area' => $this->context['view']->area,
'key_type' => $this->context['view']->type,
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'd' => 'key_day',
's' => 'v_saison',
'y' => 'v_year',
'idtypestructure' => 'v_idtypestructure',
'order' => 'key_order'
)
)
),
'title' => 'Recherche par période'
)]);
$this->asides->load(['recherche_par_periode' => array(
'exec' => array(
'htmlend' => true
),
'php' => array(
'method' => 'asidesUrlListsForms',
'action' => '/critiques/recommandations/generate_params',
'params' => array(
'activate' => $this->context['view']->days,
'key_area' => (!empty($this->context['view']->area)) ? $this->context['view']->area : 'null',
'key_type' => (!empty($this->context['view']->type)) ? $this->context['view']->type : 'null',
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'idtypestructure' => 'v_idtypestructure'
)
)
),
'action' => '/critiques/recommandations/'
)]);
$default_cdn_tn = 'ALL';
if(isset($this->context['view']->area) && $this->context['view']->area){
$default_cdn_tn = '';
}
$this->asides->load(['url_lists_alone,tn_cdn_sn' => array(
'php' => [
'method' => 'tn_cdn_sn',
'url' => '/critiques/recommandations/generate_params',
'params' => array(
'activate' => (isset($this->context['view']->idtypestructure) && !empty($this->context['view']->idtypestructure)) ? $this->context['view']->idtypestructure : $default_cdn_tn,
'key_type' => (!empty($this->context['view']->type)) ? $this->context['view']->type : 'null',
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'structure_classic' => array(
'd' => 'v_days',
's' => 'v_saison',
'y' => 'v_year',
'dateend' => 'v_dateend',
'datestart' => 'v_datestart',
'idtypestructure' => 'key_structure',
'order' => 'key_order'
)
)
],
'title' => 'Voir dans'
)]);
$this->asides->load(['common_carte' => array(
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/critiques/recommandations/area/get_id/?d={v_days}&order=nbRecommandations'
)
)]);
$this->asides->load('common_aside_selections');
$this->asides->load('critiques_plusinfo');
$this->asides->load(['common_participer' => array(
'php' => array(
'method' => 'asidesUrlLists_Ajoutez'
)
)]);
// La légende des carrer_couleurs
$this->asides->load(['common_carrer_informations'=> array(
'color' => 'critiques'
)]);
// situation et titre meta
$this->view->title_page = 'Tous les spectacles recommandés';
$this->view->locate = array(
'/critiques/' => 'Espace critique',
0 => 'Recommandations'
);
$this->view->rub_courante = 'critiques';
return $this->view('critiques/recommandations.html.twig');
}
// }}}
// {{{ action_rss()
/** listing des flux rss
*
* @Route("/critiques/rss", name="critiques_rss")
* @Route("/critiques/rss/spectacle/{p_slug}", name="critiques_rss_spectacles_slug")
*
*/
public function action_rss($p_slug = null)
{
$this->InitController(null, 'rss');
// situation et titre meta
$this->view->title_page = 'Toutes les critiques des spectacles de théâtre actuellement à l\'affiche';
$this->context['params']['spectacle'] = $p_slug;
$this->view->locate = array(0 => 'Espace critique');
$this->view->rub_courante = 'critiques';
// classe
$this->getRssCritiques();
$response = $this->view('critiques/rss.xml.twig');
$response->headers->set('Content-Type', 'xml');
$response->setCharset('utf-8');
return $response;
}
// {{{ getListCritiques()
/** Lister les critiques
*
*/
public function getListCritiques($pagerOptions, $params_display = array())
{
$pagerOptions['path'] = '/critiques/';
// par page
$perPage = 20;
if(!empty($params_display['perPage'])){
$perPage = $params_display['perPage'];
}
// les non-valide
if(isset($this->params['publish'])) {
$publish_valid['publish'] = (int)$this->params['publish'];
} else {
$publish_valid['publish'] = 1;
}
if(isset($this->params['valid'])) {
$publish_valid['valid'] = (int)$this->params['valid'];
} else {
$publish_valid['valid'] = 1;
}
// nombre d'enregistrement
$totalItems = $this->em->getRepository(Classifications::class)->countByClassification(101,$publish_valid);
if(empty($totalItems) && $totalItems>0) {
$pagerOptions['perPage'] = $perPage;
$pagerOptions['totalItems'] = $totalItems;
// pagination
require PATH_LIBS.'Pager/Pagersimple.php';
$this->paged_data = pagerSimple($pagerOptions);
// limitation
$limit = $this->contents->dbLimit($pagerOptions['perPage'], $this->paged_data['from']-1);
} else {
$limit = array(0, $perPage);
}
// trouver les contenus associés 101 et les classer par date
$params_sql = array(
'sql' => array(
'select' => 'ct.deck,ct.writer,ct.writer_group,ct.link,ct.writer_group_url,ct.idspectacle,ct.dateinsert,ct.date_article',
'order' => ' ct.date_article DESC',
// 'groupby' => 'ct.idspectacle',
'limit' => $limit,
),
'special' => array(
'by_classification' => array(101),
'get_extranetuser' => true,
'publish' => 1,
'valid' => 1,
),
'dbg' => array('critiques','Liste des critiques'),
);
// les non-valide
if(isset($this->params['publish'])) {
$params_sql['special']['publish'] = (int)$this->params['publish'];
}
if(isset($this->params['valid'])) {
$params_sql['special']['valid'] = (int)$this->params['valid'];
}
$get_large_critiques = false; //on charge une vignette de taille "normal"
if(!empty($params_display['vignette_large_format'])){
$get_large_critiques = true; //on charge une vignette de taille "large"
}
// on récupère tout ?
$params_display = array(
'fields' => array(
'title',
'deck',
'idextranetuser',
'login',
'dateinsert',
'date_article',
'writer',
'writer_group',
'writer_group_url',
),
'thumbnail' => true, // on veut une vignette
'get_critiques' => true,
'get_critiques_vignette_large' => $get_large_critiques
// 'get_infos_spectacle' => array(
// 'vignette' => array('width'=>$_ENV['VIGN_SPECTACLE_WIDTH'],'height'=>$_ENV['VIGN_SPECTACLE_HEIGHT'],'forme'=>'round','direction'=>'crop','valround'=>$_ENV['VIGN_SPECTACLE_ROUND']),
// 'stylemore' => array('imagep' => 'width:70px;', 'descsp' => 'width:300px;'),
// ),
);
// $this->paged_data['links'] = str_replace('/index.php', '', $this->paged_data['links']);
$this->view->critiques_list = $this->contents->getListContents($params_sql,$params_display);
foreach($this->view->critiques_list as $k=>$c) {
// 2 lignes
if(!empty($c['deck'])) {
$this->view->critiques_list[$k]['deck'] = $this->contents->cutSentence($c['deck'],190);
}
if(!empty($c['spectacles'])){
foreach($c['spectacles'] as $s) {
$this->view->critiques_list[$k]['spectacle']['url_clean'] = $s['url_clean'];
$this->view->critiques_list[$k]['spectacle']['count_critiques'] = $this->em->getRepository(Contents::class)->countAssociateContent('spectacles',$s['idspectacle'],'class_critique',array('publish_valid' => 1));;
}
}
}
//setDebug($this->contents->getListContents($params_sql,$params_display));
}
// }}}
// {{{ getRssCritiques()
/** Lister les critiques pour le flux RSS
*
*/
public function getRssCritiques()
{
// trouver les contenus associés 101 et les classer par date
$params_sql = array(
'sql' => array(
'select' => 'ct.deck,ct.writer,ct.writer_group,ct.writer_group_url,ct.idspectacle,ct.dateinsert,ct.date_article',
'order' => ' ct.date_article DESC',
'limit' => array(0,10),
),
'special' => array(
'by_classification' => array(101),
'get_extranetuser' => true,
'publish' => 1,
),
'dbg' => array('critiques','Liste des critiques'),
);
// pour un spectacle
if(!empty($this->context['params']['spectacle'])) {
$idspectacle = $this->em->getRepository(Spectacles::class)->getIdByUrl($this->context['params']['spectacle']);
if(empty($idspectacle)) {
$this->view->critiques_list = array();
} else {
$params_sql['special']['idspectacle'] = $idspectacle;
}
}
if(!isset($this->view->critiques_list)) {
// on récupère tout ?
$params_display = array(
'fields' => array(
'title',
'deck',
'idextranetuser',
'login',
'dateinsert',
'date_article',
'writer',
'writer_group',
'writer_group_url'
),
'thumbnail' => true, // on veut une vignette
'get_infos_spectacle' => array(
'vignette' => array('width'=>$_ENV['VIGN_SPECTACLE_WIDTH'],'height'=>$_ENV['VIGN_SPECTACLE_HEIGHT'],'forme'=>'round','direction'=>'crop','valround'=>$_ENV['VIGN_SPECTACLE_ROUND']),
'stylemore' => array('imagep' => 'width:70px;', 'descsp' => 'width:300px;'),
),
);
$this->view->critiques_list = $this->contents->getListContents($params_sql,$params_display);
foreach($this->view->critiques_list as $k=>$c) {
if(!empty($c['spectacles'])) {
foreach($c['spectacles'] as $s) {
$this->view->critiques_list[$k]['spectacle']['url_clean'] = $s['url_clean'];
}
}
$this->view->critiques_list[$k]['url'] = $_ENV['URL_THNET'].'/spectacles/'.$this->view->critiques_list[$k]['spectacle']['url_clean'].'/critiques/idcontent/'.$c['idcontent'];
// md5
$md5 = md5($c['dateinsert']);
$this->view->critiques_list[$k]['md5'] = $md5;
// date
$date = $c['date_article'];
$t = explode(' ', $date);
list($y,$m,$d) = explode('-',$t[0]);
$w3t = gmdate(DATE_ATOM, mktime(00,00,00,$m,$d,$y));
$this->view->critiques_list[$k]['w3t'] = $w3t;
// premiere annonce = updated
if(!isset($updated)) {
$this->view->updated = $w3t;
$this->view->md5 = $md5;
$updated = true;
}
}
}
}
// }}}
// {{{ getPagedData()
/** Récupèrer la pagination
*
*/
public function getPagedData()
{
return $this->paged_data;
}
// }}}
// {{{ getSaisonsAndDates()
/** Liste des saisons et années avec des critiques
*
* @access public
* return array
*/
public function getSaisonsAndAnnees()
{
// tous les spectacles des étudiants de l'école
$sql_annees = 'SELECT sc.`date`, YEAR(sc.`date`) as annee
FROM schedules sc
JOIN object_content oc ON oc.`idobject`=sc.`idspectacle` AND oc.`object`=\'spectacles\'
JOIN contents c ON c.`idcontent`=oc.`idcontent`
JOIN content_classification cc ON oc.`idcontent`=cc.`idcontent`
WHERE 1
AND cc.`idclassification` IN (101)
AND c.`publish`=1
AND c.`valid`=1
GROUP BY annee';
$listdates = $this->contents->queryAll($sql_annees);
// liste des saisons et des années
if(empty($listdates)) {
return []; //$listdates->getDebugInfos()
} elseif(!empty($listdates)) {
foreach($listdates as $a) {
if($a['date']>date('Y-m-d', mktime(0,0,0,8,31,$a['annee'])) ) {
$s = $a['annee'].'-'.($a['annee']+1);
} else {
$s = ($a['annee']-1).'-'.$a['annee'];
}
$saisons[$s] = $s;
$saisons_key[] = $s;
$annees[$a['annee']] = $a['annee'];
}
}
return array(
'saisons' => $saisons,
'saisons_key' => $saisons_key,
'annees' => $annees,
);
}
// }}}
// private function uriOrderHandler (Request $request, string $orderBy): string
// {
// $pathInfo = $request->getPathInfo();
// $requestUri = $request->getRequestUri();
//
// if ($pathInfo === $requestUri) {
// $uri = $pathInfo . '?order=' . $orderBy;
// } else {
// $requestUri = $request->getRequestUri();
// $orderFlag = substr_count($requestUri, 'order');
// if ($orderFlag === 0) {
// $uri = $requestUri . '&order=' . $orderBy;
// } else if ($orderFlag === 1) {
// $uri = $requestUri;
// }
// }
//
// return $uri;
// }
private function getAsidesSpectacles(){
$menu_trier = array(
'next-spectacles' => array(
'name' => 'Tous les spectales',
'key_type' => 'tous',
'count' => $this->context['view']->nb_spectacles_total
),
'emissions-spectacles' => array(
'name' => 'Avec émissions critiques',
'key_type' => 'emissions',
'count' => $this->context['view']->nb_spectacles_emissions
)
);
$menu_order = [
'date' => [
'name' => 'Dates',
'key_order' => 'date'
],
'critiques' => [
'name' => 'Nombre de critiques',
'key_order' => 'critiques'
]
];
if(!empty($this->context['params']['area'])) {
$menu_order['nbRecommandations'] = [
'name' => 'Nombre de recommandations',
'key_order' => 'nbRecommandations'
];
};
$this->asides->load(['url_lists,trier' => array(
'exec' => array(
'htmlstart' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/critiques/spectacles/generate_params',
'urls' => $menu_trier,
'params' => array(
'activate' => $this->context['view']->type,
'key_area' => $this->context['view']->area,
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'd' => 'v_day',
's' => 'v_saison',
'y' => 'v_year',
'idtypestructure' => 'v_idtypestructure',
'order' => 'key_order'
)
),
),
'title' => html_entity_decode('Trier'),
)]);
$this->asides->load(['url_lists,par' => array(
'exec' => array(
'alone' => false
),
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/critiques/spectacles/generate_params',
'urls' => $menu_order,
'params' => array(
'activate' => $this->context['view']->orderBy,
'key_area' => $this->context['view']->area,
'key_type' => $this->context['view']->type
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'd' => 'v_days',
's' => 'v_saison',
'y' => 'v_year',
'dateend' => 'v_dateend',
'datestart' => 'v_datestart',
'idtypestructure' => 'v_idtypestructure',
'order' => 'key_order'
)
)
),
'title' => html_entity_decode('Par')
)]);
$this->asides->load(['url_lists,textes_a_venir' => array(
'exec' => array(
'alone' => false,
),
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $this->context['view']->menu_jours,
'url' => '/critiques/spectacles/generate_params',
'params' => array(
'activate' => $this->context['view']->days,
'key_area' => $this->context['view']->area,
'key_type' => $this->context['view']->type,
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'd' => 'key_day',
's' => 'v_saison',
'y' => 'v_year',
'idtypestructure' => 'v_idtypestructure',
'order' => 'key_order'
)
)
),
'title' => 'Recherche par période'
)]);
$this->asides->load(['recherche_par_periode' => array(
'exec' => array(
'htmlend' => true
),
'php' => array(
'method' => 'asidesUrlListsForms',
'action' => '/critiques/spectacles/generate_params',
'params' => array(
'activate' => $this->context['view']->days,
'key_area' => (!empty($this->context['view']->area)) ? $this->context['view']->area : 'null',
'key_type' => $this->context['view']->type,
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'area' => 'key_area',
'structure_classic' => array(
'idtypestructure' => 'v_idtypestructure'
)
)
),
'action' => '/critiques/spectacles/',
)]);
$default_cdn_tn = 'ALL';
if(isset($this->context['view']->area) && $this->context['view']->area){
$default_cdn_tn = '';
}
$this->asides->load(['url_lists_alone,tn_cdn_sn' => array(
'php' => [
'method' => 'tn_cdn_sn',
'url' => '/critiques/spectacles/generate_params',
'params' => array(
'activate' => (isset($this->context['view']->idtypestructure) && !empty($this->context['view']->idtypestructure)) ? $this->context['view']->idtypestructure : $default_cdn_tn,
'key_type' => $this->context['view']->type,
'key_order' => $this->context['view']->orderBy
),
'structure' => array(
'type' => 'key_type',
'structure_classic' => array(
'd' => 'v_days',
's' => 'v_saison',
'y' => 'v_year',
'dateend' => 'v_dateend',
'datestart' => 'v_datestart',
'idtypestructure' => 'key_structure',
'order' => 'key_order'
)
)
],
'title' => 'Voir dans'
)]);
$this->asides->load(['common_carte' => array(
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/critiques/spectacles/area/get_id/?d={v_days}'
)
)]);
//Chargement de la pub par région
asides::setEntityManager($this->em);
asides::loadaside('Publicite')->addWithNational($this->asides); //$this->area
asides::loadaside('Publicite')->addWithRegion($this->asides, ['region' => $this->context['view']->area]); //$this->area
$this->asides->load('critiques_plusinfo');
$this->asides->load(['common_participer' => array(
'php' => array(
'method' => 'asidesUrlLists_Ajoutez'
)
)]);
}
public function getAsidesDernieresParutions(){
$menu_contents = array(
'spectacles' => array(
'name' => 'Spectacles à l\'affiche',
'key_url' => 'spectacles',
),
'critique' => array(
'name' => 'Dernières parutions',
'key_url' => '',
'active' => 'on'
)
);
// $asides->load('critiques_plusinfo');
$this->asides->load(['common_participer' => array(
'php' => array(
'method' => 'asidesUrlLists_Ajoutez',
'loadcustom' => array(
'spectacle' => array(
'name' => 'Un lien vers une critique',
'url' => '/critiques/ajouter'
)
)
)
)]);
asides::setEntityManager($this->em);
asides::loadaside('Publicite')->addWithNational($this->asides); //$this->area
}
}