Extension:EmailObfuscator
From MediaWiki.org
|
Email Obfuscator Release status: stable |
|
|---|---|
| Implementation | Tag |
| Description | This extension obfuscates email addresses by replacing every character with its equivalent ASCII code for HTML. The email address must be within <mail> and </mail>. It parses these tags and converts them to <a href=''></a> tags with the email address along with the 'mailto:' obfuscated to keep spiders from spamming. |
| Version | 1.0 |
| MediaWiki | 1.9.3 |
| Download | Source code |
Contents |
[edit] What can this extension do?
This extension obfuscates email addresses in <mail></mail> tags. It changes individual characters to their ASCII equivalent codes for html so that spiders ignore them.
[edit] Usage
The email address must be specified in this tag format: <mail address='admin@example.com' description='some description'>Some Text</mail>.
[edit] Installation
To install / test the extension kindly add it to the end of your 'LocalSettings.php' file in your MediaWiki installation folder.
[edit] Parameters
[edit] Changes to LocalSettings.php
require_once("/extensions/EmailObfuscator/obfuscate_email.php");
[edit] Code
<?php # Defines the main function to be executed for this extension. $wgExtensionFunctions[] = 'obfuscateEmailAddress'; # Sets the hook to be executed once the parser has stripped HTML tags. $wgHooks['ParserAfterStrip'][] = 'obfuscateEmailAddress'; # This function initiates the hook for the parser to convert <mail></mail> # tags to obfuscated email addresses. function obfuscateEmailAddress() { // Declaring the global parser.. global $wgParser; // Setting the hook to parse <mail></mail> tags from the parser output.. $wgParser->setHook( 'mail', 'startObfuscate' ); } # This function extracts the parameters from the <mail></mail> tags and # the text between the <mail> and </mail> tags and formats them as "<a href=''>" # tags and writes them in the document. function startObfuscate( $input, $argv ) { // Obfuscating the 'mailto:' text.. $email_prefix = textObfuscator('mailto:'); // Fetching the 'address' parameter from the <mail> tag.. $email = $argv['address']; // Fetching the description parameter from the <mail> tag.. $desc = $argv['description']; // Checking for a valid email address.. $email = preg_replace("/([\\w\\d\\.\\_]+@[\\w\\d\\.\\_]+)/e", "textObfuscator('\$1')", $email); // If a description parameter exists.. then obfuscate that too.. if ($desc != '') { // Obfuscate the description since it exists.. $desc = textObfuscator($desc); // If a description parameter exists then print it in the link.. return "<a href=\"" . htmlspecialchars($email_prefix . $email) . "\" description=\"" . htmlspecialchars($desc) . "\">" . htmlspecialchars($input) . "</a>"; } else { // If a description parameter does not exist then just print the link with the 'mailto' URL.. return "<a href=\"" . htmlspecialchars($email_prefix . $email) . "\">" . htmlspecialchars($input) . "</a>"; } } # This function does the actual obfuscation function textObfuscator( $text ) { $output = ""; for( $i=0 ; $i<strlen($text) ; $i++ ){ // Convert each character in the string to its equivalent ASCII code.. $output .= "&#". ord(substr($text, $i, 1)) .";"; } // Return the obfuscated string.. return $output; }
[edit] See also
The script is available for download at the following location:
http://www.esnips.com/doc/9fa9116c-0c00-42f7-aaf4-629fa7e02be3/obfuscate_email
A screenshot of 'before' and 'after' the extension was enabled is available for download at the following location:
http://www.esnips.com/doc/4d2f3e22-27e6-4986-a4d3-17bbf5cd5bdc/obfuscate_email_screenshot

