mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 02:44:27 +02:00
.- bugfix relative includes with same name like {include './foo.tpl'} from different folder failed (forum topic 24590)(Issue 161)
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
===== trunk =====
|
===== trunk =====
|
||||||
13.10.2013
|
13.10.2013
|
||||||
bugfix variable names on {include} in template inheritance did unextepted error message (forum topic 24585) (Issue 161)
|
- bugfix variable names on {include} in template inheritance did unextepted error message (forum topic 24594) (Issue 161)
|
||||||
|
.- bugfix relative includes with same name like {include './foo.tpl'} from different folder failed (forum topic 24590)(Issue 161)
|
||||||
|
|
||||||
04.10.2013
|
04.10.2013
|
||||||
- bugfix variable file names at {extends} had been disbabled by mistake with the rewrite of
|
- bugfix variable file names at {extends} had been disbabled by mistake with the rewrite of
|
||||||
|
@@ -243,7 +243,7 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase
|
|||||||
{
|
{
|
||||||
// already in template cache?
|
// already in template cache?
|
||||||
if ($this->smarty->allow_ambiguous_resources) {
|
if ($this->smarty->allow_ambiguous_resources) {
|
||||||
$_templateId = Smarty_Resource::getUniqueTemplateName($this->smarty, $template) . $cache_id . $compile_id;
|
$_templateId = Smarty_Resource::getUniqueTemplateName($this, $template) . $cache_id . $compile_id;
|
||||||
} else {
|
} else {
|
||||||
$_templateId = $this->smarty->joined_template_dir . '#' . $template . $cache_id . $compile_id;
|
$_templateId = $this->smarty->joined_template_dir . '#' . $template . $cache_id . $compile_id;
|
||||||
}
|
}
|
||||||
|
@@ -491,17 +491,21 @@ abstract class Smarty_Resource
|
|||||||
/**
|
/**
|
||||||
* modify template_resource according to resource handlers specifications
|
* modify template_resource according to resource handlers specifications
|
||||||
*
|
*
|
||||||
* @param string $smarty Smarty instance
|
* @param Smarty_Internal_template $template Smarty instance
|
||||||
* @param string $template_resource template_resource to extracate resource handler and name of
|
* @param string $template_resource template_resource to extracate resource handler and name of
|
||||||
* @return string unique resource name
|
* @return string unique resource name
|
||||||
*/
|
*/
|
||||||
public static function getUniqueTemplateName($smarty, $template_resource)
|
public static function getUniqueTemplateName($template, $template_resource)
|
||||||
{
|
{
|
||||||
self::parseResourceName($template_resource, $smarty->default_resource_type, $name, $type);
|
self::parseResourceName($template_resource, $template->smarty->default_resource_type, $name, $type);
|
||||||
// TODO: optimize for Smarty's internal resource types
|
// TODO: optimize for Smarty's internal resource types
|
||||||
$resource = Smarty_Resource::load($smarty, $type);
|
$resource = Smarty_Resource::load($template->smarty, $type);
|
||||||
|
// go relative to a given template?
|
||||||
return $resource->buildUniqueResourceName($smarty, $name);
|
$_file_is_dotted = $name[0] == '.' && ($name[1] == '.' || $name[1] == '/' || $name[1] == "\\");
|
||||||
|
if ($template instanceof Smarty_Internal_Template && $_file_is_dotted && ($template->source->type == 'file' || $template->parent->source->type == 'extends')) {
|
||||||
|
$name = dirname($template->source->filepath) . DS . $name;
|
||||||
|
}
|
||||||
|
return $resource->buildUniqueResourceName($template->smarty, $name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -524,7 +528,12 @@ abstract class Smarty_Resource
|
|||||||
// parse resource_name, load resource handler, identify unique resource name
|
// parse resource_name, load resource handler, identify unique resource name
|
||||||
self::parseResourceName($template_resource, $smarty->default_resource_type, $name, $type);
|
self::parseResourceName($template_resource, $smarty->default_resource_type, $name, $type);
|
||||||
$resource = Smarty_Resource::load($smarty, $type);
|
$resource = Smarty_Resource::load($smarty, $type);
|
||||||
$unique_resource_name = $resource->buildUniqueResourceName($smarty, $name);
|
// go relative to a given template?
|
||||||
|
$_file_is_dotted = $name[0] == '.' && ($name[1] == '.' || $name[1] == '/' || $name[1] == "\\");
|
||||||
|
if ($_template->parent instanceof Smarty_Internal_Template && $_file_is_dotted && ($_template->parent->source->type == 'file' || $_template->parent->source->type == 'extends')) {
|
||||||
|
$name2 = dirname($_template->parent->source->filepath) . DS . $name;
|
||||||
|
}
|
||||||
|
$unique_resource_name = $resource->buildUniqueResourceName($smarty, $name2);
|
||||||
|
|
||||||
// check runtime cache
|
// check runtime cache
|
||||||
$_cache_key = 'template|' . $unique_resource_name;
|
$_cache_key = 'template|' . $unique_resource_name;
|
||||||
|
Reference in New Issue
Block a user