API15:JHTMLEmail/cloak
From Joomla! Documentation
Description
Simple Javascript email Cloaker
Syntax
cloak($mail, $mailto=1, $text='', $email=1, $prefix='mailto:', $suffix='', $attribs='')
| Parameter Name | Default Value | Description |
|---|---|---|
| $mailto | 1 | |
| $text | ||
| 1 | ||
| $prefix | 'mailto:' | |
| $suffix | ||
| $attribs |
Defined in
libraries/joomla/html/html/email.php
Importing
jimport( 'joomla.html.html.email' );
Source Body
function cloak( $mail, $mailto=1, $text='', $email=1, $prefix='mailto:', $suffix='', $attribs='' )
{
// convert text
$mail = JHTMLEmail::_convertEncoding( $mail );
// split email by @ symbol
$mail = explode( '@', $mail );
$mail_parts = explode( '.', $mail[1] );
// random number
$rand = rand( 1, 100000 );
// obfuscate prefix
$prefix = JHTMLEmail::_convertEncoding( $prefix );
$replacement = "\n <script language='JavaScript' type='text/javascript'>";
$replacement .= "\n <!--";
$replacement .= "\n var prefix = '$prefix';";
$replacement .= "\n var suffix = '$suffix';";
$replacement .= "\n var attribs = '$attribs';";
$replacement .= "\n var path = 'hr' + 'ef' + '=';";
$replacement .= "\n var addy". $rand ." = '". @$mail[0] ."' + '@';";
$replacement .= "\n addy". $rand ." = addy". $rand ." + '". implode( "' + '.' + '", $mail_parts ) ."';";
if ( $mailto ) {
// special handling when mail text is different from mail addy
if ( $text ) {
if ( $email ) {
// convert text
$text = JHTMLEmail::_convertEncoding( $text );
// split email by @ symbol
$text = explode( '@', $text );
$text_parts = explode( '.', $text[1] );
$replacement .= "\n var addy_text". $rand ." = '". @$text[0] ."' + '@' + '". implode( "' + '.' + '", @$text_parts ) ."';";
} else {
$replacement .= "\n var addy_text". $rand ." = '". $text ."';";
}
$replacement .= "\n document.write( '<a ' + path + '\'' + prefix + addy". $rand ." + suffix + '\'' + attribs + '>' );";
$replacement .= "\n document.write( addy_text". $rand ." );";
$replacement .= "\n document.write( '<\/a>' );";
} else {
$replacement .= "\n document.write( '<a ' + path + '\'' + prefix + addy". $rand ." + suffix + '\'' + attribs + '>' );";
$replacement .= "\n document.write( addy". $rand ." );";
$replacement .= "\n document.write( '<\/a>' );";
}
} else {
$replacement .= "\n document.write( addy". $rand ." );";
}
$replacement .= "\n //-->";
$replacement .= "\n </script> ";
// XHTML compliance `No Javascript` text handling
$replacement .= "<script language='JavaScript' type='text/javascript'>";
$replacement .= "\n <!--";
$replacement .= "\n document.write( '<span style=\'display: none;\'>' );";
$replacement .= "\n //-->";
$replacement .= "\n </script>";
$replacement .= JText::_('CLOAKING');
$replacement .= "\n <script language='JavaScript' type='text/javascript'>";
$replacement .= "\n <!--";
$replacement .= "\n document.write( '</' );";
$replacement .= "\n document.write( 'span>' );";
$replacement .= "\n //-->";
$replacement .= "\n </script>";
return $replacement;
}
Examples
Code Examples