mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-26 17:29:21 +02:00
118 lines
3.4 KiB
PHP
118 lines
3.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Outputs a mailto link with optional spam-proof (okay probably not) encoding
|
|
* <pre>
|
|
* * address : target email address
|
|
* * text : display text to show for the link, defaults to the address if not provided
|
|
* * subject : the email subject
|
|
* * encode : one of the available encoding (none, js, jscharcode or hex)
|
|
* * cc : address(es) to carbon copy, comma separated
|
|
* * bcc : address(es) to blind carbon copy, comma separated
|
|
* * newsgroups : newsgroup(s) to post to, comma separated
|
|
* * followupto : address(es) to follow up, comma separated
|
|
* * extra : additional attributes to add to the <a> tag
|
|
* </pre>
|
|
* This software is provided 'as-is', without any express or implied warranty.
|
|
* In no event will the authors be held liable for any damages arising from the use of this software.
|
|
*
|
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
|
* @copyright Copyright (c) 2008, Jordi Boggiano
|
|
* @license http://dwoo.org/LICENSE Modified BSD License
|
|
* @link http://dwoo.org/
|
|
* @version 1.1.0
|
|
* @date 2009-07-18
|
|
* @package Dwoo
|
|
*/
|
|
function Dwoo_Plugin_mailto(Dwoo $dwoo, $address, $text=null, $subject=null, $encode=null, $cc=null, $bcc=null, $newsgroups=null, $followupto=null, $extra=null)
|
|
{
|
|
if (empty($address)) {
|
|
return '';
|
|
}
|
|
if (empty($text)) {
|
|
$text = $address;
|
|
}
|
|
|
|
// build address string
|
|
$address .= '?';
|
|
|
|
if (!empty($subject)) {
|
|
$address .= 'subject='.rawurlencode($subject).'&';
|
|
}
|
|
if (!empty($cc)) {
|
|
$address .= 'cc='.rawurlencode($cc).'&';
|
|
}
|
|
if (!empty($bcc)) {
|
|
$address .= 'bcc='.rawurlencode($bcc).'&';
|
|
}
|
|
if (!empty($newsgroups)) {
|
|
$address .= 'newsgroups='.rawurlencode($newsgroups).'&';
|
|
}
|
|
if (!empty($followupto)) {
|
|
$address .= 'followupto='.rawurlencode($followupto).'&';
|
|
}
|
|
|
|
$address = rtrim($address, '?&');
|
|
|
|
// output
|
|
switch($encode)
|
|
{
|
|
|
|
case 'none':
|
|
case null:
|
|
return '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';
|
|
|
|
case 'js':
|
|
case 'javascript':
|
|
$str = 'document.write(\'<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>\');';
|
|
$len = strlen($str);
|
|
|
|
$out = '';
|
|
for ($i=0; $i<$len; $i++) {
|
|
$out .= '%'.bin2hex($str[$i]);
|
|
}
|
|
return '<script type="text/javascript">eval(unescape(\''.$out.'\'));</script>';
|
|
|
|
break;
|
|
case 'javascript_charcode':
|
|
case 'js_charcode':
|
|
case 'jscharcode':
|
|
case 'jschar':
|
|
$str = '<a href="mailto:'.$address.'" '.$extra.'>'.$text.'</a>';
|
|
$len = strlen($str);
|
|
|
|
$out = '<script type="text/javascript">'."\n<!--\ndocument.write(String.fromCharCode(";
|
|
for ($i=0; $i<$len; $i++) {
|
|
$out .= ord($str[$i]).',';
|
|
}
|
|
return rtrim($out, ',') . "));\n-->\n</script>\n";
|
|
|
|
break;
|
|
|
|
case 'hex':
|
|
if (strpos($address, '?') !== false) {
|
|
return $dwoo->triggerError('Mailto: Hex encoding is not possible with extra attributes, use one of : <em>js, jscharcode or none</em>.', E_USER_WARNING);
|
|
}
|
|
|
|
$out = '<a href="mailto:';
|
|
$len = strlen($address);
|
|
for ($i=0; $i<$len; $i++) {
|
|
if (preg_match('#\w#', $address[$i])) {
|
|
$out .= '%'.bin2hex($address[$i]);
|
|
} else {
|
|
$out .= $address[$i];
|
|
}
|
|
}
|
|
$out .= '" '.$extra.'>';
|
|
$len = strlen($text);
|
|
for ($i=0; $i<$len; $i++) {
|
|
$out .= '&#x'.bin2hex($text[$i]);
|
|
}
|
|
return $out.'</a>';
|
|
|
|
default:
|
|
return $dwoo->triggerError('Mailto: <em>encode</em> argument is invalid, it must be one of : <em>none (= no value), js, js_charcode or hex</em>', E_USER_WARNING);
|
|
|
|
}
|
|
}
|