/mambots/content/mosimage.php
PHP | 254 lines | 158 code | 43 blank | 53 comment | 50 complexity | 0563ab97c87b8eb5d2e731dcaeec6047 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
- <?php
- /**
- * @version $Id: mosimage.php 5939 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];
- }
- ?>