]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - include/Smarty/plugins/modifier.escape.php
Release 6.5.0
[Github/sugarcrm.git] / include / Smarty / plugins / modifier.escape.php
1 <?php
2
3 /*
4
5 Modification information for LGPL compliance
6
7 r56990 - 2010-06-16 13:05:36 -0700 (Wed, 16 Jun 2010) - kjing - snapshot "Mango" svn branch to a new one for GitHub sync
8
9 r56989 - 2010-06-16 13:01:33 -0700 (Wed, 16 Jun 2010) - kjing - defunt "Mango" svn dev branch before github cutover
10
11 r55980 - 2010-04-19 13:31:28 -0700 (Mon, 19 Apr 2010) - kjing - create Mango (6.1) based on windex
12
13 r52439 - 2009-11-12 17:05:52 -0800 (Thu, 12 Nov 2009) - clee - Updated to allow Rich Text Editor to resize and render HTML content on detailview.
14
15 r51719 - 2009-10-22 10:18:00 -0700 (Thu, 22 Oct 2009) - mitani - Converted to Build 3  tags and updated the build system 
16
17 r51634 - 2009-10-19 13:32:22 -0700 (Mon, 19 Oct 2009) - mitani - Windex is the branch for Sugar Sales 1.0 development
18
19 r50375 - 2009-08-24 18:07:43 -0700 (Mon, 24 Aug 2009) - dwong - branch kobe2 from tokyo r50372
20
21 r42807 - 2008-12-29 11:16:59 -0800 (Mon, 29 Dec 2008) - dwong - Branch from trunk/sugarcrm r42806 to branches/tokyo/sugarcrm
22
23 r10971 - 2006-01-12 14:58:30 -0800 (Thu, 12 Jan 2006) - chris - Bug 4128: updating Smarty templates to 2.6.11, a version supposedly that plays better with PHP 5.1
24
25 r8230 - 2005-10-03 17:47:19 -0700 (Mon, 03 Oct 2005) - majed - Added Sugar_Smarty to the code tree.
26
27
28 */
29
30
31 /**
32  * Smarty plugin
33  * @package Smarty
34  * @subpackage plugins
35  */
36
37
38 /**
39  * Smarty escape modifier plugin
40  *
41  * Type:     modifier<br>
42  * Name:     escape<br>
43  * Purpose:  Escape the string according to escapement type
44  * @link http://smarty.php.net/manual/en/language.modifier.escape.php
45  *          escape (Smarty online manual)
46  * @author   Monte Ohrt <monte at ohrt dot com>
47  * @param string
48  * @param html|htmlall|url|quotes|hex|hexentity|javascript
49  * @return string
50  */
51 function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
52 {
53     switch ($esc_type) {
54         case 'html':
55             return htmlspecialchars($string, ENT_QUOTES, $char_set);
56
57         case 'htmlall':
58             return htmlentities($string, ENT_QUOTES, $char_set);
59
60         case 'htmlentitydecode':
61                 return html_entity_decode($string, ENT_QUOTES, $char_set);      
62             
63         case 'url':
64             return rawurlencode($string);
65
66         case 'urlpathinfo':
67             return str_replace('%2F','/',rawurlencode($string));
68             
69         case 'quotes':
70             // escape unescaped single quotes
71             return preg_replace("%(?<!\\\\)'%", "\\'", $string);
72
73         case 'hex':
74             // escape every character into hex
75             $return = '';
76             for ($x=0; $x < strlen($string); $x++) {
77                 $return .= '%' . bin2hex($string[$x]);
78             }
79             return $return;
80             
81         case 'hexentity':
82             $return = '';
83             for ($x=0; $x < strlen($string); $x++) {
84                 $return .= '&#x' . bin2hex($string[$x]) . ';';
85             }
86             return $return;
87
88         case 'decentity':
89             $return = '';
90             for ($x=0; $x < strlen($string); $x++) {
91                 $return .= '&#' . ord($string[$x]) . ';';
92             }
93             return $return;
94
95         case 'javascript':
96             // escape quotes and backslashes, newlines, etc.
97             return strtr($string, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
98             
99         case 'mail':
100             // safe way to display e-mail address on a web page
101             return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string);
102             
103         case 'nonstd':
104            // escape non-standard chars, such as ms document quotes
105            $_res = '';
106            for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) {
107                $_ord = ord(substr($string, $_i, 1));
108                // non-standard char, escape it
109                if($_ord >= 126){
110                    $_res .= '&#' . $_ord . ';';
111                }
112                else {
113                    $_res .= substr($string, $_i, 1);
114                }
115            }
116            return $_res;
117
118         default:
119             return $string;
120     }
121 }
122
123 /* vim: set expandtab: */
124
125 ?>