Ejemplo n.º 1
0
 /**
  * creates a template object
  *
  * @param string $template the resource handle of the template file
  * @param mixed $cache_id cache id to be used with this template
  * @param mixed $compile_id compile id to be used with this template
  * @param object $parent next higher level of Smarty variables
  * @param boolean $do_clone flag is Smarty object shall be cloned
  * @return object template object
  */
 public function createTemplate($template, $cache_id = null, $compile_id = null, $parent = null, $do_clone = true)
 {
     if (!empty($cache_id) && (is_object($cache_id) || is_array($cache_id))) {
         $parent = $cache_id;
         $cache_id = null;
     }
     if (!empty($parent) && is_array($parent)) {
         $data = $parent;
         $parent = null;
     } else {
         $data = null;
     }
     // default to cache_id and compile_id of Smarty object
     $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
     $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
     // already in template cache?
     if ($this->allow_ambiguous_resources) {
         $_templateId = Smarty_Resource::getUniqueTemplateName($this, $template) . $cache_id . $compile_id;
     } else {
         $_templateId = $this->joined_template_dir . '#' . $template . $cache_id . $compile_id;
     }
     if (isset($_templateId[150])) {
         $_templateId = sha1($_templateId);
     }
     if ($do_clone) {
         if (isset($this->template_objects[$_templateId])) {
             // return cached template object
             $tpl = clone $this->template_objects[$_templateId];
             $tpl->smarty = clone $tpl->smarty;
             $tpl->parent = $parent;
             $tpl->tpl_vars = array();
             $tpl->config_vars = array();
         } else {
             $tpl = new $this->template_class($template, clone $this, $parent, $cache_id, $compile_id);
         }
     } else {
         if (isset($this->template_objects[$_templateId])) {
             // return cached template object
             $tpl = $this->template_objects[$_templateId];
             $tpl->parent = $parent;
             $tpl->tpl_vars = array();
             $tpl->config_vars = array();
         } else {
             $tpl = new $this->template_class($template, $this, $parent, $cache_id, $compile_id);
         }
     }
     // fill data if present
     if (!empty($data) && is_array($data)) {
         // set up variable values
         foreach ($data as $_key => $_val) {
             $tpl->tpl_vars[$_key] = new Smarty_variable($_val);
         }
     }
     return $tpl;
 }
 /**
  * Template code runtime function to get subtemplate content
  *
  * @param string  $template       the resource handle of the template file
  * @param mixed   $cache_id       cache id to be used with this template
  * @param mixed   $compile_id     compile id to be used with this template
  * @param integer $caching        cache mode
  * @param integer $cache_lifetime life time of cache data
  * @param array   $vars optional  variables to assign
  * @param int     $parent_scope   scope in which {include} should execute
  * @returns string template content
  */
 public function getSubTemplate($template, $cache_id, $compile_id, $caching, $cache_lifetime, $data, $parent_scope)
 {
     // already in template cache?
     if ($this->smarty->allow_ambiguous_resources) {
         $_templateId = Smarty_Resource::getUniqueTemplateName($this->smarty, $template) . $cache_id . $compile_id;
     } else {
         $_templateId = $this->smarty->joined_template_dir . '#' . $template . $cache_id . $compile_id;
     }
     if (isset($_templateId[150])) {
         $_templateId = sha1($_templateId);
     }
     if (isset($this->smarty->template_objects[$_templateId])) {
         // clone cached template object because of possible recursive call
         $tpl = clone $this->smarty->template_objects[$_templateId];
         $tpl->parent = $this;
         $tpl->caching = $caching;
         $tpl->cache_lifetime = $cache_lifetime;
     } else {
         $tpl = new $this->smarty->template_class($template, $this->smarty, $this, $cache_id, $compile_id, $caching, $cache_lifetime);
     }
     // get variables from calling scope
     if ($parent_scope == Smarty::SCOPE_LOCAL) {
         $tpl->tpl_vars = $this->tpl_vars;
     } elseif ($parent_scope == Smarty::SCOPE_PARENT) {
         $tpl->tpl_vars =& $this->tpl_vars;
     } elseif ($parent_scope == Smarty::SCOPE_GLOBAL) {
         $tpl->tpl_vars =& Smarty::$global_tpl_vars;
     } elseif (($scope_ptr = $this->getScopePointer($parent_scope)) == null) {
         $tpl->tpl_vars =& $this->tpl_vars;
     } else {
         $tpl->tpl_vars =& $scope_ptr->tpl_vars;
     }
     $tpl->config_vars = $this->config_vars;
     if (!empty($data)) {
         // set up variable values
         foreach ($data as $_key => $_val) {
             $tpl->tpl_vars[$_key] = new Smarty_variable($_val);
         }
     }
     return $tpl->fetch(null, null, null, null, false, false, true);
 }
Ejemplo n.º 3
0
 /**
  * Get unique template id
  *
  * @param string     $template_name
  * @param null|mixed $cache_id
  * @param null|mixed $compile_id
  *
  * @return string
  */
 public function getTemplateId($template_name, $cache_id = null, $compile_id = null)
 {
     $cache_id = isset($cache_id) ? $cache_id : $this->cache_id;
     $compile_id = isset($compile_id) ? $compile_id : $this->compile_id;
     $smarty = isset($this->smarty) ? $this->smarty : $this;
     if ($smarty->allow_ambiguous_resources) {
         $_templateId = Smarty_Resource::getUniqueTemplateName($this, $template_name) . "#{$cache_id}#{$compile_id}";
     } else {
         $_templateId = $smarty->joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}";
     }
     if (isset($_templateId[150])) {
         $_templateId = sha1($_templateId);
     }
     return $_templateId;
 }
Ejemplo n.º 4
0
 /**
  * Get unique template id
  *
  * @param string     $template_name
  * @param null|mixed $cache_id
  * @param null|mixed $compile_id
  * @param null       $caching
  *
  * @return string
  */
 public function _getTemplateId($template_name, $cache_id = null, $compile_id = null, $caching = null)
 {
     $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
     $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
     $caching = (int) ($caching === null ? $this->caching : $caching);
     if ($this->allow_ambiguous_resources) {
         $_templateId = Smarty_Resource::getUniqueTemplateName($this, $template_name) . "#{$cache_id}#{$compile_id}#{$caching}";
     } else {
         $_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}";
     }
     if (isset($_templateId[150])) {
         $_templateId = sha1($_templateId);
     }
     return $_templateId;
 }
Ejemplo n.º 5
0
 /**
  * Get unique template id
  *
  * @param string                    $template_name
  * @param null|mixed                $cache_id
  * @param null|mixed                $compile_id
  * @param null                      $caching
  * @param \Smarty_Internal_Template $template
  *
  * @return string
  */
 public function _getTemplateId($template_name, $cache_id = null, $compile_id = null, $caching = null, Smarty_Internal_Template $template = null)
 {
     $template_name = strpos($template_name, ':') === false ? "{$this->default_resource_type}:{$template_name}" : $template_name;
     $cache_id = $cache_id === null ? $this->cache_id : $cache_id;
     $compile_id = $compile_id === null ? $this->compile_id : $compile_id;
     $caching = (int) ($caching === null ? $this->caching : $caching);
     if (isset($template) && strpos($template_name, ':.') !== false || $this->allow_ambiguous_resources) {
         $_templateId = Smarty_Resource::getUniqueTemplateName(isset($template) ? $template : $this, $template_name) . "#{$cache_id}#{$compile_id}#{$caching}";
     } else {
         $_templateId = $this->_joined_template_dir . "#{$template_name}#{$cache_id}#{$compile_id}#{$caching}";
     }
     if (isset($_templateId[150])) {
         $_templateId = sha1($_templateId);
     }
     return $_templateId;
 }