Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
11 / 11 |
CRAP | |
100.00% |
53 / 53 |
| _layout | |
100.00% |
1 / 1 |
|
100.00% |
11 / 11 |
17 | |
100.00% |
53 / 53 |
| __construct | |
100.00% |
1 / 1 |
2 | |
100.00% |
5 / 5 |
|||
| __set | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| __get | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
| __isset | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
| __unset | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
| setLayout | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| add | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
| addModule | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
| show | |
100.00% |
1 / 1 |
2 | |
100.00% |
8 / 8 |
|||
| getOutput | |
100.00% |
1 / 1 |
2 | |
100.00% |
11 / 11 |
|||
| load | |
100.00% |
1 / 1 |
3 | |
100.00% |
7 / 7 |
|||
| <?php | |
| /* | |
| This file is part of Mkframework. | |
| Mkframework is free software: you can redistribute it and/or modify | |
| it under the terms of the GNU Lesser General Public License as published by | |
| the Free Software Foundation, either version 3 of the License. | |
| Mkframework is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public License | |
| along with Mkframework. If not, see <http://www.gnu.org/licenses/>. | |
| */ | |
| /** | |
| * classe _layout pour gerer le layout | |
| * @author Mika | |
| * @link http://mkf.mkdevs.com/ | |
| */ | |
| class _layout{ | |
| private $_tContent; | |
| private $_sLayout; | |
| private $_tVar; | |
| /** | |
| * constructeur | |
| * @access public | |
| * @param string $sLayout nom du layout a utiliser | |
| */ | |
| public function __construct($sLayout=null){ | |
| $this->_tVar=array(); | |
| /*LOG*/_root::getLog()->info('--layout: initialisation ['.$sLayout.']'); | |
| if($sLayout==null){ throw new Exception('layout non definit dans le constructeur :(');} | |
| $this->setLayout($sLayout); | |
| } | |
| /** | |
| * setter | |
| */ | |
| public function __set($sVar, $sVal){ | |
| /*LOG*/_root::getLog()->info('---layout: assignation ['.$sVar.']'); | |
| $this->_tVar[$sVar]=$sVal; | |
| } | |
| /** | |
| * getter | |
| */ | |
| public function __get($sVar){ | |
| if(!array_key_exists($sVar,$this->_tVar)){ | |
| /*LOG*/_root::getLog()->error('Variable '.$sVar.' inexistante dans le layout '.$this->_sLayout); | |
| throw new Exception('Variable '.$sVar.' inexistante dans le layout '.$this->_sLayout); | |
| }else{ | |
| return $this->_tVar[$sVar]; | |
| } | |
| } | |
| /** | |
| * isset | |
| */ | |
| public function __isset($sVar){ | |
| return isset($this->_tVar[$sVar]); | |
| } | |
| /** | |
| * unset | |
| */ | |
| public function __unset($sVar){ | |
| unset($this->_tVar[$sVar]); | |
| } | |
| /** | |
| * forcer le layout | |
| * @access public | |
| * @param string $sLayout nom du layout a utiliser | |
| */ | |
| public function setLayout($sLayout){ | |
| /*LOG*/_root::getLog()->info('-layout: choix de ['._root::getConfigVar('path.layout').$sLayout.'.php]'); | |
| $this->_sLayout=$sLayout; | |
| } | |
| /** | |
| * ajoute un objet _tpl $oTpl a l'emplacement $sPlace | |
| * @access public | |
| * @param string $sPlace emplacement | |
| * @param _tpl $oTpl objet _tpl | |
| */ | |
| public function add($sPlace,$oTpl){ | |
| /*LOG*/_root::getLog()->info('-layout: ajout appel vue ['.$oTpl->getPath().'] a la place ['.$sPlace.']'); | |
| $this->_tContent[$sPlace][]=$oTpl; | |
| } | |
| /** | |
| * ajoute l'appel a un module (module::action) a l'emplacement $sPlace | |
| * @access public | |
| * @param string $sPlace emplacement | |
| * @param string $sAppel appel du module module::action | |
| */ | |
| public function addModule($sPlace,$sAppel){ | |
| /*LOG*/_root::getLog()->info('-layout: ajout appel module ['.$sAppel.'] a la place ['.$sPlace.']'); | |
| list($sModule,$sAction)= preg_split('/::/',$sAppel); | |
| $sModule='module_'.$sModule; | |
| $oModule=new $sModule; | |
| $this->_tContent[$sPlace][]=call_user_func( array($oModule,'_'.$sAction)); | |
| } | |
| /** | |
| * affiche le layout et son contenu | |
| * @access public | |
| */ | |
| public function show(){ | |
| /*LOG*/_root::getLog()->info('-layout: affichage ['._root::getConfigVar('path.layout').$this->_sLayout.'.php]'); | |
| if(!file_exists( _root::getConfigVar('path.layout').$this->_sLayout.'.php')){ | |
| $tErreur=array( | |
| 'layout '.$this->_sLayout.' introuvable dans '._root::getConfigVar('path.layout'), | |
| _root::getConfigVar('path.layout').$this->_sLayout.'.php introuvable', | |
| ); | |
| throw new Exception(implode("\n",$tErreur)); | |
| } | |
| include _root::getConfigVar('path.layout').$this->_sLayout.'.php'; | |
| } | |
| /** | |
| * recupere le layout et son contenu | |
| * @access public | |
| */ | |
| public function getOutput(){ | |
| /*LOG*/_root::getLog()->info('-layout: getOutput ['._root::getConfigVar('path.layout').$this->_sLayout.'.php]'); | |
| if(!file_exists( _root::getConfigVar('path.layout').$this->_sLayout.'.php')){ | |
| $tErreur=array( | |
| 'layout '.$this->_sLayout.' introuvable dans '._root::getConfigVar('path.layout'), | |
| _root::getConfigVar('path.layout').$this->_sLayout.'.php introuvable', | |
| ); | |
| throw new Exception(implode("\n",$tErreur)); | |
| } | |
| ob_start(); | |
| include _root::getConfigVar('path.layout').$this->_sLayout.'.php'; | |
| $sSortie=ob_get_contents(); | |
| ob_end_clean(); | |
| return $sSortie; | |
| } | |
| /** | |
| * retourne le contenu d'un objet _tpl a l'emplacement $sPlace | |
| * @access public | |
| * @return string | |
| * @param string $sPlace | |
| */ | |
| public function load($sPlace){ | |
| /*LOG*/_root::getLog()->info('-layout: chargement/affichage place ['.$sPlace.']'); | |
| if(!isset($this->_tContent[$sPlace])){ return null;} | |
| $sLoad=''; | |
| foreach($this->_tContent[$sPlace] as $oTpl){ | |
| $sLoad.=$oTpl->show(); | |
| } | |
| return $sLoad; | |
| } | |
| } |