changed git call from https to git readonly
[atutor.git] / mods / phpdoc2 / PhpDocumentor / phpDocumentor / Smarty-2.6.0 / libs / plugins / function.mailto.php
1 <?php\r
2 /**\r
3  * Smarty plugin\r
4  * @package Smarty\r
5  * @subpackage plugins\r
6  */\r
7 \r
8 \r
9 /**\r
10  * Smarty {mailto} function plugin\r
11  *\r
12  * Type:     function<br>\r
13  * Name:     mailto<br>\r
14  * Date:     May 21, 2002\r
15  * Purpose:  automate mailto address link creation, and optionally\r
16  *           encode them.<br>\r
17  * Input:<br>\r
18  *         - address = e-mail address\r
19  *         - text = (optional) text to display, default is address\r
20  *         - encode = (optional) can be one of:\r
21  *                * none : no encoding (default)\r
22  *                * javascript : encode with javascript\r
23  *                * hex : encode with hexidecimal (no javascript)\r
24  *         - cc = (optional) address(es) to carbon copy\r
25  *         - bcc = (optional) address(es) to blind carbon copy\r
26  *         - subject = (optional) e-mail subject\r
27  *         - newsgroups = (optional) newsgroup(s) to post to\r
28  *         - followupto = (optional) address(es) to follow up to\r
29  *         - extra = (optional) extra tags for the href link\r
30  * \r
31  * Examples:\r
32  * <pre>\r
33  * {mailto address="me@domain.com"}\r
34  * {mailto address="me@domain.com" encode="javascript"}\r
35  * {mailto address="me@domain.com" encode="hex"}\r
36  * {mailto address="me@domain.com" subject="Hello to you!"}\r
37  * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}\r
38  * {mailto address="me@domain.com" extra='class="mailto"'}\r
39  * </pre>\r
40  * @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto}\r
41  *          (Smarty online manual)\r
42  * @version  1.2\r
43  * @author       Monte Ohrt <monte@ispi.net>\r
44  * @author credits to Jason Sweat (added cc, bcc and subject functionality)\r
45  * @param array\r
46  * @param Smarty\r
47  * @return string\r
48  */\r
49 function smarty_function_mailto($params, &$smarty)\r
50 {\r
51     $extra = '';\r
52     extract($params);\r
53 \r
54     if (empty($address)) {\r
55         $smarty->trigger_error("mailto: missing 'address' parameter");\r
56         return;\r
57     }\r
58         \r
59     if (empty($text)) {\r
60                 $text = $address;\r
61     }\r
62         \r
63         // netscape and mozilla do not decode %40 (@) in BCC field (bug?)\r
64         // so, don't encode it.\r
65         \r
66         $mail_parms = array();\r
67         if (!empty($cc)) {\r
68                 $mail_parms[] = 'cc='.str_replace('%40','@',rawurlencode($cc));\r
69         }\r
70         \r
71         if (!empty($bcc)) {\r
72                 $mail_parms[] = 'bcc='.str_replace('%40','@',rawurlencode($bcc));\r
73         }\r
74         \r
75         if (!empty($subject)) {\r
76                 $mail_parms[] = 'subject='.rawurlencode($subject);\r
77         }\r
78 \r
79         if (!empty($newsgroups)) {\r
80                 $mail_parms[] = 'newsgroups='.rawurlencode($newsgroups);\r
81         }\r
82 \r
83         if (!empty($followupto)) {\r
84                 $mail_parms[] = 'followupto='.str_replace('%40','@',rawurlencode($followupto));\r
85         }\r
86         \r
87     $mail_parm_vals = '';\r
88         for ($i=0; $i<count($mail_parms); $i++) {\r
89                 $mail_parm_vals .= (0==$i) ? '?' : '&';\r
90                 $mail_parm_vals .= $mail_parms[$i];\r
91         }\r
92         $address .= $mail_parm_vals;\r
93         \r
94         if (empty($encode)) {\r
95                 $encode = 'none';\r
96     } elseif (!in_array($encode,array('javascript','hex','none')) ) {\r
97         $smarty->trigger_error("mailto: 'encode' parameter must be none, javascript or hex");\r
98         return;         \r
99         }\r
100         \r
101         if ($encode == 'javascript' ) {\r
102                 $string = 'document.write(\'<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>\');';\r
103                 \r
104                 for ($x=0; $x < strlen($string); $x++) {\r
105                         $js_encode .= '%' . bin2hex($string[$x]);\r
106                 }\r
107         \r
108                 return '<script type="text/javascript" language="javascript">eval(unescape(\''.$js_encode.'\'))</script>';\r
109                 \r
110         } elseif ($encode == 'hex') {\r
111 \r
112                 preg_match('!^(.*)(\?.*)$!',$address,$match);\r
113                 if(!empty($match[2])) {\r
114                 $smarty->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.");\r
115                 return;                                         \r
116                 }  \r
117                 for ($x=0; $x < strlen($address); $x++) {\r
118                         if(preg_match('!\w!',$address[$x])) {\r
119                                 $address_encode .= '%' . bin2hex($address[$x]);\r
120                         } else {\r
121                                 $address_encode .= $address[$x];                                \r
122                         }\r
123                 }\r
124                 for ($x=0; $x < strlen($text); $x++) {\r
125                         $text_encode .= '&#x' . bin2hex($text[$x]).';';\r
126                 }\r
127                 \r
128                 return '<a href="mailto:'.$address_encode.'" '.$extra.'>'.$text_encode.'</a>';\r
129                 \r
130         } else {\r
131                 // no encoding          \r
132                 return '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';\r
133 \r
134         }\r
135         \r
136 }\r
137 \r
138 /* vim: set expandtab: */\r
139 \r
140 ?>\r