<?php
namespace App\Controller;
use App\ClassTheatre\asides;
use App\ClassTheatre\TheatreController;
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\TextAide;
use TheatreCore\Entity\Texts;
class ConseilsController extends TheatreController
{
// résultat par page
protected $perPage = 50;
// asides
protected $asides = '';
//asides top
protected $asides_top = '';
// {{{ _construct()
/** constructeur hérité
*
*/
public function __construct(EntityManagerInterface $em, TranslatorInterface $translator, TokenStorageInterface $tokenStorage)
{
// load new aside
$this->asides = new asides();
$GLOBALS['rub_courante'] = 'textes';
$this->em = $em;
// hérite du constructeur parent
parent::__construct($translator, $tokenStorage);
$this->asides = new asides();
$this->asides_top = new asides();
$this->asides_top->load(['aside_top' => array(
'php' => array(
'method' => 'asidesUrlConseils',
)
)
]);
$this->view->bandeauConseils = array(
'vignette' => 'icones/bandeau-conseils-lectures.png',
'description' => 'Les conseils de lectures de théâtre-contemporains'
);
}
// }}}
// {{{ finalizeAction()
/** Code exécuté après chaque action
*
*
* @access protected
* @return void
*/
protected function finalizeAction()
{
// aside
$this->view->aside = $this->asides->view($this->view);
$this->view->aside_top = $this->asides_top->view($this->view);
$this->view->main_custom_style = 'textes';
}
// }}}
// {{{ action_nosconseils
/** Les textes avec le plus de sélections
*
* @Route("/conseils/nos-conseils", name="conseils_nos_conseils")
* @Route("/conseils/nos-conseils/top/{top}", name="conseils_nos_conseils_top")
*
*/
public function action_nos_conseils($top = null)
{
$this->context['params']['top'] = $top;
$this->view->action = $this->context['action'] = 'nos-conseils';
// récupèrer les prix associés au contact
$object_aide = $this->em->getRepository(TextAide::class);
$type_aide = array(2,3);
$id_aide_contact = 102;
$params_sql_aide = array(
'special' => array(
'aides' => array(
'type_aides' => $type_aide, // Prix,
'idaidecontact' => 102
),
// 'get_by_nombres_aides' => true
),
'from' => array('texts'),
'where' => array(' AND text_aide.`idtext` = texts.`idtext`'),
'group_by_aide_type_aide_text' => true,
'dbg' => array('text_aide','Nombre de text'),
);
$top = 1;
$unset_no_year = false;
//On récupère les textes avec X aides
$get_by_nombres_aides_val = false;
$params['get_stars'] = true;
if(!empty($this->context['params']['top']) && is_numeric($this->context['params']['top']) && $this->context['params']['top'] > 0) {
$get_by_nombres_aides_val = $top = $this->context['params']['top'];
$params_sql_aide['group'] = ['text_aide' => 'idtext'];
$unset_no_year = true;
}
$params_sql_aide['idtexts'] = $this->getTextes($get_by_nombres_aides_val, $type_aide, 102);
// compter le nombre total de lauréats
$nb_list = $object_aide->{'countListTextAide'}($params_sql_aide);
if(!is_numeric($nb_list) || $nb_list==0) {
unset($this->context['view']->menu_types_object['text']);
}
// texte style
$params_display = array();
$params_display['vignette_format'] = array('width'=>$_ENV['VIGN_TEXT_WIDTH'],'height'=>$_ENV['VIGN_TEXT_HEIGHT'],'direction'=>'thumb');
$params_display['stylemore'] = array('imagep' => 'width:60px;', 'desctxt' => 'width:210px;');
$params_display['publisher_first_inverse'] = true;
$this->context['view']->{'nb_list_aides_text'} = $object_aide->{'countListTextAide'}($params_sql_aide);
$params_sql_aide['limit'] = array($this->getLimitStart(),$this->perPage);
$list = $object_aide->{'getListTextAide'}($params_sql_aide,$params_display);
// groupement par année
if(!$unset_no_year){
$list_by_year = array();
foreach($list as $k=>$v) {
$list_by_year[$v['year_start']][$v['idaide']]['description'] = $v['aide'];
if(!empty($v['texts'])) {
foreach($v['texts'] as $kb=>$vb) {
if(!empty($params['get_stars']) && $params['get_stars']){
$vb = $this->getTotalAides($vb, $type_aide, $id_aide_contact, 'text');
}
$list_by_year[$v['year_start']][$v['idaide']]['texts'][] = $vb;
}
}
}
$this->context['view']->{'list_aides_text'} = $list_by_year;
}
// sans groupement par année
else{
$datas = array();
foreach($list as $k=>$v) {
if(!empty($v['texts'])) {
foreach($v['texts'] as $kb=>$vb) {
if(!empty($params['get_stars']) && $params['get_stars']) {
$vb = $this->getTotalAides($vb, $type_aide, $id_aide_contact, 'text');
}
$datas['texts'][] = $vb;
}
}
}
$this->context['view']->{'list_text'} = $datas;
}
$this->context['view']->pagination = $this->getPagination($this->context['view']->{'nb_list_aides_text'});
// - fin de page - gestion des asides etc.
$list_aides_possibles = $object_aide->getIndiceNombresAides(['type_aides' => array(2,3), 'idaidecontact' => $id_aide_contact, 'idaidecontact_or_type_aide' => true]);
$list_top = array();
foreach($list_aides_possibles AS $key => $value){
if($value['totalAide'] == 1){
unset($list_aides_possibles[$key]);
}
else{
$list_aides_possibles[$key]['name'] = $value['totalAide'].' sélections';
}
}
$menu = array(
'les-plus-remarques' => array(
'name' => 'Toutes les sélections',
'key' => 'nos-conseils'
)
);
$this->asides->load(['url_lists' => array(
'exec' => ['htmlstart' => true],
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/conseils/nos-conseils',
'urls' => $menu,
'params' => [
'activate' => ($top == 1) ? true : ''
]
),
'title' => 'Voir',
)]);
$this->asides->load(['url_lists,filtre_top' => array(
'exec' => array(
'htmlend' => true
),
'php' => array(
'method' => 'asidesUrlLists',
'url' => '/conseils/nos-conseils/top/totalAide',
'urls' => $list_aides_possibles,
'params' => [
'activate' => $top
]
),
'subtitle' => 'Trier'
)]);
$this->asides->load('conseils_criteres');
$menu_voir = array(
[
'name' => 'Les comités de lecture',
'url' => '/selections/comites-lectures-reperes'
],
[
'name' => 'Les Prix et distinctions',
'url' => '/prix/les-plus-remarques'
],
[
'name' => 'Textes au programme d\'examens',
'url' => '/contacts/Ministere-de-l-Education-nationale/selections'
],
[
'name' => 'littérature pour collégiens',
'url' => '/contacts/EDUSCOL/selections'
],
[
'name' => 'La «liste 136» du TNS',
'url' => '/contacts/Ecole-Superieure-dArt-Dramatique-du-TNS/selections/type/text/idaide/145?y='
],
);
$this->asides->load(['url_lists_alone' => array(
'php' => array(
'method' => 'asidesUrlLists',
'urls' => $menu_voir
),
'title' => 'Voir aussi'
)]);
return $this->view('conseils/nos-conseils.html.twig');
}
// }}}
// {{{ action_lesplusjoues
/** Les textes avec le plus de mises-en-scènes
*
*/
public function action_les_plus_joues() {
}
// }}}
public function getTextes($nombre_aides = false, $type_aide, $idaidecontact)
{
$params = array(
'special' => array(
'aides' => [
'idaidecontact' => $idaidecontact,
'type_aide' => $type_aide,
'get_by_nombres_aides' => true,
'idaidecontact_or_type_aide' => true
]
),
'params' => [
'limit' => 'all'
]
);
if($nombre_aides){
$params['special']['aides']['get_by_nombres_aides_val'] = $nombre_aides;
}
$texts = $this->em->getRepository(Texts::class);
$query = $texts->getSQLTexts($params['params'], $params['special']);
$texts = $texts->queryAll($query);
$ids = array();
foreach($texts AS $text){
$ids[] = $text['idtext'];
}
return $ids;
}
protected function getTotalAides($datas, $type_aide, $idaidecontact, $type = 'texts'){
$object_aide = $this->em->getRepository('TheatreCore\Entity\\'.ucfirst($type).'Aide');
$params = array(
'special' => array(
'aides' => array(
'get_by_nombres_aides' => true,
'type_aides' => $type_aide, // Prix
'idaidecontact' => $idaidecontact // type
),
),
'idtext' => $datas['id'.$type]
);
$datas['nb_aides'] = $nombres_totals = $object_aide->countListTextAide($params);
$datas['nb_aides_px'] = 13*$datas['nb_aides'];
return $datas;
}
}