registerFunction( 'onPrepareContent', 'botMosImage' ); /** */ function botMosImage( $published, &$row, &$cparams, $page=0, $params ) { global $database; // expression to search for $regex = '/{mosimage\s*.*?}/i'; // 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 ) { // load mambot params info $params->def( 'padding' ); $params->def( 'margin' ); $params->def( 'link', 0 ); $images = processImages( $row, $params ); // store some vars in globals to access from the replacer $GLOBALS['botMosImageCount'] = 0; $GLOBALS['botMosImageParams'] =& $params; $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'] ); return true; } } function processImages ( &$row, &$params ) { 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 = 0; 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 tag $image = ''; // assemble caption - if caption detected if ( $attrib[4] ) { $caption = '
'; $caption .= $attrib[4]; $caption .='
'; } // final output if ( $attrib[4] ) { $img = '
'; // display caption in top position if ( $attrib[5] == 'top' ) { $img .= $caption; } $img .= $image; // display caption in bottom position if ( $attrib[5] == 'bottom' ) { $img .= $caption; } $img .='
'; } 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]; } ?>