[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/libraries/Smarty/libs/sysplugins/ -> smarty_internal_resource_php.php (source)

   1  <?php
   2  
   3  /**
   4   * Smarty Internal Plugin Resource PHP
   5   *
   6   * Implements the file system as resource for PHP templates
   7   *
   8   * @package Smarty
   9   * @subpackage TemplateResources
  10   * @author Uwe Tews
  11   * @author Rodney Rehm
  12   */
  13  class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
  14      /**
  15       * container for short_open_tag directive's value before executing PHP templates
  16       * @var string
  17       */
  18      protected $short_open_tag;
  19  
  20      /**
  21       * Create a new PHP Resource
  22       *
  23       */
  24      public function __construct()
  25      {
  26          $this->short_open_tag = ini_get( 'short_open_tag' );
  27      }
  28  
  29      /**
  30       * populate Source Object with meta data from Resource
  31       *
  32       * @param Smarty_Template_Source $source source object
  33       * @param Smarty_Internal_Template $_template template object
  34       * @return void
  35       */
  36      public function populate(Smarty_Template_Source $source, Smarty_Internal_Template $_template=null)
  37      {
  38          $source->filepath = $this->buildFilepath($source, $_template);
  39  
  40          if ($source->filepath !== false) {
  41              if (is_object($source->smarty->security_policy)) {
  42                  $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
  43              }
  44  
  45              $source->uid = sha1($source->filepath);
  46              if ($source->smarty->compile_check) {
  47                  $source->timestamp = @filemtime($source->filepath);
  48                  $source->exists = !!$source->timestamp;
  49              }
  50          }
  51      }
  52  
  53      /**
  54       * populate Source Object with timestamp and exists from Resource
  55       *
  56       * @param Smarty_Template_Source $source source object
  57       * @return void
  58       */
  59      public function populateTimestamp(Smarty_Template_Source $source)
  60      {
  61          $source->timestamp = @filemtime($source->filepath);
  62          $source->exists = !!$source->timestamp;
  63      }
  64  
  65      /**
  66       * Load template's source from file into current template object
  67       *
  68       * @param Smarty_Template_Source $source source object
  69       * @return string template source
  70       * @throws SmartyException if source cannot be loaded
  71       */
  72      public function getContent(Smarty_Template_Source $source)
  73      {
  74          if ($source->timestamp) {
  75              return '';
  76          }
  77          throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
  78      }
  79  
  80      /**
  81       * Render and output the template (without using the compiler)
  82       *
  83       * @param Smarty_Template_Source $source source object
  84       * @param Smarty_Internal_Template $_template template object
  85       * @return void
  86       * @throws SmartyException if template cannot be loaded or allow_php_templates is disabled
  87       */
  88      public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
  89      {
  90          $_smarty_template = $_template;
  91  
  92          if (!$source->smarty->allow_php_templates) {
  93              throw new SmartyException("PHP templates are disabled");
  94          }
  95          if (!$source->exists) {
  96              if ($_template->parent instanceof Smarty_Internal_Template) {
  97                  $parent_resource = " in '{$_template->parent->template_resource}'";
  98              } else {
  99                  $parent_resource = '';
 100              }
 101              throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
 102          }
 103  
 104          // prepare variables
 105          extract($_template->getTemplateVars());
 106  
 107          // include PHP template with short open tags enabled
 108          ini_set( 'short_open_tag', '1' );
 109          include($source->filepath);
 110          ini_set( 'short_open_tag', $this->short_open_tag );
 111      }
 112  }
 113  
 114  ?>


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1