diff options
Diffstat (limited to 'lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php')
-rw-r--r-- | lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php | 69 |
1 files changed, 35 insertions, 34 deletions
diff --git a/lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php b/lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php index 2ee88db..72773ff 100644 --- a/lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php +++ b/lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php @@ -1,5 +1,4 @@ <?php - /** * Smarty Internal Plugin Compile Modifier * Compiles code for modifier execution @@ -20,12 +19,13 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa /** * Compiles code for modifier execution * - * @param array $args array with attributes from parser + * @param array $args array with attributes from parser * @param \Smarty_Internal_TemplateCompilerBase $compiler compiler object - * @param array $parameter array with compilation parameter + * @param array $parameter array with compilation parameter * * @return string compiled code * @throws \SmartyCompilerException + * @throws \SmartyException */ public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter) { @@ -34,6 +34,7 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa $output = $parameter[ 'value' ]; // loop over list of modifiers foreach ($parameter[ 'modifierlist' ] as $single_modifier) { + /* @var string $modifier */ $modifier = $single_modifier[ 0 ]; $single_modifier[ 0 ] = $output; $params = implode(',', $single_modifier); @@ -48,28 +49,28 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa case 1: // registered modifier if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ])) { - $function = - $compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ]; - if (!is_array($function)) { - $output = "{$function}({$params})"; - } else { - if (is_object($function[ 0 ])) { - $output = '$_smarty_tpl->smarty->registered_plugins[Smarty::PLUGIN_MODIFIER][\'' . - $modifier . '\'][0][0]->' . $function[ 1 ] . '(' . $params . ')'; - } else { - $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')'; - } + if (is_callable($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ])) { + $output = + sprintf( + 'call_user_func_array($_smarty_tpl->registered_plugins[ \'%s\' ][ %s ][ 0 ], array( %s ))', + Smarty::PLUGIN_MODIFIER, + var_export($modifier, true), + $params + ); + $compiler->known_modifier_type[ $modifier ] = $type; + break 2; } - $compiler->known_modifier_type[ $modifier ] = $type; - break 2; } break; case 2: // registered modifier compiler if (isset($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ])) { $output = - call_user_func($compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ], - $single_modifier, $compiler->smarty); + call_user_func( + $compiler->smarty->registered_plugins[ Smarty::PLUGIN_MODIFIERCOMPILER ][ $modifier ][ 0 ], + $single_modifier, + $compiler->smarty + ); $compiler->known_modifier_type[ $modifier ] = $type; break 2; } @@ -78,8 +79,8 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa // modifiercompiler plugin if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) { // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) || - $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) + if (!is_object($compiler->smarty->security_policy) + || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) ) { $plugin = 'smarty_modifiercompiler_' . $modifier; $output = $plugin($single_modifier, $compiler); @@ -92,8 +93,8 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa // modifier plugin if ($function = $compiler->getPlugin($modifier, Smarty::PLUGIN_MODIFIER)) { // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) || - $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) + if (!is_object($compiler->smarty->security_policy) + || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) ) { $output = "{$function}({$params})"; } @@ -105,8 +106,8 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa // PHP function if (is_callable($modifier)) { // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) || - $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler) + if (!is_object($compiler->smarty->security_policy) + || $compiler->smarty->security_policy->isTrustedPhpModifier($modifier, $compiler) ) { $output = "{$modifier}({$params})"; } @@ -116,27 +117,28 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa break; case 6: // default plugin handler - if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ]) || - (is_callable($compiler->smarty->default_plugin_handler_func) && - $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER)) + if (isset($compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ]) + || (is_callable($compiler->smarty->default_plugin_handler_func) + && $compiler->getPluginFromDefaultHandler($modifier, Smarty::PLUGIN_MODIFIER)) ) { $function = $compiler->default_handler_plugins[ Smarty::PLUGIN_MODIFIER ][ $modifier ][ 0 ]; // check if modifier allowed - if (!is_object($compiler->smarty->security_policy) || - $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) + if (!is_object($compiler->smarty->security_policy) + || $compiler->smarty->security_policy->isTrustedModifier($modifier, $compiler) ) { if (!is_array($function)) { $output = "{$function}({$params})"; } else { if (is_object($function[ 0 ])) { - $output = $function[ 0 ] . '->'. $function[ 1 ] . '(' . $params . ')'; + $output = $function[ 0 ] . '->' . $function[ 1 ] . '(' . $params . ')'; } else { $output = $function[ 0 ] . '::' . $function[ 1 ] . '(' . $params . ')'; } } } - if (isset($compiler->parent_compiler->template->compiled->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) || - isset($compiler->parent_compiler->template->compiled->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) + if (isset($compiler->required_plugins[ 'nocache' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) + || + isset($compiler->required_plugins[ 'compiled' ][ $modifier ][ Smarty::PLUGIN_MODIFIER ][ 'file' ]) ) { // was a plugin $compiler->known_modifier_type[ $modifier ] = 4; @@ -148,10 +150,9 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa } } if (!isset($compiler->known_modifier_type[ $modifier ])) { - $compiler->trigger_template_error("unknown modifier \"" . $modifier . "\"", null, true); + $compiler->trigger_template_error("unknown modifier '{$modifier}'", null, true); } } - return $output; } } |