Code

Removed smarty packages from references
[gosa.git] / gosa-core / include / smarty / plugins / modifier.escape.php
1 <?php
2 /**
3  * Smarty plugin
4  *
5  * @package Smarty
6  * @subpackage PluginsModifier
7  */
9 /**
10  * Smarty escape modifier plugin
11  *
12  * Type:     modifier<br>
13  * Name:     escape<br>
14  * Purpose:  escape string for output
15  *
16  * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
17  * @author Monte Ohrt <monte at ohrt dot com>
18  * @param string  $string        input string
19  * @param string  $esc_type      escape type
20  * @param string  $char_set      character set, used for htmlspecialchars() or htmlentities()
21  * @param boolean $double_encode encode already encoded entitites again, used for htmlspecialchars() or htmlentities()
22  * @return string escaped input string
23  */
24 function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
25 {
26     if (!$char_set) {
27         $char_set = SMARTY_RESOURCE_CHAR_SET;
28     }
30     switch ($esc_type) {
31         case 'html':
32             return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
34         case 'htmlall':
35             if (SMARTY_MBSTRING /* ^phpunit */ && empty($_SERVER['SMARTY_PHPUNIT_DISABLE_MBSTRING'])/* phpunit$ */) {
36                 // mb_convert_encoding ignores htmlspecialchars()
37                 $string = htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);
38                 // htmlentities() won't convert everything, so use mb_convert_encoding
39                 return mb_convert_encoding($string, 'HTML-ENTITIES', $char_set);
40             }
42             // no MBString fallback
43             return htmlentities($string, ENT_QUOTES, $char_set, $double_encode);
45         case 'url':
46             return rawurlencode($string);
48         case 'urlpathinfo':
49             return str_replace('%2F', '/', rawurlencode($string));
51         case 'quotes':
52             // escape unescaped single quotes
53             return preg_replace("%(?<!\\\\)'%", "\\'", $string);
55         case 'hex':
56             // escape every byte into hex
57             // Note that the UTF-8 encoded character รค will be represented as %c3%a4
58             $return = '';
59             $_length = strlen($string);
60             for ($x = 0; $x < $_length; $x++) {
61                 $return .= '%' . bin2hex($string[$x]);
62             }
63             return $return;
65         case 'hexentity':
66             $return = '';
67             if (SMARTY_MBSTRING /* ^phpunit */ && empty($_SERVER['SMARTY_PHPUNIT_DISABLE_MBSTRING'])/* phpunit$ */) {
68                 require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
69                 $return = '';
70                 foreach (smarty_mb_to_unicode($string, SMARTY_RESOURCE_CHAR_SET) as $unicode) {
71                     $return .= '&#x' . strtoupper(dechex($unicode)) . ';';
72                 }
73                 return $return;
74             }
75             // no MBString fallback
76             $_length = strlen($string);
77             for ($x = 0; $x < $_length; $x++) {
78                 $return .= '&#x' . bin2hex($string[$x]) . ';';
79             }
80             return $return;
82         case 'decentity':
83             $return = '';
84             if (SMARTY_MBSTRING /* ^phpunit */ && empty($_SERVER['SMARTY_PHPUNIT_DISABLE_MBSTRING'])/* phpunit$ */) {
85                 require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
86                 $return = '';
87                 foreach (smarty_mb_to_unicode($string, SMARTY_RESOURCE_CHAR_SET) as $unicode) {
88                     $return .= '&#' . $unicode . ';';
89                 }
90                 return $return;
91             }
92             // no MBString fallback
93             $_length = strlen($string);
94             for ($x = 0; $x < $_length; $x++) {
95                 $return .= '&#' . ord($string[$x]) . ';';
96             }
97             return $return;
99         case 'javascript':
100             // escape quotes and backslashes, newlines, etc.
101             return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/'));
103         case 'mail':
104             if (SMARTY_MBSTRING /* ^phpunit */ && empty($_SERVER['SMARTY_PHPUNIT_DISABLE_MBSTRING'])/* phpunit$ */) {
105                 require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
106                 return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
107             }
108             // no MBString fallback
109             return str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
111         case 'nonstd':
112             // escape non-standard chars, such as ms document quotes
113             $return = '';
114             if (SMARTY_MBSTRING /* ^phpunit */ && empty($_SERVER['SMARTY_PHPUNIT_DISABLE_MBSTRING'])/* phpunit$ */) {
115                 require_once(SMARTY_PLUGINS_DIR . 'shared.mb_unicode.php');
116                 foreach (smarty_mb_to_unicode($string, SMARTY_RESOURCE_CHAR_SET) as $unicode) {
117                     if ($unicode >= 126) {
118                         $return .= '&#' . $unicode . ';';
119                     } else {
120                         $return .= chr($unicode);
121                     }
122                 }
123                 return $return;
124             }
126             $_length = strlen($string);
127             for ($_i = 0; $_i < $_length; $_i++) {
128                 $_ord = ord(substr($string, $_i, 1));
129                 // non-standard char, escape it
130                 if ($_ord >= 126) {
131                     $return .= '&#' . $_ord . ';';
132                 } else {
133                     $return .= substr($string, $_i, 1);
134                 }
135             }
136             return $return;
138         default:
139             return $string;
140     }
143 ?>