diff options
Diffstat (limited to 'library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php')
-rw-r--r-- | library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php | 39 |
1 files changed, 23 insertions, 16 deletions
diff --git a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php index 4760dbe3f..23b17ae14 100644 --- a/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php +++ b/library/Smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php @@ -1,32 +1,33 @@ <?php /** * Smarty Internal Plugin Compile Special Smarty Variable - * * Compiles the special $smarty variables * - * @package Smarty + * @package Smarty * @subpackage Compiler - * @author Uwe Tews + * @author Uwe Tews */ /** * Smarty Internal Plugin Compile special Smarty Variable Class * - * @package Smarty + * @package Smarty * @subpackage Compiler */ -class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase { - +class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_CompileBase +{ /** - * Compiles code for the speical $smarty variables + * Compiles code for the special $smarty variables + * + * @param array $args array with attributes from parser + * @param object $compiler compiler object + * @param $parameter * - * @param array $args array with attributes from parser - * @param object $compiler compiler object * @return string compiled code */ public function compile($args, $compiler, $parameter) { - $_index = preg_split("/\]\[/",substr($parameter, 1, strlen($parameter)-2)); + $_index = preg_split("/\]\[/", substr($parameter, 1, strlen($parameter) - 2)); $compiled_ref = ' '; $variable = trim($_index[0], "'"); switch ($variable) { @@ -56,7 +57,7 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C $compiler->trigger_template_error("(secure mode) super globals not permitted"); break; } - $compiled_ref = '$_'.strtoupper($variable); + $compiled_ref = '$_' . strtoupper($variable); break; case 'template': @@ -70,6 +71,7 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C case 'version': $_version = Smarty::SMARTY_VERSION; + return "'$_version'"; case 'const': @@ -77,16 +79,23 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C $compiler->trigger_template_error("(secure mode) constants not permitted"); break; } - return '@' . trim($_index[1], "'"); + + return "@constant({$_index[1]})"; case 'config': - return "\$_smarty_tpl->getConfigVariable($_index[1])"; + if (isset($_index[2])) { + return "(is_array(\$tmp = \$_smarty_tpl->getConfigVariable($_index[1])) ? \$tmp[$_index[2]] : null)"; + } else { + return "\$_smarty_tpl->getConfigVariable($_index[1])"; + } case 'ldelim': $_ldelim = $compiler->smarty->left_delimiter; + return "'$_ldelim'"; case 'rdelim': $_rdelim = $compiler->smarty->right_delimiter; + return "'$_rdelim'"; default: @@ -99,9 +108,7 @@ class Smarty_Internal_Compile_Private_Special_Variable extends Smarty_Internal_C $compiled_ref = $compiled_ref . "[$_ind]"; } } + return $compiled_ref; } - } - -?>
\ No newline at end of file |