addCode (
'mail', // tag name: this will go between square brackets
'callback_replace', // type of action: we'll use a callback function
'plugin_custombbcode_mail', // name of the callback function
array('usecontent_param' => array ('default')), // supported parameters: "default" is [acronym=valore]
'inline', // type of the tag, inline or block, etc
array ('listitem', 'block', 'inline', 'link'), // type of elements in which you can use this tag
array ()); // type of elements where this tag CAN'T go (in this case, none, so it can go everywhere)
$bbcode->setCodeFlag ('mail', 'closetag', BBCODE_CLOSETAG_MUSTEXIST); // a closing tag must exist [/tag]
}
function plugin_custombbcode_mail($action, $attributes, $content, $params, $node_object) {
if ($action == 'validate') {
// not used for now
return true;
}
// the code was specified as follows: [mail]user@example.org[/mail]
if (!isset ($attributes['default'])) {
return "".obfuscateAdress($content, 3)."";
} else {
// else the code was specified as follows: [mail=user@example.org]link text[/url]
return "".$content."";
}
}
// ------------------------------------------------------------------------------
// obfuscate mail adresses
// ------------------------------------------------------------------------------
// Thanks for spam-me-not.php to Rolf Offermanns!
// Spam-me-not in JavaScript: http://www.zapyon.de
function obfuscateAdress($originalString, $mode) {
// $mode == 1 decimal ASCII
// $mode == 2 hexadecimal ASCII
// $mode == 3 decimal/hexadecimal ASCII randomly mixed
$encodedString = "";
$nowCodeString = "";
$randomNumber = -1;
$originalLength = strlen($originalString);
$encodeMode = $mode;
for ( $i = 0; $i < $originalLength; $i++) {
if ($mode == 3) $encodeMode = rand(1,2);
switch ($encodeMode) {
case 1: // Decimal code
$nowCodeString = "" . ord($originalString[$i]) . ";";
break;
case 2: // Hexadecimal code
$nowCodeString = "" . dechex(ord($originalString[$i])) . ";";
break;
default:
return "ERROR: wrong encoding mode.";
}
$encodedString .= $nowCodeString;
}
return $encodedString;
}
?>