Source for file jTpl.class.php

Documentation is available at jTpl.class.php

  1. <?php
  2. /**
  3. @package     jelix
  4. @subpackage  jtpl
  5. @author      Laurent Jouanneau
  6. @contributor Dominique Papin
  7. @copyright   2005-2006 Laurent Jouanneau, 2007 Dominique Papin
  8. @link        http://www.jelix.org
  9. @licence     GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  10. */
  11.  
  12. /**
  13.  * template engine
  14.  * @package     jelix
  15.  * @subpackage  jtpl
  16.  */
  17. class jTpl {
  18.  
  19.     /**
  20.      * all assigned template variables.
  21.      * It have a public access only for plugins. So you musn't use directly this property
  22.      * except from tpl plugins.
  23.      * See methods of jTpl to manage template variables
  24.      * @var array 
  25.      */
  26.     public $_vars = array ();
  27.  
  28.     /**
  29.      * temporary template variables for plugins.
  30.      * It have a public access only for plugins. So you musn't use directly this property
  31.      * except from tpl plugins.
  32.      * @var array 
  33.      */
  34.     public $_privateVars = array ();
  35.  
  36.     /**
  37.      * internal use
  38.      * It have a public access only for plugins. So you musn't use directly this property
  39.      * except from tpl plugins.
  40.      * @var array 
  41.      */
  42.     public $_meta = array();
  43.  
  44.     public function __construct(){
  45.         global $gJConfig;
  46.         $this->_vars['j_basepath'$gJConfig->urlengine['basePath'];
  47.         $this->_vars['j_jelixwww'$gJConfig->urlengine['jelixWWWPath'];
  48.         $this->_vars['j_themepath'$gJConfig->urlengine['basePath'].'themes/'.$gJConfig->theme.'/';
  49.         $this->_vars['j_enableOldActionSelector'$gJConfig->enableOldActionSelector;
  50.         $this->_vars['j_datenow'date('Y-m-d');
  51.         $this->_vars['j_timenow'date('H:i:s');
  52.     }
  53.  
  54.     /**
  55.      * assign a value in a template variable
  56.      * @param string|array$name the variable name, or an associative array 'name'=>'value'
  57.      * @param mixed  $value the value (or null if $name is an array)
  58.      */
  59.     public function assign ($name$value null){
  60.         if(is_array($name)){
  61.            foreach ($name as $key => $val{
  62.                $this->_vars[$key$val;
  63.            }
  64.         }else{
  65.             $this->_vars[$name$value;
  66.         }
  67.     }
  68.  
  69.     /**
  70.      * concat a value in with a value of an existing template variable
  71.      * @param string|array$name the variable name, or an associative array 'name'=>'value'
  72.      * @param mixed  $value the value (or null if $name is an array)
  73.      */
  74.     public function append ($name$value null){
  75.         if(is_array($name)){
  76.            foreach ($name as $key => $val{
  77.                if(isset($this->_vars[$key]))
  78.                   $this->_vars[$key.= $val;
  79.                else
  80.                   $this->_vars[$key$val;
  81.            }
  82.         }else{
  83.             if(isset($this->_vars[$name]))
  84.                $this->_vars[$name.= $value;
  85.             else
  86.                $this->_vars[$name$value;
  87.         }
  88.     }
  89.  
  90.     /**
  91.      * assign a value in a template variable, only if the template variable doesn't exist
  92.      * @param string|array$name the variable name, or an associative array 'name'=>'value'
  93.      * @param mixed  $value the value (or null if $name is an array)
  94.      */
  95.     public function assignIfNone ($name$value null){
  96.         if(is_array($name)){
  97.            foreach ($name as $key => $val{
  98.                if(!isset($this->_vars[$key]))
  99.                   $this->_vars[$key$val;
  100.            }
  101.         }else{
  102.             if(!isset($this->_vars[$name]))
  103.                $this->_vars[$name$value;
  104.         }
  105.     }
  106.  
  107.     /**
  108.      * assign a zone content to a template variable
  109.      * @param string $name the variable name
  110.      * @param string $zoneName  a zone selector
  111.      * @param array  $params  parameters for the zone
  112.      * @see jZone
  113.      */
  114.     function assignZone($name$zoneName$params=array()){
  115.         $this->_vars[$namejZone::get ($zoneName$params);
  116.     }
  117.  
  118.     /**
  119.      * append a zone content to a template variable
  120.      * @param string $name the variable name
  121.      * @param string $zoneName  a zone selector
  122.      * @param array  $params  parameters for the zone
  123.      * @see jZone
  124.      * @since 1.0
  125.      */
  126.     function appendZone($name$zoneName$params=array()){
  127.         if(isset($this->_vars[$name]))
  128.             $this->_vars[$name.= jZone::get ($zoneName$params);
  129.         else
  130.             $this->_vars[$namejZone::get ($zoneName$params);
  131.     }
  132.  
  133.     /**
  134.      * assign a zone content to a template variable only if this variable doesn't exist
  135.      * @param string $name the variable name
  136.      * @param string $zoneName  a zone selector
  137.      * @param array  $params  parameters for the zone
  138.      * @see jZone
  139.      */
  140.     function assignZoneIfNone($name$zoneName$params=array()){
  141.         if(!isset($this->_vars[$name]))
  142.             $this->_vars[$namejZone::get ($zoneName$params);
  143.     }
  144.  
  145.     /**
  146.      * says if a template variable exists
  147.      * @param string $name the variable template name
  148.      * @return boolean true if the variable exists
  149.      */
  150.     public function isAssigned ($name){
  151.         return isset ($this->_vars[$name]);
  152.     }
  153.  
  154.     /**
  155.      * return the value of a template variable
  156.      * @param string $name the variable template name
  157.      * @return mixed the value (or null if it isn't exist)
  158.      */
  159.     public function get ($name){
  160.         if (isset ($this->_vars[$name])){
  161.             return $this->_vars[$name];
  162.         }else{
  163.             $return null;
  164.             return $return;
  165.         }
  166.     }
  167.  
  168.     /**
  169.      * Return all template variables
  170.      * @return array 
  171.      */
  172.     public function getTemplateVars (){
  173.         return $this->_vars;
  174.     }
  175.  
  176.     /**
  177.      * process all meta instruction of a template
  178.      * @param string $tpl template selector
  179.      * @param string $outputtype the type of output (html, text etc..)
  180.      * @param boolean $trusted  says if the template file is trusted or not
  181.      */
  182.     public function meta($tpl$outputtype=''$trusted true){
  183.         $this->getTemplate($tpl,'template_meta_'$outputtype$trusted);
  184.         return $this->_meta;
  185.     }
  186.  
  187.     /**
  188.      * display the generated content from the given template
  189.      * @param string $tpl template selector
  190.      * @param string $outputtype the type of output (html, text etc..)
  191.      * @param boolean $trusted  says if the template file is trusted or not
  192.      */
  193.     public function display ($tpl$outputtype=''$trusted true){
  194.         $this->getTemplate($tpl,'template_'$outputtype$trusted);
  195.     }
  196.  
  197.     /**
  198.      * include the compiled template file and call one of the generated function
  199.      * @param string $tpl template selector
  200.      * @param string $fctname the internal function name (meta or content)
  201.      * @param string $outputtype the type of output (html, text etc..)
  202.      * @param boolean $trusted  says if the template file is trusted or not
  203.      */
  204.     protected function  getTemplate($tpl,$fctname$outputtype=''$trusted true){
  205.         $sel new jSelectorTpl($tpl,$outputtype,$trusted);
  206.         jIncluder::inc($sel);
  207.         $fct $fctname.md5($sel->module.'_'.$sel->resource.'_'.$sel->outputType.($trusted?'_t':''));
  208.         $fct($this);
  209.     }
  210.  
  211.     /**
  212.      * return the generated content from the given template
  213.      * @param string $tpl template selector
  214.      * @param string $outputtype the type of output (html, text etc..)
  215.      * @param boolean $trusted  says if the template file is trusted or not
  216.      * @param boolean $callMeta false if meta should not be called
  217.      * @return string the generated content
  218.      */
  219.     public function fetch ($tpl$outputtype=''$trusted true$callMeta=true){
  220.         $content '';
  221.         ob_start ();
  222.         try{
  223.             $sel new jSelectorTpl($tpl$outputtype$trusted);
  224.             jIncluder::inc($sel);
  225.             $md md5($sel->module.'_'.$sel->resource.'_'.$sel->outputType.($trusted?'_t':''));
  226.             if ($callMeta{
  227.                 $fct 'template_meta_'.$md;
  228.                 $fct($this);
  229.             }
  230.             $fct 'template_'.$md;
  231.             $fct($this);
  232.             $content ob_get_clean();
  233.         }catch(Exception $e){
  234.             ob_end_clean();
  235.             throw $e;
  236.         }
  237.         return $content;
  238.     }
  239.  
  240.     /**
  241.      * deprecated function: optimized version of meta() + fetch().
  242.      * Instead use fetch with true as $callMeta parameter.
  243.      * @param string $tpl template selector
  244.      * @param string $outputtype the type of output (html, text etc..)
  245.      * @param boolean $trusted  says if the template file is trusted or not
  246.      * @return string the generated content
  247.      * @deprecated
  248.      */
  249.     public function metaFetch ($tpl$outputtype=''$trusted true){
  250.         return $this->fetch ($tpl$outputtype$trusted,true);
  251.     }
  252.  
  253.  
  254.     /**
  255.      * return the current encoding
  256.      * @return string the charset string
  257.      * @since 1.0b2
  258.      */
  259.     public static function getEncoding (){
  260.         return $GLOBALS['gJConfig']->charset;
  261.     }
  262. }
  263. ?>

Documentation generated on Wed, 07 Sep 2011 13:48:07 +0200 by phpDocumentor 1.4.3