ForwardFW
[ class tree: ForwardFW ] [ index: ForwardFW ] [ all elements ]

Source for file Smarty.php

Documentation is available at Smarty.php

  1. <?php
  2. declare(encoding "utf-8");
  3. /**
  4.  * This file is part of ForwardFW a web application framework.
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public
  17.  * License along with this library; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  *
  20.  * PHP version 5
  21.  *
  22.  * @category   Templater
  23.  * @package    ForwardFW
  24.  * @subpackage Templater
  25.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  26.  * @copyright  2009-2010 The Authors
  27.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  28.  * @version    SVN: $Id: $
  29.  * @link       http://forwardfw.sourceforge.net
  30.  * @since      File available since Release 0.0.2
  31.  */
  32.  
  33. /**
  34.  *
  35.  */
  36. require_once 'ForwardFW/Controller.php';
  37. require_once 'ForwardFW/Request.php';
  38. require_once 'ForwardFW/Response.php';
  39. require_once 'ForwardFW/Interface/Templater.php';
  40.  
  41. require_once 'Smarty/Smarty.class.php';
  42.  
  43. /**
  44.  * Class to use Smarty as Templater.
  45.  *
  46.  * @category   Templater
  47.  * @package    ForwardFW
  48.  * @subpackage Templater
  49.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  50.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  51.  * @link       http://forwardfw.sourceforge.net
  52.  */
  53.     implements ForwardFW_Interface_Templater
  54. {
  55.     /**
  56.      * @var Smarty The smarty instance
  57.      */
  58.     private $smarty = null;
  59.  
  60.     /**
  61.      * @var array Blocks to show
  62.      */
  63.     private $arShowBlocks = array();
  64.  
  65.     /**
  66.      * Constructor
  67.      *
  68.      * @param ForwardFW_Interface_Application $application The running application
  69.      *
  70.      * @return void 
  71.      */
  72.     public function __construct(
  73.         ForwardFW_Interface_Application $application
  74.     {
  75.         parent::__construct($application);
  76.  
  77.         $arConfig $GLOBALS[get_class($this)];
  78.  
  79.         $strCompilePath $arConfig['CompilePath'];
  80.         if (!is_dir($strCompilePath)) {
  81.             mkdir($strCompilePath0770true);
  82.         }
  83.  
  84.         $this->smarty = new Smarty();
  85.         $this->smarty->compile_dir $strCompilePath;
  86.         $this->smarty->register_block('block'array(&$this'__block'));
  87.         $this->smarty->register_function('texter'array(&$this'__texter'));
  88.  
  89.         $this->strTemplatePath $arConfig['TemplatePath'];
  90.     }
  91.  
  92.     /**
  93.      * Sets file to use for templating
  94.      *
  95.      * @param string $_strFile Complete path and filename.
  96.      *
  97.      * @return ForwardFW_Templater_Smarty The instance.
  98.      */
  99.     public function setTemplateFile($_strFile)
  100.     {
  101.         $this->strFile $_strFile;
  102.         return $this;
  103.     }
  104.  
  105.     /**
  106.      * Sets a var in the template to a value
  107.      *
  108.      * @param string $_strName Name of template var.
  109.      * @param mixed  $_mValue  Value of template var.
  110.      *
  111.      * @return ForwardFW_Templater_Smarty The instance.
  112.      */
  113.     public function setVar($_strName$_mValue)
  114.     {
  115.         $this->smarty->assign($_strName$_mValue);
  116.         return $this;
  117.     }
  118.  
  119.     /**
  120.      * Returns compiled template for outputing.
  121.      *
  122.      * @return string Content of template after compiling.
  123.      */
  124.     public function getCompiled()
  125.     {
  126.         // Catch Exceptions and clear output cache
  127.         try {
  128.             $result $this->smarty->fetch(
  129.                 $this->strTemplatePath '/' $this->strFile
  130.             );
  131.         catch (Exception $e{
  132.             ob_end_clean();
  133.             throw $e;
  134.         }
  135.         return $result;
  136.     }
  137.  
  138.     /**
  139.      * Defines blocks in template.
  140.      * Deprecated or should be used for template engines without conditions?
  141.      */
  142.     public function defineBlock($strBlockName)
  143.     {
  144.         $this->arShowBlocks[$strBlockName0;
  145.     }
  146.  
  147.     /**
  148.      * Shows block in template.
  149.      * Deprecated or should be used for template engines without conditions?
  150.      */
  151.     public function showBlock($strBlockName)
  152.     {
  153.         $this->arShowBlocks[$strBlockName1;
  154.     }
  155.  
  156.     /**
  157.      * Hide block in template.
  158.      * Deprecated or should be used for template engines without conditions?
  159.      */
  160.     public function hideBlock($strBlockName)
  161.     {
  162.         $this->arShowBlocks[$strBlockName0;
  163.     }
  164.  
  165.     /**
  166.      * Block implementation for smarty.
  167.      * Deprecated or should be used for template engines without conditions?
  168.      */
  169.     public function __block($params$content&$smarty&$repeat)
  170.     {
  171.         $name $params['name'];
  172.         if (isset($this->arShowBlocks[$name]&& $this->arShowBlocks[$name== 1{
  173.             return $content;
  174.         }
  175.         return '';
  176.     }
  177.  
  178.     /**
  179.      * Texter implementation for smarty.
  180.      * More later, if it exists.
  181.      */
  182.     public function __texter($params&$smarty)
  183.     {
  184.         $strTextKey $params['key'];
  185.  
  186.         $texter ForwardFW_Texter::factory($this->strApplicationName);
  187.         $result $texter->getText($strTextKey);
  188.  
  189.         return $result;
  190.     }
  191. }
  192.  
  193. ?>

Documentation generated on Sun, 30 Jan 2011 20:46:46 +0100 by phpDocumentor 1.4.3