From cf231447d22256388a49bfe1fb3fb041f6c408fa Mon Sep 17 00:00:00 2001 From: "Uwe.Tews" Date: Fri, 6 Aug 2010 13:43:52 +0000 Subject: [PATCH] - bugfix when cascading some modifier like |strip|strip_tags modifier --- change_log.txt | 3 +++ libs/plugins/modifiercompiler.strip.php | 2 +- libs/plugins/modifiercompiler.strip_tags.php | 4 ++-- .../sysplugins/smarty_internal_compile_private_modifier.php | 6 +++--- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/change_log.txt b/change_log.txt index 1b900c73..913a3f1c 100644 --- a/change_log.txt +++ b/change_log.txt @@ -1,3 +1,6 @@ +06/08/2010 +- bugfix when cascading some modifier like |strip|strip_tags modifier + 05/08/2010 - added plugin type modifiercompiler to produce compiled modifier code - changed standard modifier plugins to the compiling versions whenever possible diff --git a/libs/plugins/modifiercompiler.strip.php b/libs/plugins/modifiercompiler.strip.php index bef97583..25d66f01 100644 --- a/libs/plugins/modifiercompiler.strip.php +++ b/libs/plugins/modifiercompiler.strip.php @@ -26,7 +26,7 @@ function smarty_modifiercompiler_strip($params, $compiler) if (!isset($params[1])) { $params[1] = "' '"; } - return 'preg_replace(\'!\s+!\',' . $params[1] . ',' . $params[0] . ')'; + return "preg_replace('!\s+!', {$params[1]},{$params[0]})"; } ?> \ No newline at end of file diff --git a/libs/plugins/modifiercompiler.strip_tags.php b/libs/plugins/modifiercompiler.strip_tags.php index 96fe9613..97be3b8e 100644 --- a/libs/plugins/modifiercompiler.strip_tags.php +++ b/libs/plugins/modifiercompiler.strip_tags.php @@ -20,11 +20,11 @@ */ function smarty_modifiercompiler_strip_tags($params, $compiler) { - if (!isset($params[1])) { + if (!isset($params[1])) { $params[1] = true; } if ($params[1] === true) { - return 'preg_replace(\'!<[^>]*?>!\', \' \', ' . $params[0] . ')'; + return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})"; } else { return 'strip_tags(' . $params[0] . ')'; } diff --git a/libs/sysplugins/smarty_internal_compile_private_modifier.php b/libs/sysplugins/smarty_internal_compile_private_modifier.php index 0e879503..3556c12e 100644 --- a/libs/sysplugins/smarty_internal_compile_private_modifier.php +++ b/libs/sysplugins/smarty_internal_compile_private_modifier.php @@ -39,8 +39,8 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa $mod_array[0][$i] = ','; } } - $mod_array[0][0] = $output; - $params = implode('', $mod_array[0]); + unset($mod_array[0][0]); + $params = $output.implode('', $mod_array[0]); // check for registered modifier if (isset($compiler->smarty->registered_plugins['modifier'][$modifier])) { $function = $compiler->smarty->registered_plugins['modifier'][$modifier][0]; @@ -56,7 +56,7 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa // check for plugin modifiercompiler } else if ($compiler->smarty->loadPlugin('smarty_modifiercompiler_' . $modifier)) { $plugin = 'smarty_modifiercompiler_' . $modifier; - $args = explode(',', $params); + $args = array_merge((array)$output,$mod_array[0]); $output = $plugin($args, $compiler); // check for plugin modifier } else if ($function = $this->compiler->getPlugin($modifier, 'modifier')) {