diff options
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_template_config.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_template_config.php | 45 |
1 files changed, 12 insertions, 33 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_template_config.php b/library/Smarty/libs/sysplugins/smarty_template_config.php index f48d4711d..f0fff5080 100644 --- a/library/Smarty/libs/sysplugins/smarty_template_config.php +++ b/library/Smarty/libs/sysplugins/smarty_template_config.php @@ -14,35 +14,11 @@ * @package Smarty * @subpackage TemplateResources * @author Uwe Tews - * @property integer $timestamp Source Timestamp - * @property boolean $exists Source Existence - * @property boolean $template Extended Template reference - * @property string $content Source Content + * */ class Smarty_Template_Config extends Smarty_Template_Source { /** - * Name of the Class to compile this resource's contents with - * - * @var string - */ - public $compiler_class = 'Smarty_Internal_Config_File_Compiler'; - - /** - * Name of the Class to tokenize this resource's contents with - * - * @var string - */ - public $template_lexer_class = 'Smarty_Internal_Configfilelexer'; - - /** - * Name of the Class to parse this resource's contents with - * - * @var string - */ - public $template_parser_class = 'Smarty_Internal_Configfileparser'; - - /** * array of section names, single section or null * * @var null|string|array @@ -74,7 +50,11 @@ class Smarty_Template_Config extends Smarty_Template_Source */ public function __construct(Smarty_Resource $handler, Smarty $smarty, $resource, $type, $name) { + // must clone handler as we change class names $this->handler = clone $handler; // Note: prone to circular references + $this->handler->compiler_class = 'Smarty_Internal_Config_File_Compiler'; + $this->handler->template_lexer_class = 'Smarty_Internal_Configfilelexer'; + $this->handler->template_parser_class = 'Smarty_Internal_Configfileparser'; $this->resource = $resource; $this->type = $type; $this->name = $name; @@ -89,30 +69,29 @@ class Smarty_Template_Config extends Smarty_Template_Source * @param Smarty $smarty smarty object * @param string $template_resource resource identifier * - * @return Smarty_Template_Source Source Object + * @return Smarty_Template_Config Source Object * @throws SmartyException */ public static function load(Smarty_Internal_Template $_template = null, Smarty $smarty = null, $template_resource = null) { static $_incompatible_resources = array('extends' => true, 'php' => true); - $smarty = $_template->smarty; $template_resource = $_template->template_resource; if (empty($template_resource)) { throw new SmartyException('Missing config name'); } // parse resource_name, load resource handler - list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $smarty->default_config_type); + list($name, $type) = Smarty_Resource::parseResourceName($template_resource, $_template->smarty->default_config_type); // make sure configs are not loaded via anything smarty can't handle if (isset($_incompatible_resources[$type])) { throw new SmartyException ("Unable to use resource '{$type}' for config"); } - $resource = Smarty_Resource::load($smarty, $type); - $source = new Smarty_Template_Config($resource, $smarty, $template_resource, $type, $name); + $resource = Smarty_Resource::load($_template->smarty, $type); + $source = new Smarty_Template_Config($resource, $_template->smarty, $template_resource, $type, $name); $resource->populate($source, $_template); - if ((!isset($source->exists) || !$source->exists) && isset($_template->smarty->default_config_handler_func)) { - Smarty_Internal_Extension_DefaultTemplateHandler::_getDefault($_template, $source, $resource); + if (!$source->exists && isset($_template->smarty->default_config_handler_func)) { + Smarty_Internal_Method_RegisterDefaultTemplateHandler::_getDefaultTemplate($source); } - $source->unique_resource = $resource->buildUniqueResourceName($smarty, $name, true); + $source->unique_resource = $resource->buildUniqueResourceName($_template->smarty, $name, true); return $source; } } |