From 8598eca6bc394d4f611b920c1869a0b71ba7749e Mon Sep 17 00:00:00 2001 From: "Uwe.Tews" Date: Sat, 24 Jul 2010 23:34:19 +0000 Subject: [PATCH] --- .../smarty_internal_compile_private_modifier.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libs/sysplugins/smarty_internal_compile_private_modifier.php b/libs/sysplugins/smarty_internal_compile_private_modifier.php index 38221034..2392aba1 100644 --- a/libs/sysplugins/smarty_internal_compile_private_modifier.php +++ b/libs/sysplugins/smarty_internal_compile_private_modifier.php @@ -26,13 +26,18 @@ class Smarty_Internal_Compile_Private_Modifier extends Smarty_Internal_CompileBa $this->required_attributes = array('value', 'modifierlist'); // check and get attributes $_attr = $this->_get_attributes($args); - $output = $_attr['value']; + $output = $_attr['value']; // loop over list of modifiers foreach ($_attr['modifierlist'] as $single_modifier) { - $mod_array = preg_split("/(:)(?![^'\"])/", $single_modifier); - $modifier = $mod_array[0]; - $mod_array[0] = $output; - $params = implode(", ", $mod_array); + preg_match_all('/(\'(.+?)\'|\"(.+?)\"|:|[^:]+)/', $single_modifier, $mod_array); + $modifier = $mod_array[0][0]; + $i = 1; + while (isset($mod_array[0][$i])) { + unset($mod_array[0][$i]); + $i = $i + 2; + } + $mod_array[0][0] = $output; + $params = implode(",", $mod_array[0]); // check for registered modifier if (isset($compiler->smarty->registered_plugins['modifier'][$modifier])) { $function = $compiler->smarty->registered_plugins['modifier'][$modifier][0];