API15

JHTMLEmail/cloak

From Joomla! Documentation

< API15:JHTMLEmail
Revision as of 15:47, 13 May 2013 by Tom Hutchison (talk | contribs) (Reverted edits by RochenUser (talk) to last revision by Hutchy68)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The "API15" namespace is an archived namespace. This page contains information for a Joomla! version which is no longer supported. It exists only as a historical reference, it will not be improved and its content may be incomplete and/or contain broken links.

Description[edit]

Simple Javascript email Cloaker

[Edit Descripton]

Template:Description:JHTMLEmail/cloak

Syntax[edit]

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[edit]

libraries/joomla/html/html/email.php

Importing[edit]

jimport( 'joomla.html.html.email' );

Source Body[edit]

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] Template:SeeAlso:JHTMLEmail/cloak

Examples[edit]

<CodeExamplesForm />