git-svn-id: https://192.168.0.254/svn/Proyectos.MatritumCantat_Web/trunk@2 8e3496fd-7892-4c45-be36-0ff06e9dacc6
102 lines
2.7 KiB
PHP
102 lines
2.7 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: mossef.php 4861 2006-08-31 13:55:47Z predator $
|
|
* @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', 'botMosSef' );
|
|
|
|
/**
|
|
* Converting internal relative links to SEF URLs
|
|
*
|
|
* <b>Usage:</b>
|
|
* <code><a href="...relative link..."></code>
|
|
*/
|
|
function botMosSef( $published, &$row, &$params, $page=0 ) {
|
|
global $mosConfig_sef;
|
|
|
|
// check whether mambot has been unpublished
|
|
if ( !$published ) {
|
|
return true;
|
|
}
|
|
|
|
// check whether SEF is off
|
|
if ( !$mosConfig_sef ) {
|
|
return true;
|
|
}
|
|
|
|
// simple performance check to determine whether bot should process further
|
|
if ( strpos( $row->text, 'href="' ) === false ) {
|
|
return true;
|
|
}
|
|
|
|
// define the regular expression for the bot
|
|
$regex = "#href=\"(.*?)\"#s";
|
|
|
|
// perform the replacement
|
|
$row->text = preg_replace_callback( $regex, 'botMosSef_replacer', $row->text );
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Replaces the matched tags
|
|
* @param array An array of matches (see preg_match_all)
|
|
* @return string
|
|
*/
|
|
function botMosSef_replacer( &$matches ) {
|
|
// original text that might be replaced
|
|
$original = 'href="'. $matches[1] .'"';
|
|
|
|
// array list of non http/https URL schemes
|
|
$url_schemes = explode( ', ', _URL_SCHEMES );
|
|
|
|
foreach ( $url_schemes as $url ) {
|
|
// disable bot from being applied to specific URL Scheme tag
|
|
if ( strpos( $matches[1], $url ) !== false ) {
|
|
return $original;
|
|
}
|
|
}
|
|
|
|
if ( strpos( $matches[1], 'index.php?option' ) !== false ) {
|
|
// links containing 'index.php?option
|
|
// convert url to SEF link
|
|
$link = sefRelToAbs( $matches[1] );
|
|
// reconstruct html output
|
|
$replace = 'href="'. $link .'"';
|
|
|
|
return $replace;
|
|
} else if ( strpos( $matches[1], '#' ) === 0 ) {
|
|
// special handling for anchor only links
|
|
$url = $_SERVER['REQUEST_URI'];
|
|
$url = explode( '?option', $url );
|
|
|
|
if (is_array($url) && isset($url[1])) {
|
|
$link = 'index.php?option'. $url[1] ;
|
|
// convert url to SEF link
|
|
$link = sefRelToAbs( $link ) . $matches[1];
|
|
} else {
|
|
$link = $matches[1];
|
|
// convert url to SEF link
|
|
$link = sefRelToAbs( $link );
|
|
}
|
|
// reconstruct html output
|
|
$replace = 'href="'. $link .'"';
|
|
|
|
return $replace;
|
|
} else {
|
|
return $original;
|
|
}
|
|
}
|
|
?>
|
|
|