src/ClassTheatre/asides.php line 203

Open in your IDE?
  1. <?php
  2. namespace App\ClassTheatre;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  5. class asides{
  6.     private $debug false;
  7.     private $debug_message = array();
  8.     private $folder_controller '/src/ClassTheatre/';
  9.     private $folder_template '/templates/includes/aside/';
  10.     private $folders_template = array('''abonnements/''aides/''annonces/''critiques/''editions/''ecoles/''educ/''evenements/','montheatre/','spectacles/''textes/' ,'prix/''biographies/''common/''contacts/''playlist/''videos/');
  11.     private $tableau = array();
  12.     private $context = array();
  13.     private $parametres_communs = array();
  14.     private $root false;
  15.     static private $entityManager;
  16.     /* le constructeur */
  17.     public function __construct($communs = array())
  18.     {
  19.         $this->folder_controller $_SERVER['PATH_ROOT'].$this->folder_controller;
  20.         $this->folder_template $_SERVER['PATH_ROOT'].$this->folder_template;
  21. //        $this->folder_controller = PATH_APP. $this->folder_controller;
  22. //        $this->folder_template = PATH_ADMIN. $this->folder_template;
  23.         $this->debug_errors('Appel du constructeur');
  24.          $this->parametres_communs $communs;
  25.     }
  26.     static function loadaside($aside_name){
  27.         $chemin $_SERVER['PATH_ROOT'].'/src/ClassTheatre/aside/aside'.$aside_name.'.php';
  28.         if(file_exists($chemin)){
  29. //            require_once $chemin;
  30. //            if(!class_exists('aside'.$aside_name)){
  31. //                return false;
  32. //            }
  33.             $class_name 'App\\ClassTheatre\\aside\\aside'.$aside_name;
  34.             return new $class_name(asides::$entityManager);
  35.         }
  36.     }
  37.     static function setEntityManager(EntityManagerInterface $entityManager){
  38.         asides::$entityManager $entityManager;
  39.     }
  40.     public function extract_html_subname($name){
  41.         $key explode(","$name);
  42.         if(sizeof($key) > 1){
  43.             $html $key[0];
  44.             $key $key[1];
  45.         }
  46.         else{
  47.             $html $key $key[0];
  48.         }
  49.         return ['html' => $html'key' => $key];
  50.     }
  51.     /*
  52.         Fonction publique qui permet de faire charger des asides
  53.         on peu lui faire passer en paramètre :
  54.         une chaine de caractère (le nom du fichier à faire charger)
  55.         un tableau contenant le nom du fichier et plusieurs paramètres
  56.     */
  57.     public function load($aside){
  58.         if(is_array($aside)){
  59.             $names $this->extract_html_subname(key($aside));
  60.             $key $names['key'];
  61.             $this->tableau[$key] = reset($aside);
  62.             $this->aside $this->tableau[$key];
  63.             $this->setAlone(true);
  64.             $this->tableau[$key] = $this->aside;
  65.         }
  66.         else{
  67.             $names $this->extract_html_subname($aside);
  68.             $key $names['key'];
  69.             //par défault
  70.             $this->tableau[$key] = array();
  71.             $this->aside $this->tableau[$aside];
  72.             $this->setAlone(true);
  73.             $this->tableau[$key] = $this->aside;
  74.         }
  75.         $this->tableau[$key]['html'] = $names['html'];
  76.     }
  77.     /*
  78.         Fonction public qui permet la duplication d'un aside existant
  79.     */
  80.     public function duplicate($key){
  81.         if(!empty($this->aside['duplicate'])){
  82.             $key_duplicate $this->aside['duplicate'];
  83.             $this->aside array_merge($this->tableau[$key_duplicate], $this->aside);
  84.         }
  85.         $this->clear('duplicate');
  86.     }
  87.     /*
  88.         Fonction privée qui permet la suppression d'un aside du tableau principal
  89.         cause : aside qui n'existe pas, ou array ayant terminée son travail
  90.     */
  91.     private function remove($key null){
  92.         if(is_null($key)){
  93.             unset($this->tableau);
  94.         }
  95.         else{
  96.             unset($this->tableau[$key]);
  97.         }
  98.     }
  99.     /*
  100.         Fonction privée qui vérifie si le template html fonctionne
  101.     */
  102.     private function getTemplateHtml(){
  103.         foreach($this->folders_template AS $folder){
  104.             if(file_exists($this->folder_template.$folder.$this->aside['html'].".html.twig")){
  105.                 $this->setTemplateHtml('/includes/aside/'.$folder.$this->aside['html'].".html");
  106.                 return true;
  107.             }
  108.         }
  109.         return false;
  110.     }
  111.     /*
  112.         Fonction privée qui vérifie si le moteur php custom fonctionne
  113.     */
  114.     private function getControllerPhp(){
  115.         if(!empty($this->aside['php']['method'])){
  116.             if(file_exists($this->folder_controller.'/aside/'.$this->aside['php']['method'].".php")){
  117. //                require_once($this->folder_controller.$this->aside['php']['method'].".php");
  118.                 return true;
  119.             }
  120.             else{
  121.                 $this->clear('php');
  122.             }
  123.         }
  124.         return false;
  125.     }
  126.     /*
  127.         On set les paramètres par défault devant être chargé
  128.     */
  129.     public function getDefault(){
  130.         $this->setcolor();
  131.     }
  132.     /*
  133.         On charge tout ce que contient le tableau principal
  134.         Nous vérifions que le template html existe bien
  135.         Ainsi que le moteur php custom
  136.     */
  137.     private function loads(){
  138.         $this->debug_errors('On charge les différents asides');
  139.         foreach($this->tableau AS $key => $this->aside){
  140.             $this->setRoot(false);
  141.             $this->duplicate($key);
  142.             $this->setTemplateHtml($this->aside['html']);
  143.             //si le aside n'existe pas
  144.             if(!$this->getTemplateHtml()){
  145.                 $this->setTemplateHtml();
  146.             }
  147.             else{
  148.                 $this->getDefault();
  149.                 $this->exec();
  150.             }
  151.             if($this->getRoot()){
  152.                 $this->tableau[$key] = $this->aside;
  153.             }
  154.             else{
  155.                 unset($this->tableau[$key]['html']);
  156.             }
  157.         }
  158.     }
  159.     /*
  160.         Nous nous executons des paramètres customs propore à la classe et que nous avons fait passer en paramètre à travers l'array
  161.     */
  162.     private function exec(){
  163.         if(!empty($this->aside['exec'])){
  164.             foreach($this->aside['exec'] AS $key => $val){
  165.                 $get 'set'.$key;
  166.                 $this->$get($val);
  167.             }
  168.             $this->clear('exec');
  169.         }
  170.     }
  171.     /*
  172.         Nous executons des paramètres pour la méthode php
  173.     */
  174.     private function execPHP(){
  175.         if(!empty($this->aside['php']['method'])){
  176.             $phpmethod 'App\ClassTheatre\aside\\'.$this->aside['php']['method'];
  177.             $temp = new $phpmethod($this->aside$this->context,$this->parametres_communs);
  178.             $this->clear('php');
  179.         }
  180.     }
  181.     /*
  182.         Nous nous executons les différents moteurs php customisés
  183.     */
  184.     private function executes(){
  185.         foreach($this->tableau AS $key => $this->aside){
  186.             if($this->getControllerPhp()){
  187.                 $this->execPHP();
  188.             }
  189.             $this->tableau[$key] = $this->aside;
  190.         }
  191.     }
  192.     /*
  193.         Nous nous executons l'ensemble des méthodes de la classe permettant l'affichage et l'exécution ainsi que l'affichage des différents asidess
  194.     */
  195.     public function run(){
  196.         $this->loads();
  197.         $this->executes();
  198.         $this->debug_show();
  199.     }
  200.     public function view($context = array()){
  201.         $this->context $context;
  202.         $this->run();
  203.         return $this->tableau;
  204.     }
  205.     public function setcolor($value 'context'){
  206.         $this->aside['color'] = $value;
  207.     }
  208.     public function setborder($value 'context'){
  209.         $this->aside['border'] = $value;
  210.     }
  211.     /*
  212.         Paramètre Alone, permet d'indiquer au template si l'aside doit-être seul ou non.
  213.     */
  214.     public function setAlone($default true$forceReset false){
  215.         $this->setTemplateParams('alone'$default);
  216.         if($forceReset){
  217.             $html_value = ($default) ? false true;
  218.             $this->sethtmlstart($html_valuetrue);
  219.             $this->sethtmlend($html_valuetrue);
  220.         }
  221.     }
  222.     /*
  223.         Paramètre HtmlStart permettant d'indiquer au template si l'aside doit start ou non le début du block devant le contenir lui et les autres
  224.     */
  225.     public function setHtmlStart($default true){
  226.         $this->setTemplateParams('html_start'$default);
  227.         $this->setAlone(false);
  228.     }
  229.     /*
  230.         Paramètre HtmlEnd permettant d'indiquer au template si l'aside doit fermer ou non le début du block devant le contenir lui et les autres
  231.     */
  232.     public function setHtmlEnd($default true){
  233.         $this->setTemplateParams('html_end'$default);
  234.         $this->setAlone(false);
  235.     }
  236.     /*
  237.         Set les différentes parmètres dont le template a besoin pour pouvoir afficher les bonnes informations
  238.     */
  239.     public function setTemplateParams($key$value){
  240.         $this->aside[$key] = $value;
  241.     }
  242.     /*
  243.         Set le template html devant être chargé
  244.         error est le paramètre par défaut
  245.     */
  246.     public function setTemplateHtml($template "error"){
  247.         $this->aside['html'] = $template;
  248.     }
  249.     /*
  250.         Méthode faisant un peu de nettoyage dans l'aside en supprimant certains paramètres devenus inutiles après l'execution
  251.     */
  252.     private function clear($key null){
  253.         if(!is_null($key)){
  254.             if(!empty($this->aside)){
  255.                 unset($this->aside[$key]);
  256.             }
  257.         }
  258.     }
  259.     public function getRoot(){
  260.         if($this->root){
  261.             if(empty($rights['isroot'])) {
  262.                 return false;
  263.             }
  264.         }
  265.         return true;
  266.     }
  267.     public function setRoot($value false){
  268.         $this->root $value;
  269.     }
  270.     /* -- le debug -- */
  271.     private function debug_errors($message){
  272.         $this->debug_message[] = $message;
  273.     }
  274.     public function debug_show(){
  275.         if($this->debug){
  276.             foreach($this->debug_message as $message){
  277.                 echo $message."<br/>";
  278.             }
  279.         }
  280.     }
  281. }