Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F886195
function.mailto.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
function.mailto.php
View Options
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsFunction
*/
/**
* Smarty {mailto} function plugin
*
* Type: function<br>
* Name: mailto<br>
* Date: May 21, 2002
* Purpose: automate mailto address link creation, and optionally
* encode them.<br>
*
* Examples:
* <pre>
* {mailto address="me@domain.com"}
* {mailto address="me@domain.com" encode="javascript"}
* {mailto address="me@domain.com" encode="hex"}
* {mailto address="me@domain.com" subject="Hello to you!"}
* {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
* {mailto address="me@domain.com" extra='class="mailto"'}
* </pre>
*
* @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto}
(Smarty online manual)
* @version 1.2
* @author Monte Ohrt <monte at ohrt dot com>
* @author credits to Jason Sweat (added cc, bcc and subject functionality)
* @param array $params parameters
* Input:<br>
* - address = e-mail address
* - text = (optional) text to display, default is address
* - encode = (optional) can be one of:
* * none : no encoding (default)
* * javascript : encode with javascript
* * javascript_charcode : encode with javascript charcode
* * hex : encode with hexidecimal (no javascript)
* - cc = (optional) address(es) to carbon copy
* - bcc = (optional) address(es) to blind carbon copy
* - subject = (optional) e-mail subject
* - newsgroups = (optional) newsgroup(s) to post to
* - followupto = (optional) address(es) to follow up to
* - extra = (optional) extra tags for the href link
* @param object $smarty Smarty object
* @param object $template template object
* @return string
*/
function
smarty_function_mailto
(
$params
,
$smarty
,
$template
)
{
$extra
=
''
;
if
(
empty
(
$params
[
'address'
]))
{
throw
new
Exception
(
"mailto: missing 'address' parameter"
);
return
;
}
else
{
$address
=
$params
[
'address'
];
}
$text
=
$address
;
// netscape and mozilla do not decode %40 (@) in BCC field (bug?)
// so, don't encode it.
$search
=
array
(
'%40'
,
'%2C'
);
$replace
=
array
(
'@'
,
','
);
$mail_parms
=
array
();
foreach
(
$params
as
$var
=>
$value
)
{
switch
(
$var
)
{
case
'cc'
:
case
'bcc'
:
case
'followupto'
:
if
(!
empty
(
$value
))
$mail_parms
[]
=
$var
.
'='
.
str_replace
(
$search
,
$replace
,
rawurlencode
(
$value
));
break
;
case
'subject'
:
case
'newsgroups'
:
$mail_parms
[]
=
$var
.
'='
.
rawurlencode
(
$value
);
break
;
case
'extra'
:
case
'text'
:
$$var
=
$value
;
default
:
}
}
$mail_parm_vals
=
''
;
for
(
$i
=
0
;
$i
<
count
(
$mail_parms
);
$i
++)
{
$mail_parm_vals
.=
(
0
==
$i
)
?
'?'
:
'&'
;
$mail_parm_vals
.=
$mail_parms
[
$i
];
}
$address
.=
$mail_parm_vals
;
$encode
=
(
empty
(
$params
[
'encode'
]))
?
'none'
:
$params
[
'encode'
];
if
(!
in_array
(
$encode
,
array
(
'javascript'
,
'javascript_charcode'
,
'hex'
,
'none'
)))
{
throw
new
Exception
(
"mailto: 'encode' parameter must be none, javascript or hex"
);
return
;
}
if
(
$encode
==
'javascript'
)
{
$string
=
'document.write(
\'
<a href="mailto:'
.
$address
.
'" '
.
$extra
.
'>'
.
$text
.
'</a>
\'
);'
;
$js_encode
=
''
;
for
(
$x
=
0
;
$x
<
strlen
(
$string
);
$x
++)
{
$js_encode
.=
'%'
.
bin2hex
(
$string
[
$x
]);
}
return
'<script type="text/javascript">eval(unescape(
\'
'
.
$js_encode
.
'
\'
))</script>'
;
}
elseif
(
$encode
==
'javascript_charcode'
)
{
$string
=
'<a href="mailto:'
.
$address
.
'" '
.
$extra
.
'>'
.
$text
.
'</a>'
;
for
(
$x
=
0
,
$y
=
strlen
(
$string
);
$x
<
$y
;
$x
++)
{
$ord
[]
=
ord
(
$string
[
$x
]);
}
$_ret
=
"<script type=
\"
text/javascript
\"
language=
\"
javascript
\"
>
\n
"
;
$_ret
.=
"<!--
\n
"
;
$_ret
.=
"{document.write(String.fromCharCode("
;
$_ret
.=
implode
(
','
,
$ord
);
$_ret
.=
"))"
;
$_ret
.=
"}
\n
"
;
$_ret
.=
"//-->
\n
"
;
$_ret
.=
"</script>
\n
"
;
return
$_ret
;
}
elseif
(
$encode
==
'hex'
)
{
preg_match
(
'!^(.*)(
\?
.*)$!'
,
$address
,
$match
);
if
(!
empty
(
$match
[
2
]))
{
throw
new
Exception
(
"mailto: hex encoding does not work with extra attributes. Try javascript."
);
return
;
}
$address_encode
=
''
;
for
(
$x
=
0
;
$x
<
strlen
(
$address
);
$x
++)
{
if
(
preg_match
(
'!
\w
!'
,
$address
[
$x
]))
{
$address_encode
.=
'%'
.
bin2hex
(
$address
[
$x
]);
}
else
{
$address_encode
.=
$address
[
$x
];
}
}
$text_encode
=
''
;
for
(
$x
=
0
;
$x
<
strlen
(
$text
);
$x
++)
{
$text_encode
.=
'&#x'
.
bin2hex
(
$text
[
$x
])
.
';'
;
}
$mailto
=
"mailto:"
;
return
'<a href="'
.
$mailto
.
$address_encode
.
'" '
.
$extra
.
'>'
.
$text_encode
.
'</a>'
;
}
else
{
// no encoding
return
'<a href="mailto:'
.
$address
.
'" '
.
$extra
.
'>'
.
$text
.
'</a>'
;
}
}
?>
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sun, Apr 6, 23:24 (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25504
Default Alt Text
function.mailto.php (5 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment