X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fsmarty%2Fsysplugins%2Fsmarty_internal_compile_include_php.php;h=19ee186bc9e572836afaf6d366a249c38ec21714;hb=6cf1d45205641e6641780b1488d2f20c0ac00ebe;hp=e71f978d94dfd410d345e26acae6581298db6ef9;hpb=d6336a0c6f44b2bbf61ac56bad2beb3d570a1e23;p=gosa.git diff --git a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include_php.php b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include_php.php index e71f978d9..19ee186bc 100644 --- a/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include_php.php +++ b/gosa-core/include/smarty/sysplugins/smarty_internal_compile_include_php.php @@ -1,51 +1,73 @@ smarty->allow_php_tag) { + throw new SmartyException("{include_php} is deprecated, set allow_php_tag = true to enable"); + } $this->compiler = $compiler; - $this->required_attributes = array('file'); - $this->optional_attributes = array('once', 'assign'); // check and get attributes $_attr = $this->_get_attributes($args); $_output = 'template; + $_filepath = false; eval('$_file = ' . $_attr['file'] . ';'); - - $_file = realpath($_file); - - if ($this->compiler->smarty->security) { - $this->compiler->smarty->security_handler->isTrustedPHPDir($_file); + if (!isset($this->compiler->smarty->security_policy) && file_exists($_file)) { + $_filepath = $_file; + } else { + if (isset($this->compiler->smarty->security_policy)) { + $_dir = $this->compiler->smarty->security_policy->trusted_dir; + } else { + $_dir = $this->compiler->smarty->trusted_dir; + } + if (!empty($_dir)) { + foreach((array)$_dir as $_script_dir) { + if (strpos('/\\', substr($_script_dir, -1)) === false) { + $_script_dir .= DS; + } + if (file_exists($_script_dir . $_file)) { + $_filepath = $_script_dir . $_file; + break; + } + } + } } - - if ($_file === false) { - $this->compiler->trigger_template_error('include_php: file "' . $_attr['file'] . '" is not readable'); + if ($_filepath == false) { + $this->compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", $this->compiler->lex->taglineno); } - if ($this->compiler->smarty->security) { - $this->compiler->smarty->security_handler->isTrustedPHPDir($_file); + if (isset($this->compiler->smarty->security_policy)) { + $this->compiler->smarty->security_policy->isTrustedPHPDir($_filepath); } + if (isset($_attr['assign'])) { // output will be stored in a smarty variable instead of being displayed $_assign = $_attr['assign']; @@ -58,11 +80,11 @@ 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_contents()); ob_end_clean();?>"; } else { - return "\n"; + return "\n"; } } } -?> +?> \ No newline at end of file