summaryrefslogtreecommitdiff
path: root/libs/sysplugins
diff options
context:
space:
mode:
authoruwe.tews@googlemail.com <uwe.tews@googlemail.com>2010-09-17 18:10:10 +0000
committeruwe.tews@googlemail.com <uwe.tews@googlemail.com>2010-09-17 18:10:10 +0000
commit18bcfa2ba796128a66129c65484d7953eb968131 (patch)
tree7845875782d554df0b4b32317bb65ad3987fa509 /libs/sysplugins
parent66752cd790ac9ee52e278127f1d0297f2cc4f187 (diff)
downloadsmarty-18bcfa2ba796128a66129c65484d7953eb968131.tar.gz
smarty-18bcfa2ba796128a66129c65484d7953eb968131.tar.bz2
smarty-18bcfa2ba796128a66129c65484d7953eb968131.zip
- bugfix {$smarty.template} and {$smarty.current_dir} did not compile correctly within {block} tags
- bugfix corrected error message on missing template files in extends resource - bugfix untility compileAllTemplates() did not create sha1 code for compiled template file names if template_dir was defined with no trailing DS
Diffstat (limited to 'libs/sysplugins')
-rw-r--r--libs/sysplugins/smarty_internal_compile_block.php4
-rw-r--r--libs/sysplugins/smarty_internal_compile_private_special_variable.php14
-rw-r--r--libs/sysplugins/smarty_internal_resource_extends.php6
-rw-r--r--libs/sysplugins/smarty_internal_utility.php6
4 files changed, 22 insertions, 8 deletions
diff --git a/libs/sysplugins/smarty_internal_compile_block.php b/libs/sysplugins/smarty_internal_compile_block.php
index 4e10a396..76e8f20b 100644
--- a/libs/sysplugins/smarty_internal_compile_block.php
+++ b/libs/sysplugins/smarty_internal_compile_block.php
@@ -34,6 +34,8 @@ class Smarty_Internal_Compile_Block extends Smarty_Internal_CompileBase {
$compiler->nocache = true;
}
}
+ // set flag for {block} tag
+ $compiler->smarty->inheritance = true;
// must merge includes
$this->compiler->smarty->merge_compiled_includes = true;
@@ -109,6 +111,8 @@ class Smarty_Internal_Compile_Blockclose extends Smarty_Internal_CompileBase {
$compiler->smarty->merge_compiled_includes = $saved_data[2];
// $_output content has already nocache code processed
$compiler->suppressNocacheProcessing = true;
+ // reset flag
+ $compiler->smarty->inheritance = false;
return $_output;
}
}
diff --git a/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/libs/sysplugins/smarty_internal_compile_private_special_variable.php
index cd90a119..ec628b05 100644
--- a/libs/sysplugins/smarty_internal_compile_private_special_variable.php
+++ b/libs/sysplugins/smarty_internal_compile_private_special_variable.php
@@ -56,11 +56,21 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C
break;
case 'template':
- $_template_name = $compiler->template->template_resource;
+ if ($compiler->smarty->inheritance) {
+ $ptr = $compiler->template->parent;
+ } else {
+ $ptr = $compiler->template;
+ }
+ $_template_name = $ptr->template_resource;
return "'$_template_name'";
case 'current_dir':
- $_template_dir_name = dirname($compiler->template->getTemplateFilepath());
+ if ($compiler->smarty->inheritance) {
+ $ptr = $compiler->template->parent;
+ } else {
+ $ptr = $compiler->template;
+ }
+ $_template_dir_name = dirname($ptr->getTemplateFilepath());
return "'$_template_dir_name'";
case 'version':
diff --git a/libs/sysplugins/smarty_internal_resource_extends.php b/libs/sysplugins/smarty_internal_resource_extends.php
index 5db8e761..891c950f 100644
--- a/libs/sysplugins/smarty_internal_resource_extends.php
+++ b/libs/sysplugins/smarty_internal_resource_extends.php
@@ -55,6 +55,9 @@ class Smarty_Internal_Resource_Extends {
$_files = explode('|', $_template->resource_name);
foreach ($_files as $_file) {
$_filepath = $_template->buildTemplateFilepath ($_file);
+ if ($_filepath === false) {
+ throw new SmartyException("Unable to load template 'file : {$_file}'");
+ }
if ($_filepath !== false) {
if ($_template->security) {
$_template->smarty->security_handler->isTrustedResourceDir($_filepath);
@@ -90,9 +93,6 @@ class Smarty_Internal_Resource_Extends {
$_files = array_reverse($this->allFilepaths);
foreach ($_files as $_filepath) {
// read template file
- if ($_filepath === false) {
- throw new SmartyException("Unable to load template 'file : {$_file}'");
- }
if ($_filepath != $_files[0]) {
$_template->properties['file_dependency'][sha1($_filepath)] = array($_filepath, filemtime($_filepath));
}
diff --git a/libs/sysplugins/smarty_internal_utility.php b/libs/sysplugins/smarty_internal_utility.php
index e3cb6cec..8759cbd3 100644
--- a/libs/sysplugins/smarty_internal_utility.php
+++ b/libs/sysplugins/smarty_internal_utility.php
@@ -67,10 +67,10 @@ class Smarty_Internal_Utility {
$_file = $_fileinfo->getFilename();
if (!substr_compare($_file, $extention, - strlen($extention)) == 0) continue;
if ($_fileinfo->getPath() == substr($_dir, 0, -1)) {
- $_template_file = $_file;
+ $_template_file = $_file;
} else {
- $_template_file = substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file;
- }
+ $_template_file = substr(substr($_fileinfo->getPath(), strlen($_dir)) . DS . $_file,1);
+ }
echo '<br>', $_dir, '---', $_template_file;
flush();
$_start_time = microtime(true);