diff options
Diffstat (limited to 'lib/smarty3/plugins/modifiercompiler.unescape.php')
-rw-r--r-- | lib/smarty3/plugins/modifiercompiler.unescape.php | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/lib/smarty3/plugins/modifiercompiler.unescape.php b/lib/smarty3/plugins/modifiercompiler.unescape.php new file mode 100644 index 0000000..a3409bc --- /dev/null +++ b/lib/smarty3/plugins/modifiercompiler.unescape.php @@ -0,0 +1,50 @@ +<?php +/** + * Smarty plugin + * + * @package Smarty + * @subpackage PluginsModifierCompiler + */ + +/** + * Smarty unescape modifier plugin + * Type: modifier<br> + * Name: unescape<br> + * Purpose: unescape html entities + * + * @author Rodney Rehm + * + * @param array $params parameters + * + * @return string with compiled code + */ +function smarty_modifiercompiler_unescape($params) +{ + if (!isset($params[ 1 ])) { + $params[ 1 ] = 'html'; + } + if (!isset($params[ 2 ])) { + $params[ 2 ] = '\'' . addslashes(Smarty::$_CHARSET) . '\''; + } else { + $params[ 2 ] = "'" . $params[ 2 ] . "'"; + } + + switch (trim($params[ 1 ], '"\'')) { + case 'entity': + case 'htmlall': + if (Smarty::$_MBSTRING) { + return 'mb_convert_encoding(' . $params[ 0 ] . ', ' . $params[ 2 ] . ', \'HTML-ENTITIES\')'; + } + + return 'html_entity_decode(' . $params[ 0 ] . ', ENT_NOQUOTES, ' . $params[ 2 ] . ')'; + + case 'html': + return 'htmlspecialchars_decode(' . $params[ 0 ] . ', ENT_QUOTES)'; + + case 'url': + return 'rawurldecode(' . $params[ 0 ] . ')'; + + default: + return $params[ 0 ]; + } +} |