- bugfix same relative filepath at {include} called from template in different folders could display wrong sub-template

This commit is contained in:
uwetews
2016-05-02 04:28:09 +02:00
parent 971058fc61
commit ecdd33d334
2 changed files with 6 additions and 5 deletions

View File

@@ -121,7 +121,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/** /**
* smarty version * smarty version
*/ */
const SMARTY_VERSION = '3.1.30-dev/65'; const SMARTY_VERSION = '3.1.30-dev/66';
/** /**
* define variable scopes * define variable scopes

View File

@@ -211,7 +211,7 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
$tpl = new $compiler->smarty->template_class (trim($fullResourceName, '"\''), $compiler->smarty, $tpl = new $compiler->smarty->template_class (trim($fullResourceName, '"\''), $compiler->smarty,
$compiler->template, $compiler->template->cache_id, $c_id, $compiler->template, $compiler->template->cache_id, $c_id,
$_caching); $_caching);
$uid = $tpl->source->uid; $uid = $tpl->source->type . $tpl->source->uid;
if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) { if (!isset($compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ])) {
$has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash); $has_compiled_template = $this->compileInlineTemplate($compiler, $tpl, $t_hash);
} else { } else {
@@ -293,8 +293,9 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
public function compileInlineTemplate(Smarty_Internal_SmartyTemplateCompiler $compiler, public function compileInlineTemplate(Smarty_Internal_SmartyTemplateCompiler $compiler,
Smarty_Internal_Template $tpl, $t_hash) Smarty_Internal_Template $tpl, $t_hash)
{ {
$uid = $tpl->source->type . $tpl->source->uid;
if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) { if (!($tpl->source->handler->uncompiled) && $tpl->source->exists) {
$compiler->parent_compiler->mergedSubTemplatesData[ $tpl->source->uid ][ $t_hash ][ 'uid' ] = $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'uid' ] =
$tpl->source->uid; $tpl->source->uid;
if (isset($compiler->template->ext->_inheritance)) { if (isset($compiler->template->ext->_inheritance)) {
$tpl->ext->_inheritance = clone $compiler->template->ext->_inheritance; $tpl->ext->_inheritance = clone $compiler->template->ext->_inheritance;
@@ -303,11 +304,11 @@ class Smarty_Internal_Compile_Include extends Smarty_Internal_CompileBase
$tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash; $tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash;
$tpl->loadCompiler(); $tpl->loadCompiler();
// save unique function name // save unique function name
$compiler->parent_compiler->mergedSubTemplatesData[ $tpl->source->uid ][ $t_hash ][ 'func' ] = $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'func' ] =
$tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true)); $tpl->compiled->unifunc = 'content_' . str_replace(array('.', ','), '_', uniqid('', true));
// make sure whole chain gets compiled // make sure whole chain gets compiled
$tpl->mustCompile = true; $tpl->mustCompile = true;
$compiler->parent_compiler->mergedSubTemplatesData[ $tpl->source->uid ][ $t_hash ][ 'nocache_hash' ] = $compiler->parent_compiler->mergedSubTemplatesData[ $uid ][ $t_hash ][ 'nocache_hash' ] =
$tpl->compiled->nocache_hash; $tpl->compiled->nocache_hash;
if ($compiler->template->source->type == 'file') { if ($compiler->template->source->type == 'file') {
$sourceInfo = $compiler->template->source->filepath; $sourceInfo = $compiler->template->source->filepath;