From fa10e0945ecd45bfe78a2c8fb015a43092b4944b Mon Sep 17 00:00:00 2001 From: plegall Date: Thu, 10 Dec 2015 14:02:22 +0100 Subject: bug #385 update to smarty-3.1.28-dev (from Github) --- .../smarty_internal_compile_include_php.php | 49 ++++++++++++---------- 1 file changed, 26 insertions(+), 23 deletions(-) (limited to 'include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php') diff --git a/include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php b/include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php index d52712368..e7e62997c 100644 --- a/include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php +++ b/include/smarty/libs/sysplugins/smarty_internal_compile_include_php.php @@ -1,22 +1,21 @@ smarty instanceof SmartyBC)) { throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable"); @@ -54,13 +58,15 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase { // check and get attributes $_attr = $this->getAttributes($compiler, $args); - $_output = 'template; $_filepath = false; - eval('$_file = ' . $_attr['file'] . ';'); + $_file = null; + eval('$_file = @' . $_attr['file'] . ';'); if (!isset($compiler->smarty->security_policy) && file_exists($_file)) { - $_filepath = $_file; + $_filepath = $compiler->smarty->_realpath($_file, true); } else { if (isset($compiler->smarty->security_policy)) { $_dir = $compiler->smarty->security_policy->trusted_dir; @@ -68,17 +74,17 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase { $_dir = $compiler->smarty->trusted_dir; } if (!empty($_dir)) { - foreach((array)$_dir as $_script_dir) { - $_script_dir = rtrim($_script_dir, '/\\') . DS; - if (file_exists($_script_dir . $_file)) { - $_filepath = $_script_dir . $_file; + foreach ((array) $_dir as $_script_dir) { + $_path = $compiler->smarty->_realpath($_script_dir . DS . $_file, true); + if (file_exists($_path)) { + $_filepath = $_path; break; } } } } if ($_filepath == false) { - $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", $compiler->lex->taglineno); + $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", null, true); } if (isset($compiler->smarty->security_policy)) { @@ -97,12 +103,9 @@ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase { } if (isset($_assign)) { - return "assign({$_assign},ob_get_contents()); ob_end_clean();?>"; + return "assign({$_assign},ob_get_clean());\n?>"; } else { return "\n"; } } - } - -?> \ No newline at end of file -- cgit v1.2.3