- improvment better error message for undefined templates at {include}

This commit is contained in:
uwe.tews@googlemail.com
2011-09-24 18:20:13 +00:00
parent 5c0d7ad8b4
commit a98d83bbf3
4 changed files with 36 additions and 20 deletions

View File

@@ -3,6 +3,7 @@
- removed internal muteExpectedErrors() calls in favor of having the implementor call this once from his application - removed internal muteExpectedErrors() calls in favor of having the implementor call this once from his application
- optimized muteExpectedErrors() to pass errors to the latest registered error handler, if appliccable - optimized muteExpectedErrors() to pass errors to the latest registered error handler, if appliccable
- added compile_dir and cache_dir to list of muted directories - added compile_dir and cache_dir to list of muted directories
- improvment better error message for undefined templates at {include}
23.09.2011 23.09.2011
- remove unused properties - remove unused properties

View File

@@ -2,12 +2,12 @@
/** /**
* Smarty Internal Plugin Resource PHP * Smarty Internal Plugin Resource PHP
* *
* Implements the file system as resource for PHP templates * Implements the file system as resource for PHP templates
* *
* @package Smarty * @package Smarty
* @subpackage TemplateResources * @subpackage TemplateResources
* @author Uwe Tews * @author Uwe Tews
* @author Rodney Rehm * @author Rodney Rehm
*/ */
class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled { class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
@@ -16,7 +16,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
* @var string * @var string
*/ */
protected $short_open_tag; protected $short_open_tag;
/** /**
* Create a new PHP Resource * Create a new PHP Resource
* *
@@ -24,8 +24,8 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
public function __construct() public function __construct()
{ {
$this->short_open_tag = ini_get( 'short_open_tag' ); $this->short_open_tag = ini_get( 'short_open_tag' );
} }
/** /**
* populate Source Object with meta data from Resource * populate Source Object with meta data from Resource
* *
@@ -41,7 +41,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
if (is_object($source->smarty->security_policy)) { if (is_object($source->smarty->security_policy)) {
$source->smarty->security_policy->isTrustedResourceDir($source->filepath); $source->smarty->security_policy->isTrustedResourceDir($source->filepath);
} }
$source->uid = sha1($source->filepath); $source->uid = sha1($source->filepath);
if ($source->smarty->compile_check) { if ($source->smarty->compile_check) {
$source->timestamp = @filemtime($source->filepath); $source->timestamp = @filemtime($source->filepath);
@@ -49,7 +49,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
} }
} }
} }
/** /**
* populate Source Object with timestamp and exists from Resource * populate Source Object with timestamp and exists from Resource
* *
@@ -64,7 +64,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
/** /**
* Load template's source from file into current template object * Load template's source from file into current template object
* *
* @param Smarty_Template_Source $source source object * @param Smarty_Template_Source $source source object
* @return string template source * @return string template source
* @throws SmartyException if source cannot be loaded * @throws SmartyException if source cannot be loaded
@@ -75,7 +75,7 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
return ''; return '';
} }
throw new SmartyException("Unable to read template {$source->type} '{$source->name}'"); throw new SmartyException("Unable to read template {$source->type} '{$source->name}'");
} }
/** /**
* Render and output the template (without using the compiler) * Render and output the template (without using the compiler)
@@ -88,22 +88,27 @@ class Smarty_Internal_Resource_PHP extends Smarty_Resource_Uncompiled {
public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template) public function renderUncompiled(Smarty_Template_Source $source, Smarty_Internal_Template $_template)
{ {
$_smarty_template = $_template; $_smarty_template = $_template;
if (!$source->smarty->allow_php_templates) { if (!$source->smarty->allow_php_templates) {
throw new SmartyException("PHP templates are disabled"); throw new SmartyException("PHP templates are disabled");
} }
if (!$source->exists) { if (!$source->exists) {
throw new SmartyException("Unable to load template \"{$source->type} : {$source->name}\""); if ($_template->parent instanceof Smarty_Internal_Template) {
} $parent_resource = " in '{$_template->parent->template_resource}'";
} else {
$parent_resource = '';
}
throw new SmartyException("Unable to load template {$source->type} '{$source->name}'{$parent_resource}");
}
// prepare variables // prepare variables
extract($_template->getTemplateVars()); extract($_template->getTemplateVars());
// include PHP template with short open tags enabled // include PHP template with short open tags enabled
ini_set( 'short_open_tag', '1' ); ini_set( 'short_open_tag', '1' );
include($source->filepath); include($source->filepath);
ini_set( 'short_open_tag', $this->short_open_tag ); ini_set( 'short_open_tag', $this->short_open_tag );
} }
} }
?> ?>

View File

@@ -137,7 +137,12 @@ class Smarty_Internal_Template extends Smarty_Internal_TemplateBase {
public function mustCompile() public function mustCompile()
{ {
if (!$this->source->exists) { if (!$this->source->exists) {
throw new SmartyException("Unable to load template {$this->source->type} '{$this->source->name}'"); if ($this->parent instanceof Smarty_Internal_Template) {
$parent_resource = " in '$this->parent->template_resource}'";
} else {
$parent_resource = '';
}
throw new SmartyException("Unable to load template {$this->source->type} '{$this->source->name}'{$parent_resource}");
} }
if ($this->mustCompile === null) { if ($this->mustCompile === null) {
$this->mustCompile = (!$this->source->uncompiled && ($this->smarty->force_compile || $this->source->recompiled || $this->compiled->timestamp === false || $this->mustCompile = (!$this->source->uncompiled && ($this->smarty->force_compile || $this->source->recompiled || $this->compiled->timestamp === false ||

View File

@@ -116,7 +116,12 @@ abstract class Smarty_Internal_TemplateBase extends Smarty_Internal_Data {
} }
// checks if template exists // checks if template exists
if (!$_template->source->exists) { if (!$_template->source->exists) {
throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'"); if ($_template->parent instanceof Smarty_Internal_Template) {
$parent_resource = " in '{$_template->parent->template_resource}'";
} else {
$parent_resource = '';
}
throw new SmartyException("Unable to load template {$_template->source->type} '{$_template->source->name}'{$parent_resource}");
} }
// read from cache or render // read from cache or render
if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || !$_template->cached->valid) { if (!($_template->caching == Smarty::CACHING_LIFETIME_CURRENT || $_template->caching == Smarty::CACHING_LIFETIME_SAVED) || !$_template->cached->valid) {