smarty instanceof SmartyBC)) { throw new SmartyException("{include_php} is deprecated, use SmartyBC class to enable"); } // check and get attributes $_attr = $this->getAttributes($compiler, $args); /** @var Smarty_Internal_Template $_smarty_tpl * used in evaluated code */ $_smarty_tpl = $compiler->template; $_filepath = false; $_file = null; eval('$_file = @' . $_attr[ 'file' ] . ';'); if (!isset($compiler->smarty->security_policy) && file_exists($_file)) { $_filepath = $compiler->smarty->_realpath($_file, true); } else { if (isset($compiler->smarty->security_policy)) { $_dir = $compiler->smarty->security_policy->trusted_dir; } else { $_dir = $compiler->smarty->trusted_dir; } if (!empty($_dir)) { foreach ((array) $_dir as $_script_dir) { $_path = $compiler->smarty->_realpath($_script_dir . $compiler->smarty->ds . $_file, true); if (file_exists($_path)) { $_filepath = $_path; break; } } } } if ($_filepath == false) { $compiler->trigger_template_error("{include_php} file '{$_file}' is not readable", null, true); } 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 "assign({$_assign},ob_get_clean());\n?>"; } else { return "\n"; } } }