src/Controller/ConseilsController.php line 188

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\ClassTheatre\asides;
  4. use App\ClassTheatre\TheatreController;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. use TheatreCore\Entity\TextAide;
  10. use TheatreCore\Entity\Texts;
  11. class ConseilsController extends TheatreController
  12. {
  13.     // résultat par page
  14.     protected $perPage 50;
  15.     // asides
  16.     protected $asides '';
  17.     //asides top
  18.     protected $asides_top '';
  19.     // {{{ _construct()
  20.     /** constructeur hérité
  21.      *
  22.      */
  23.     public function __construct(EntityManagerInterface $emTranslatorInterface $translatorTokenStorageInterface $tokenStorage)
  24.     {
  25.         // load new aside
  26.         $this->asides = new asides();
  27.         $GLOBALS['rub_courante'] = 'textes';
  28.         $this->em $em;
  29.         // hérite du constructeur parent
  30.         parent::__construct($translator$tokenStorage);
  31.         $this->asides = new asides();
  32.         $this->asides_top = new asides();
  33.         $this->asides_top->load(['aside_top' => array(
  34.             'php' => array(
  35.                 'method' => 'asidesUrlConseils',
  36.             )
  37.         )
  38.         ]);
  39.         $this->view->bandeauConseils = array(
  40.             'vignette' => 'icones/bandeau-conseils-lectures.png',
  41.             'description' => 'Les conseils de lectures de théâtre-contemporains'
  42.         );
  43.     }
  44.     // }}}
  45.     // {{{ finalizeAction()
  46.     /** Code exécuté après chaque action
  47.      *
  48.      *
  49.      * @access protected
  50.      * @return void
  51.      */
  52.     protected function finalizeAction()
  53.     {
  54.         // aside
  55.         $this->view->aside $this->asides->view($this->view);
  56.         $this->view->aside_top $this->asides_top->view($this->view);
  57.         $this->view->main_custom_style 'textes';
  58.     }
  59.     // }}}
  60.     // {{{ action_nosconseils
  61.     /** Les textes avec le plus de sélections
  62.      *
  63.      * @Route("/conseils/nos-conseils", name="conseils_nos_conseils")
  64.      * @Route("/conseils/nos-conseils/top/{top}", name="conseils_nos_conseils_top")
  65.      *
  66.      */
  67.     public function action_nos_conseils($top null)
  68.     {
  69.         $this->context['params']['top'] = $top;
  70.         $this->view->action $this->context['action'] = 'nos-conseils';
  71.         // récupèrer les prix associés au contact
  72.         $object_aide $this->em->getRepository(TextAide::class);
  73.         $type_aide = array(2,3);
  74.         $id_aide_contact 102;
  75.         $params_sql_aide = array(
  76.             'special' => array(
  77.                 'aides' => array(
  78.                     'type_aides' => $type_aide// Prix,
  79.                     'idaidecontact' => 102
  80.                 ),
  81. //                'get_by_nombres_aides' => true
  82.             ),
  83.             'from' => array('texts'),
  84.             'where' => array(' AND text_aide.`idtext` = texts.`idtext`'),
  85.             'group_by_aide_type_aide_text' => true,
  86.             'dbg' => array('text_aide','Nombre de text'),
  87.         );
  88.         $top 1;
  89.         $unset_no_year false;
  90.         //On récupère les textes avec X aides
  91.         $get_by_nombres_aides_val false;
  92.         $params['get_stars'] = true;
  93.         if(!empty($this->context['params']['top']) && is_numeric($this->context['params']['top']) && $this->context['params']['top'] > 0) {
  94.             $get_by_nombres_aides_val $top $this->context['params']['top'];
  95.             $params_sql_aide['group'] = ['text_aide' => 'idtext'];
  96.             $unset_no_year true;
  97.         }
  98.         $params_sql_aide['idtexts'] = $this->getTextes($get_by_nombres_aides_val$type_aide102);
  99.         // compter le nombre total de lauréats
  100.         $nb_list $object_aide->{'countListTextAide'}($params_sql_aide);
  101.         if(!is_numeric($nb_list) || $nb_list==0) {
  102.             unset($this->context['view']->menu_types_object['text']);
  103.         }
  104.         // texte style
  105.         $params_display = array();
  106.         $params_display['vignette_format'] = array('width'=>$_ENV['VIGN_TEXT_WIDTH'],'height'=>$_ENV['VIGN_TEXT_HEIGHT'],'direction'=>'thumb');
  107.         $params_display['stylemore'] = array('imagep' => 'width:60px;''desctxt' => 'width:210px;');
  108.         $params_display['publisher_first_inverse'] = true;
  109.         $this->context['view']->{'nb_list_aides_text'} = $object_aide->{'countListTextAide'}($params_sql_aide);
  110.         $params_sql_aide['limit'] = array($this->getLimitStart(),$this->perPage);
  111.         $list $object_aide->{'getListTextAide'}($params_sql_aide,$params_display);
  112.         // groupement par année
  113.         if(!$unset_no_year){
  114.             $list_by_year = array();
  115.             foreach($list as $k=>$v) {
  116.                 $list_by_year[$v['year_start']][$v['idaide']]['description'] = $v['aide'];
  117.                 if(!empty($v['texts'])) {
  118.                     foreach($v['texts'] as $kb=>$vb) {
  119.                         if(!empty($params['get_stars']) && $params['get_stars']){
  120.                             $vb $this->getTotalAides($vb$type_aide$id_aide_contact'text');
  121.                         }
  122.                         $list_by_year[$v['year_start']][$v['idaide']]['texts'][] = $vb;
  123.                     }
  124.                 }
  125.             }
  126.             $this->context['view']->{'list_aides_text'} = $list_by_year;
  127.         }
  128.         // sans groupement par année
  129.         else{
  130.             $datas = array();
  131.             foreach($list as $k=>$v) {
  132.                 if(!empty($v['texts'])) {
  133.                     foreach($v['texts'] as $kb=>$vb) {
  134.                         if(!empty($params['get_stars']) && $params['get_stars']) {
  135.                             $vb $this->getTotalAides($vb$type_aide$id_aide_contact'text');
  136.                         }
  137.                         $datas['texts'][] = $vb;
  138.                     }
  139.                 }
  140.             }
  141.             $this->context['view']->{'list_text'} = $datas;
  142.         }
  143.         $this->context['view']->pagination $this->getPagination($this->context['view']->{'nb_list_aides_text'});
  144.         // - fin de page - gestion des asides etc.
  145.         $list_aides_possibles $object_aide->getIndiceNombresAides(['type_aides' => array(2,3), 'idaidecontact' => $id_aide_contact'idaidecontact_or_type_aide' => true]);
  146.         $list_top = array();
  147.         foreach($list_aides_possibles AS $key => $value){
  148.             if($value['totalAide'] == 1){
  149.                 unset($list_aides_possibles[$key]);
  150.             }
  151.             else{
  152.                 $list_aides_possibles[$key]['name'] = $value['totalAide'].' sélections';
  153.             }
  154.         }
  155.         $menu = array(
  156.             'les-plus-remarques' => array(
  157.                 'name' => 'Toutes les sélections',
  158.                 'key' => 'nos-conseils'
  159.             )
  160.         );
  161.         $this->asides->load(['url_lists' => array(
  162.             'exec' => ['htmlstart' => true],
  163.             'php' => array(
  164.                 'method' => 'asidesUrlLists',
  165.                 'url' => '/conseils/nos-conseils',
  166.                 'urls' => $menu,
  167.                 'params' => [
  168.                     'activate' => ($top == 1) ? true ''
  169.                 ]
  170.             ),
  171.             'title' => 'Voir',
  172.         )]);
  173.         $this->asides->load(['url_lists,filtre_top' => array(
  174.             'exec' => array(
  175.                 'htmlend' => true
  176.             ),
  177.             'php' => array(
  178.                 'method' => 'asidesUrlLists',
  179.                 'url' => '/conseils/nos-conseils/top/totalAide',
  180.                 'urls' => $list_aides_possibles,
  181.                 'params' => [
  182.                     'activate' => $top
  183.                 ]
  184.             ),
  185.             'subtitle' => 'Trier'
  186.         )]);
  187.         $this->asides->load('conseils_criteres');
  188.         $menu_voir = array(
  189.             [
  190.                 'name' => 'Les comités de lecture',
  191.                 'url' => '/selections/comites-lectures-reperes'
  192.             ],
  193.             [
  194.                 'name' => 'Les Prix et distinctions',
  195.                 'url' => '/prix/les-plus-remarques'
  196.             ],
  197.             [
  198.                 'name' => 'Textes au programme d\'examens',
  199.                 'url' => '/contacts/Ministere-de-l-Education-nationale/selections'
  200.             ],
  201.             [
  202.                 'name' => 'littérature pour collégiens',
  203.                 'url' => '/contacts/EDUSCOL/selections'
  204.             ],
  205.             [
  206.                 'name' => 'La «liste 136» du TNS',
  207.                 'url' => '/contacts/Ecole-Superieure-dArt-Dramatique-du-TNS/selections/type/text/idaide/145?y='
  208.             ],
  209.         );
  210.         $this->asides->load(['url_lists_alone' => array(
  211.             'php' => array(
  212.                 'method' => 'asidesUrlLists',
  213.                 'urls' => $menu_voir
  214.             ),
  215.             'title' => 'Voir aussi'
  216.         )]);
  217.         return $this->view('conseils/nos-conseils.html.twig');
  218.     }
  219.     // }}}
  220.     // {{{ action_lesplusjoues
  221.     /** Les textes avec le plus de mises-en-scènes
  222.      *
  223.      */
  224.     public function action_les_plus_joues() {
  225.     }
  226.     // }}}
  227.     public function getTextes($nombre_aides false$type_aide$idaidecontact)
  228.     {
  229.         $params = array(
  230.             'special' => array(
  231.                 'aides' => [
  232.                     'idaidecontact' => $idaidecontact,
  233.                     'type_aide' => $type_aide,
  234.                     'get_by_nombres_aides' => true,
  235.                     'idaidecontact_or_type_aide' => true
  236.                 ]
  237.             ),
  238.             'params' => [
  239.                 'limit' => 'all'
  240.             ]
  241.         );
  242.         if($nombre_aides){
  243.             $params['special']['aides']['get_by_nombres_aides_val'] = $nombre_aides;
  244.         }
  245.         $texts $this->em->getRepository(Texts::class);
  246.         $query $texts->getSQLTexts($params['params'], $params['special']);
  247.         $texts $texts->queryAll($query);
  248.         $ids = array();
  249.         foreach($texts AS $text){
  250.             $ids[] = $text['idtext'];
  251.         }
  252.         return $ids;
  253.     }
  254.     protected function getTotalAides($datas$type_aide$idaidecontact$type 'texts'){
  255.         $object_aide $this->em->getRepository('TheatreCore\Entity\\'.ucfirst($type).'Aide');
  256.         $params = array(
  257.             'special' => array(
  258.                 'aides' => array(
  259.                     'get_by_nombres_aides' => true,
  260.                     'type_aides' => $type_aide// Prix
  261.                     'idaidecontact' => $idaidecontact // type
  262.                 ),
  263.             ),
  264.             'idtext' => $datas['id'.$type]
  265.         );
  266.         $datas['nb_aides'] = $nombres_totals $object_aide->countListTextAide($params);
  267.         $datas['nb_aides_px'] = 13*$datas['nb_aides'];
  268.         return $datas;
  269.     }
  270. }