- bugfix when cascading some modifier like |strip|strip_tags modifier

This commit is contained in:
Uwe.Tews
2010-08-06 13:43:52 +00:00
parent 09dfffd2a0
commit cf231447d2
4 changed files with 9 additions and 6 deletions

View File

@@ -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

View File

@@ -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]})";
}
?>

View File

@@ -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] . ')';
}

View File

@@ -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')) {