Actions

API15

JHTMLEmail/cloak

From Joomla! Documentation

< API15:JHTMLEmail
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

Contents

Description

Simple Javascript email Cloaker

[Edit Descripton]

Description:JHTMLEmail/cloak

Syntax

cloak($mail, $mailto=1, $text='', $email=1, $prefix='mailto:', $suffix='', $attribs='')
Parameter Name Default Value Description
$mail
$mailto 1
$text
$email 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] ."' + '&#64;';";
        $replacement    .= "\n addy". $rand ." = addy". $rand ." + '". implode( "' + '&#46;' + '", $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] ."' + '&#64;' + '". implode( "' + '&#46;' + '", @$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;
}

[Edit See Also] SeeAlso:JHTMLEmail/cloak

Examples

<CodeExamplesForm />