/libraries/joomla/html/html/email.php
PHP | 98 lines | 62 code | 8 blank | 28 comment | 6 complexity | 031323e9f479c17508ed769dac8f4b1a MD5 | raw file
Possible License(s): LGPL-2.1, Apache-2.0
- <?php
- /**
- * @version $Id$
- * @package Joomla.Framework
- * @subpackage HTML
- * @copyright Copyright (C) 2005 - 2010 Open Source Matters, Inc. All rights reserved.
- * @license GNU General Public License version 2 or later; see LICENSE.txt
- */
- /**
- * Utility class for cloaking email adresses
- *
- * @static
- * @package Joomla.Framework
- * @subpackage HTML
- * @since 1.5
- */
- abstract class JHtmlEmail
- {
- /**
- * Simple Javascript email Cloaker
- *
- * By default replaces an email with a mailto link with email cloacked
- */
- public static function cloak($mail, $mailto=1, $text='', $email=1)
- {
- // convert text
- $mail = JHtmlEmail::_convertEncoding($mail);
- // split email by @ symbol
- $mail = explode('@', $mail);
- $mail_parts = explode('.', $mail[1]);
- // random number
- $rand = rand(1, 100000);
- $replacement = "\n <script language='JavaScript' type='text/javascript'>";
- $replacement .= "\n <!--";
- $replacement .= "\n var prefix = 'ma' + 'il' + 'to';";
- $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 ." + '\'>');";
- $replacement .= "\n document.write(addy_text". $rand .");";
- $replacement .= "\n document.write('<\/a>');";
- } else {
- $replacement .= "\n document.write('<a ' + path + '\'' + prefix + ':' + addy". $rand ." + '\'>');";
- $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;
- }
- protected static function _convertEncoding($text)
- {
- // replace vowels with character encoding
- $text = str_replace('a', 'a', $text);
- $text = str_replace('e', 'e', $text);
- $text = str_replace('i', 'i', $text);
- $text = str_replace('o', 'o', $text);
- $text = str_replace('u', 'u', $text);
- return $text;
- }
- }