git-svn-id: https://192.168.0.254/svn/Proyectos.MatritumCantat_Web/trunk@2 8e3496fd-7892-4c45-be36-0ff06e9dacc6
149 lines
5.3 KiB
PHP
149 lines
5.3 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: mosemailcloak.php 4564 2006-08-18 23:26:32Z stingrey $
|
|
* @package Joomla
|
|
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
|
|
* Joomla! is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
* See COPYRIGHT.php for copyright notices and details.
|
|
*/
|
|
|
|
// no direct access
|
|
defined( '_VALID_MOS' ) or die( 'Restricted access' );
|
|
|
|
$_MAMBOTS->registerFunction( 'onPrepareContent', 'botMosEmailCloak' );
|
|
|
|
/**
|
|
* Mambot that Cloaks all emails in content from spambots via javascript
|
|
*/
|
|
function botMosEmailCloak( $published, &$row, &$params, $page=0 ) {
|
|
global $database, $_MAMBOTS;
|
|
|
|
// check whether mambot has been unpublished
|
|
if ( !$published ) {
|
|
return true;
|
|
}
|
|
|
|
// simple performance check to determine whether bot should process further
|
|
if ( strpos( $row->text, '@' ) === false ) {
|
|
return true;
|
|
}
|
|
|
|
// simple check to allow disabling of bot
|
|
$regex = '{emailcloak=off}';
|
|
if ( strpos( $row->text, $regex ) !== false ) {
|
|
$row->text = str_replace( $regex, '', $row->text );
|
|
return true;
|
|
}
|
|
|
|
// check if param query has previously been processed
|
|
if ( !isset($_MAMBOTS->_content_mambot_params['mosemailcloak']) ) {
|
|
// load mambot params info
|
|
$query = "SELECT params"
|
|
. "\n FROM #__mambots"
|
|
. "\n WHERE element = 'mosemailcloak'"
|
|
. "\n AND folder = 'content'"
|
|
;
|
|
$database->setQuery( $query );
|
|
$database->loadObject($mambot);
|
|
|
|
// save query to class variable
|
|
$_MAMBOTS->_content_mambot_params['mosemailcloak'] = $mambot;
|
|
}
|
|
|
|
// pull query data from class variable
|
|
$mambot = $_MAMBOTS->_content_mambot_params['mosemailcloak'];
|
|
|
|
$botParams = new mosParameters( $mambot->params );
|
|
$mode = $botParams->def( 'mode', 1 );
|
|
|
|
// any@email.address.com
|
|
$search_email = "([[:alnum:]_\.\-]+)(\@[[:alnum:]\.\-]+\.+)([[:alnum:]\.\-]+)";
|
|
// any@email.address.com?subject=anyText
|
|
$search_email_msg = "([[:alnum:]_\.\-]+)(\@[[:alnum:]\.\-]+\.+)([[:alnum:]\.\-]+)([[:alnum:][:space:][:punct:]][^\"<>]+)";
|
|
// anyText
|
|
$search_text = "([[:alnum:][:space:][:punct:]][^<>]+)";
|
|
|
|
// search for derivativs of link code <a href="mailto:email@amail.com">email@amail.com</a>
|
|
$pattern = botMosEmailCloak_searchPattern( $search_email, $search_email );
|
|
while( eregi( $pattern, $row->text, $regs ) ) {
|
|
$mail = $regs[2] . $regs[3] . $regs[4];
|
|
$mail_text = $regs[5] . $regs[6] . $regs[7];
|
|
|
|
// check to see if mail text is different from mail addy
|
|
if ( $mail_text ) {
|
|
$replacement = mosHTML::emailCloaking( $mail, $mode, $mail_text );
|
|
} else {
|
|
$replacement = mosHTML::emailCloaking( $mail, $mode );
|
|
}
|
|
|
|
// replace the found address with the js cloacked email
|
|
$row->text = str_replace( $regs[0], $replacement, $row->text );
|
|
}
|
|
|
|
// search for derivativs of link code <a href="mailto:email@amail.com">anytext</a>
|
|
$pattern = botMosEmailCloak_searchPattern( $search_email, $search_text );
|
|
while( eregi( $pattern, $row->text, $regs ) ) {
|
|
$mail = $regs[2] . $regs[3] . $regs[4];
|
|
$mail_text = $regs[5];
|
|
|
|
$replacement = mosHTML::emailCloaking( $mail, $mode, $mail_text, 0 );
|
|
|
|
// replace the found address with the js cloacked email
|
|
$row->text = str_replace( $regs[0], $replacement, $row->text );
|
|
}
|
|
|
|
// search for derivativs of link code <a href="mailto:email@amail.com?subject=Text&body=Text">email@amail.com</a>
|
|
$pattern = botMosEmailCloak_searchPattern( $search_email_msg, $search_email );
|
|
while( eregi( $pattern, $row->text, $regs ) ) {
|
|
$mail = $regs[2] . $regs[3] . $regs[4] . $regs[5];
|
|
$mail_text = $regs[6] . $regs[7]. $regs[8];
|
|
//needed for handling of Body parameter
|
|
$mail = str_replace( '&', '&', $mail );
|
|
|
|
// check to see if mail text is different from mail addy
|
|
if ( $mail_text ) {
|
|
$replacement = mosHTML::emailCloaking( $mail, $mode, $mail_text );
|
|
} else {
|
|
$replacement = mosHTML::emailCloaking( $mail, $mode );
|
|
}
|
|
|
|
// replace the found address with the js cloacked email
|
|
$row->text = str_replace( $regs[0], $replacement, $row->text );
|
|
}
|
|
|
|
// search for derivativs of link code <a href="mailto:email@amail.com?subject=Text&body=Text">anytext</a>
|
|
$pattern = botMosEmailCloak_searchPattern( $search_email_msg, $search_text );
|
|
while( eregi( $pattern, $row->text, $regs ) ) {
|
|
$mail = $regs[2] . $regs[3] . $regs[4] . $regs[5];
|
|
$mail_text = $regs[6];
|
|
//needed for handling of Body parameter
|
|
$mail = str_replace( '&', '&', $mail );
|
|
|
|
$replacement = mosHTML::emailCloaking( $mail, $mode, $mail_text, 0 );
|
|
|
|
// replace the found address with the js cloacked email
|
|
$row->text = str_replace( $regs[0], $replacement, $row->text );
|
|
}
|
|
|
|
// search for plain text email@amail.com
|
|
while( eregi( $search_email, $row->text, $regs ) ) {
|
|
$mail = $regs[0];
|
|
|
|
$replacement = mosHTML::emailCloaking( $mail, $mode );
|
|
|
|
// replace the found address with the js cloacked email
|
|
$row->text = str_replace( $regs[0], $replacement, $row->text );
|
|
}
|
|
}
|
|
|
|
function botMosEmailCloak_searchPattern ( $link, $text ) {
|
|
// <a href="mailto:anyLink">anyText</a>
|
|
$pattern = "(<a [[:alnum:] _\"\'=\@\.\-]*href=[\"\']mailto:". $link ."[\"\'][[:alnum:] _\"\'=\@\.\-]*)>". $text ."</a>";
|
|
|
|
return $pattern;
|
|
}
|
|
?>
|