summaryrefslogtreecommitdiff
path: root/lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php')
-rw-r--r--lib/smarty3/sysplugins/smarty_internal_compile_private_modifier.php69
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;
}
}