diff --git a/Smarty.class.php b/Smarty.class.php index c87109f6..b6c2524b 100644 --- a/Smarty.class.php +++ b/Smarty.class.php @@ -696,10 +696,10 @@ class Smarty Function: _smarty_include() Purpose: called for included templates \*======================================================================*/ - function _smarty_include($_smarty_include_tpl_file ,$_smarty_def_vars, - $_smarty_include_vars, &$_smarty_config_parent) + function _smarty_include($_smarty_include_tpl_file, $_smarty_include_vars, + &$_smarty_config_parent) { - extract($_smarty_def_vars); + $this->_tpl_vars = array_merge($this->_tpl_vars, $_smarty_include_vars); extract($_smarty_include_vars); $this->_process_template($_smarty_include_tpl_file, $compile_path); diff --git a/Smarty_Compiler.class.php b/Smarty_Compiler.class.php index fd8d9c7d..885e2244 100644 --- a/Smarty_Compiler.class.php +++ b/Smarty_Compiler.class.php @@ -363,7 +363,9 @@ class Smarty_Compiler extends Smarty { foreach ($attrs as $arg_name => $arg_value) { if ($arg_name == 'file') { - $_smarty_include_tpl_file = $arg_value; + $_smarty_include_tpl_file = $this->_dequote($arg_value); + if ($_smarty_include_tpl_file{0} != '$') + $_smarty_include_tpl_file = '"' . $_smarty_include_tpl_file . '"'; continue; } if (is_bool($arg_value)) @@ -372,11 +374,12 @@ class Smarty_Compiler extends Smarty { } return "_tpl_vars;\n" . "unset(\$_smarty_defined_vars['_smarty_include_tpl_file']);\n" . - "unset(\$_smarty_defined_vars['_smarty_def_vars']);\n" . "unset(\$_smarty_defined_vars['_smarty_include_vars']);\n" . - "\$this->_smarty_include(".$_smarty_include_tpl_file.", \$_smarty_defined_vars, array(".implode(',', (array)$arg_list)."), \$_smarty_config);\n?>"; + "\$this->_smarty_include(".$_smarty_include_tpl_file.", array(".implode(',', (array)$arg_list)."), \$_smarty_config);\n" . + "\$this->_tpl_vars = \$_smarty_defined_vars;\n" . + "unset(\$_smarty_tpl_vars); ?>"; } /*======================================================================*\ diff --git a/libs/Smarty.class.php b/libs/Smarty.class.php index c87109f6..b6c2524b 100644 --- a/libs/Smarty.class.php +++ b/libs/Smarty.class.php @@ -696,10 +696,10 @@ class Smarty Function: _smarty_include() Purpose: called for included templates \*======================================================================*/ - function _smarty_include($_smarty_include_tpl_file ,$_smarty_def_vars, - $_smarty_include_vars, &$_smarty_config_parent) + function _smarty_include($_smarty_include_tpl_file, $_smarty_include_vars, + &$_smarty_config_parent) { - extract($_smarty_def_vars); + $this->_tpl_vars = array_merge($this->_tpl_vars, $_smarty_include_vars); extract($_smarty_include_vars); $this->_process_template($_smarty_include_tpl_file, $compile_path); diff --git a/libs/Smarty_Compiler.class.php b/libs/Smarty_Compiler.class.php index fd8d9c7d..885e2244 100644 --- a/libs/Smarty_Compiler.class.php +++ b/libs/Smarty_Compiler.class.php @@ -363,7 +363,9 @@ class Smarty_Compiler extends Smarty { foreach ($attrs as $arg_name => $arg_value) { if ($arg_name == 'file') { - $_smarty_include_tpl_file = $arg_value; + $_smarty_include_tpl_file = $this->_dequote($arg_value); + if ($_smarty_include_tpl_file{0} != '$') + $_smarty_include_tpl_file = '"' . $_smarty_include_tpl_file . '"'; continue; } if (is_bool($arg_value)) @@ -372,11 +374,12 @@ class Smarty_Compiler extends Smarty { } return "_tpl_vars;\n" . "unset(\$_smarty_defined_vars['_smarty_include_tpl_file']);\n" . - "unset(\$_smarty_defined_vars['_smarty_def_vars']);\n" . "unset(\$_smarty_defined_vars['_smarty_include_vars']);\n" . - "\$this->_smarty_include(".$_smarty_include_tpl_file.", \$_smarty_defined_vars, array(".implode(',', (array)$arg_list)."), \$_smarty_config);\n?>"; + "\$this->_smarty_include(".$_smarty_include_tpl_file.", array(".implode(',', (array)$arg_list)."), \$_smarty_config);\n" . + "\$this->_tpl_vars = \$_smarty_defined_vars;\n" . + "unset(\$_smarty_tpl_vars); ?>"; } /*======================================================================*\