git-svn-id: https://192.168.0.254/svn/Proyectos.MatritumCantat_Web/trunk@2 8e3496fd-7892-4c45-be36-0ff06e9dacc6
254 lines
6.9 KiB
PHP
254 lines
6.9 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: mosimage.php 5941 2006-12-06 12:43:29Z 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', 'botMosImage' );
|
|
|
|
/**
|
|
*/
|
|
function botMosImage( $published, &$row, &$params, $page=0 ) {
|
|
global $database, $_MAMBOTS;
|
|
|
|
// simple performance check to determine whether bot should process further
|
|
if ( strpos( $row->text, 'mosimage' ) === false ) {
|
|
return true;
|
|
}
|
|
|
|
// expression to search for
|
|
$regex = '/{mosimage\s*.*?}/i';
|
|
|
|
// check whether mosimage has been disabled for page
|
|
// check whether mambot has been unpublished
|
|
if (!$published || !$params->get( 'image' )) {
|
|
$row->text = preg_replace( $regex, '', $row->text );
|
|
return true;
|
|
}
|
|
|
|
//count how many {mosimage} are in introtext if it is set to hidden.
|
|
$introCount=0;
|
|
if ( ! $params->get( 'introtext' ) & ! $params->get( 'intro_only') )
|
|
{
|
|
preg_match_all( $regex, $row->introtext, $matches );
|
|
$introCount = count ( $matches[0] );
|
|
}
|
|
|
|
// find all instances of mambot and put in $matches
|
|
preg_match_all( $regex, $row->text, $matches );
|
|
|
|
// Number of mambots
|
|
$count = count( $matches[0] );
|
|
|
|
// mambot only processes if there are any instances of the mambot in the text
|
|
if ( $count ) {
|
|
// check if param query has previously been processed
|
|
if ( !isset($_MAMBOTS->_content_mambot_params['mosimage']) ) {
|
|
// load mambot params info
|
|
$query = "SELECT params"
|
|
. "\n FROM #__mambots"
|
|
. "\n WHERE element = 'mosimage'"
|
|
. "\n AND folder = 'content'"
|
|
;
|
|
$database->setQuery( $query );
|
|
$database->loadObject($mambot);
|
|
|
|
// save query to class variable
|
|
$_MAMBOTS->_content_mambot_params['mosimage'] = $mambot;
|
|
}
|
|
|
|
// pull query data from class variable
|
|
$mambot = $_MAMBOTS->_content_mambot_params['mosimage'];
|
|
|
|
$botParams = new mosParameters( $mambot->params );
|
|
|
|
$botParams->def( 'padding' );
|
|
$botParams->def( 'margin' );
|
|
$botParams->def( 'link', 0 );
|
|
|
|
$images = processImages( $row, $botParams, $introCount );
|
|
|
|
// store some vars in globals to access from the replacer
|
|
$GLOBALS['botMosImageCount'] = 0;
|
|
$GLOBALS['botMosImageParams'] =& $botParams;
|
|
$GLOBALS['botMosImageArray'] =& $images;
|
|
//$GLOBALS['botMosImageArray'] =& $combine;
|
|
|
|
// perform the replacement
|
|
$row->text = preg_replace_callback( $regex, 'botMosImage_replacer', $row->text );
|
|
|
|
// clean up globals
|
|
unset( $GLOBALS['botMosImageCount'] );
|
|
unset( $GLOBALS['botMosImageMask'] );
|
|
unset( $GLOBALS['botMosImageArray'] );
|
|
unset( $GLOBALS['botJosIntroCount'] );
|
|
return true;
|
|
}
|
|
}
|
|
|
|
function processImages ( &$row, &$params, &$introCount ) {
|
|
global $mosConfig_absolute_path, $mosConfig_live_site;
|
|
|
|
$images = array();
|
|
|
|
// split on \n the images fields into an array
|
|
$row->images = explode( "\n", $row->images );
|
|
$total = count( $row->images );
|
|
|
|
$start = $introCount;
|
|
for ( $i = $start; $i < $total; $i++ ) {
|
|
$img = trim( $row->images[$i] );
|
|
|
|
// split on pipe the attributes of the image
|
|
if ( $img ) {
|
|
$attrib = explode( '|', trim( $img ) );
|
|
// $attrib[0] image name and path from /images/stories
|
|
|
|
// $attrib[1] alignment
|
|
if ( !isset($attrib[1]) || !$attrib[1] ) {
|
|
$attrib[1] = '';
|
|
}
|
|
|
|
// $attrib[2] alt & title
|
|
if ( !isset($attrib[2]) || !$attrib[2] ) {
|
|
$attrib[2] = 'Image';
|
|
} else {
|
|
$attrib[2] = htmlspecialchars( $attrib[2] );
|
|
}
|
|
|
|
// $attrib[3] border
|
|
if ( !isset($attrib[3]) || !$attrib[3] ) {
|
|
$attrib[3] = 0;
|
|
}
|
|
|
|
// $attrib[4] caption
|
|
if ( !isset($attrib[4]) || !$attrib[4] ) {
|
|
$attrib[4] = '';
|
|
$border = $attrib[3];
|
|
} else {
|
|
$border = 0;
|
|
}
|
|
|
|
// $attrib[5] caption position
|
|
if ( !isset($attrib[5]) || !$attrib[5] ) {
|
|
$attrib[5] = '';
|
|
}
|
|
|
|
// $attrib[6] caption alignment
|
|
if ( !isset($attrib[6]) || !$attrib[6] ) {
|
|
$attrib[6] = '';
|
|
}
|
|
|
|
// $attrib[7] width
|
|
if ( !isset($attrib[7]) || !$attrib[7] ) {
|
|
$attrib[7] = '';
|
|
$width = '';
|
|
} else {
|
|
$width = ' width: '. $attrib[7] .'px;';
|
|
}
|
|
|
|
// image size attibutes
|
|
$size = '';
|
|
if ( function_exists( 'getimagesize' ) ) {
|
|
$size = @getimagesize( $mosConfig_absolute_path .'/images/stories/'. $attrib[0] );
|
|
if (is_array( $size )) {
|
|
$size = ' width="'. $size[0] .'" height="'. $size[1] .'"';
|
|
}
|
|
}
|
|
|
|
// assemble the <image> tag
|
|
$image = '<img src="'. $mosConfig_live_site .'/images/stories/'. $attrib[0] .'"'. $size;
|
|
// no aligment variable - if caption detected
|
|
if ( !$attrib[4] ) {
|
|
if ($attrib[1] == 'left' OR $attrib[1] == 'right') {
|
|
$image .= ' style="float: '. $attrib[1] .';"';
|
|
} else {
|
|
$image .= $attrib[1] ? ' align="middle"' : '';
|
|
}
|
|
}
|
|
$image .=' hspace="6" alt="'. $attrib[2] .'" title="'. $attrib[2] .'" border="'. $border .'" />';
|
|
|
|
// assemble caption - if caption detected
|
|
$caption = '';
|
|
if ( $attrib[4] ) {
|
|
$caption = '<div class="mosimage_caption"';
|
|
if ( $attrib[6] ) {
|
|
$caption .= ' style="text-align: '. $attrib[6] .';"';
|
|
$caption .= ' align="'. $attrib[6] .'"';
|
|
}
|
|
$caption .= '>';
|
|
$caption .= $attrib[4];
|
|
$caption .= '</div>';
|
|
}
|
|
|
|
// final output
|
|
if ( $attrib[4] ) {
|
|
// initialize variables
|
|
$margin = '';
|
|
$padding = '';
|
|
$float = '';
|
|
$border_width = '';
|
|
$style = '';
|
|
if ( $params->def( 'margin' ) ) {
|
|
$margin = ' margin: '. $params->def( 'margin' ).'px;';
|
|
}
|
|
if ( $params->def( 'padding' ) ) {
|
|
$padding = ' padding: '. $params->def( 'padding' ).'px;';
|
|
}
|
|
if ( $attrib[1] ) {
|
|
$float = ' float: '. $attrib[1] .';';
|
|
}
|
|
if ( $attrib[3] ) {
|
|
$border_width = ' border-width: '. $attrib[3] .'px;';
|
|
}
|
|
|
|
if ( $params->def( 'margin' ) || $params->def( 'padding' ) || $attrib[1] || $attrib[3] ) {
|
|
$style = ' style="'. $border_width . $float . $margin . $padding . $width .'"';
|
|
}
|
|
|
|
$img = '<div class="mosimage" '. $style .' align="center">';
|
|
|
|
// display caption in top position
|
|
if ( $attrib[5] == 'top' && $caption ) {
|
|
$img .= $caption;
|
|
}
|
|
|
|
$img .= $image;
|
|
|
|
// display caption in bottom position
|
|
if ( $attrib[5] == 'bottom' && $caption ) {
|
|
$img .= $caption;
|
|
}
|
|
$img .='</div>';
|
|
} else {
|
|
$img = $image;
|
|
}
|
|
|
|
$images[] = $img;
|
|
}
|
|
}
|
|
|
|
return $images;
|
|
}
|
|
|
|
/**
|
|
* Replaces the matched tags an image
|
|
* @param array An array of matches (see preg_match_all)
|
|
* @return string
|
|
*/
|
|
function botMosImage_replacer( &$matches ) {
|
|
$i = $GLOBALS['botMosImageCount']++;
|
|
|
|
return @$GLOBALS['botMosImageArray'][$i];
|
|
}
|
|
?>
|