diff options
Diffstat (limited to 'libs/sysplugins/smarty_internal_compile_include_php.php')
| -rw-r--r-- | libs/sysplugins/smarty_internal_compile_include_php.php | 100 |
1 files changed, 59 insertions, 41 deletions
diff --git a/libs/sysplugins/smarty_internal_compile_include_php.php b/libs/sysplugins/smarty_internal_compile_include_php.php index 19ee186b..d5271236 100644 --- a/libs/sysplugins/smarty_internal_compile_include_php.php +++ b/libs/sysplugins/smarty_internal_compile_include_php.php @@ -1,90 +1,108 @@ <?php - /** * Smarty Internal Plugin Compile Include PHP - * + * * Compiles the {include_php} tag - * + * * @package Smarty * @subpackage Compiler - * @author Uwe Tews + * @author Uwe Tews */ /** * Smarty Internal Plugin Compile Insert Class + * + * @package Smarty + * @subpackage Compiler */ class Smarty_Internal_Compile_Include_Php extends Smarty_Internal_CompileBase { - // attribute definitions + + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ public $required_attributes = array('file'); - public $shorttag_order = array('file'); - public $optional_attributes = array('once', 'assign'); + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $shorttag_order = array('file'); + /** + * Attribute definition: Overwrites base class. + * + * @var array + * @see Smarty_Internal_CompileBase + */ + public $optional_attributes = array('once', 'assign'); /** * Compiles code for the {include_php} tag - * - * @param array $args array with attributes from parser + * + * @param array $args array with attributes from parser * @param object $compiler compiler object * @return string compiled code */ public function compile($args, $compiler) { - if (!$compiler->smarty->allow_php_tag) { - throw new SmartyException("{include_php} is deprecated, set allow_php_tag = true to enable"); - } - $this->compiler = $compiler; + if (!($compiler->smarty instanceof SmartyBC)) { + throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable"); + } // check and get attributes - $_attr = $this->_get_attributes($args); + $_attr = $this->getAttributes($compiler, $args); - $_output = '<?php '; + $_output = '<?php '; - $_smarty_tpl = $compiler->template; + $_smarty_tpl = $compiler->template; $_filepath = false; - eval('$_file = ' . $_attr['file'] . ';'); - if (!isset($this->compiler->smarty->security_policy) && file_exists($_file)) { - $_filepath = $_file; + eval('$_file = ' . $_attr['file'] . ';'); + if (!isset($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; + if (isset($compiler->smarty->security_policy)) { + $_dir = $compiler->smarty->security_policy->trusted_dir; } else { - $_dir = $this->compiler->smarty->trusted_dir; - } + $_dir = $compiler->smarty->trusted_dir; + } if (!empty($_dir)) { foreach((array)$_dir as $_script_dir) { - if (strpos('/\\', substr($_script_dir, -1)) === false) { - $_script_dir .= DS; - } + $_script_dir = rtrim($_script_dir, '/\\') . DS; if (file_exists($_script_dir . $_file)) { $_filepath = $_script_dir . $_file; break; - } - } - } - } + } + } + } + } if ($_filepath == false) { - $this->compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", $this->compiler->lex->taglineno); - } + $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", $compiler->lex->taglineno); + } - if (isset($this->compiler->smarty->security_policy)) { - $this->compiler->smarty->security_policy->isTrustedPHPDir($_filepath); - } + if (isset($compiler->smarty->security_policy)) { + $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']; - } + } $_once = '_once'; if (isset($_attr['once'])) { if ($_attr['once'] == 'false') { $_once = ''; - } - } + } + } if (isset($_assign)) { return "<?php ob_start(); include{$_once} ('{$_filepath}'); \$_smarty_tpl->assign({$_assign},ob_get_contents()); ob_end_clean();?>"; } else { return "<?php include{$_once} ('{$_filepath}');?>\n"; - } - } -} + } + } + +} ?>
\ No newline at end of file |
