registerFunction( 'onPrepareContent', 'botRokBox' );
function botRokBox( $published, &$row, &$params, $page=0 ) {
global $mainframe, $Itemid, $database, $_MAMBOTS;
require_once(dirname(__FILE__) . '/rokbox/imagehandler.php');
// simple performance check to determine whether bot should process further
if ( strpos( $row->text, 'rokbox' ) === false ) {
return true;
}
// define the regular expression for the bot
$regex = "#{rokbox(.*?)}(.*?){/rokbox}#s";
// check whether mambot has been unpublished
if ( !$published ) {
return true;
}
if ( !isset($_MAMBOTS->_content_mambot_params['rokbox']) ) {
// load mambot params info
$query = "SELECT params"
. "\n FROM #__mambots"
. "\n WHERE element = 'rokbox'"
. "\n AND folder = 'content'"
;
$database->setQuery( $query );
$database->loadObject($mambot);
// save query to class variable
$_MAMBOTS->_content_mambot_params['rokbox'] = $mambot;
}
// pull query data from class variable
$mambot = $_MAMBOTS->_content_mambot_params['rokbox'];
$botParams = new mosParameters( $mambot->params );
$GLOBALS['_MAMBOT_rokbox_PARAMS'] =& $botParams;
// perform the replacement
$row->text = preg_replace_callback( $regex, 'rokbox_replacer', $row->text );
return true;
}
/**
* Replaces the matched tags an image
* @param array An array of matches (see preg_match_all)
* @return string
*/
function rokbox_replacer( &$matches ) {
global $mosConfig_cachepath;
$botParams =& $GLOBALS['_MAMBOT_rokbox_PARAMS'];
$thumb_ext = $botParams->def( 'thumb_ext', '_thumb');
$thumb_class = $botParams->def( 'thumb_class', 'album');
$thumb_width = $botParams->def( 'thumb_width', '100');
$thumb_height = $botParams->def( 'thumb_height', '100');
$thumb_quality = $botParams->def( 'thumb_quality', '90');
$thumb_custom = $botParams->def( 'thumb_custom', 0);
$thumb_dir = $botParams->def( 'thumb_dir');
$compatibility = $botParams->def( 'compatibility', 'rokbox');
/* thumbnail settings */
$improve_thumbnails = false; // Auto Contrast, Unsharp Mask, Desaturate, White Balance
$temp_path = $mosConfig_cachepath; //required for improved gd_verion() function
$thumb_quality = $thumb_quality;
$width = $thumb_width;
$height = $thumb_height;
/* slimbox = lightbox mode */
if ($compatibility == "slimbox") $compatibility = "lightbox";
for ($i=0; $i < count($matches[0]); $i++) {
$thealbum = '';
$thetitle = '';
$thethumb = '';
$thetype = '';
$thesize = '';
$thetext = '';
$themodule = '';
$thethumbcount = 999;
if (@$matches[1]) {
$inline_params = $matches[1];
// get album
$album_matches = array();
preg_match( "#album=\|(.*?)\|#s", $inline_params, $album_matches );
if (isset($album_matches[1])) $thealbum = "(" . trim($album_matches[1]) . ")";
// get size
$size_matches = array();
preg_match( "#size=\|(.*?)\|#s", $inline_params, $size_matches );
if (isset($size_matches[1])) $thesize = "[" . trim($size_matches[1]) . "]";
// get title
$title_matches = array();
preg_match( "#title=\|(.*?)\|#s", $inline_params, $title_matches );
if (isset($title_matches[1])) $thetitle = $title_matches[1];
// get text
$text_matches = array();
preg_match( "#text=\|(.*?)\|#s", $inline_params, $text_matches );
if (isset($text_matches[1])) $thetext = $text_matches[1];
// force image
$type_matches = array();
preg_match( "#type=\|(.*?)\|#s", $inline_params, $type_matches );
if (isset($type_matches[1])) $thetype = $type_matches[1];
// get module
$module_matches = array();
preg_match( "#module=\|(.*?)\|#s", $inline_params, $module_matches );
if (isset($module_matches[1])) $themodule = "[module=".$module_matches[1]."]";
// get thumb
$thumb_matches = array();
preg_match( "#thumb=\|(.*?)\|#s", $inline_params, $thumb_matches );
if (isset($thumb_matches[1])) $thethumb = $thumb_matches[1];
// get thumb count
$thumbcount_matches = array();
preg_match( "#thumbcount=\|(.*?)\|#s", $inline_params, $thumbcount_matches );
if (isset($thumbcount_matches[1])) $thethumbcount = $thumbcount_matches[1];
}
$onsite=1;
$text = '';
$displaythumb = '';
$tmp = glob(trim($matches[2]));
if (count($tmp) < 1) {
$tmp = array(trim($matches[2]));
$onsite=0;
}
foreach ($tmp as $link) {
if ( strpos( $link, $thumb_ext ) === false ) {
if (strlen($thethumb)) $image_url = trim($thethumb);
else $image_url = $link;
$extension = substr($image_url,strrpos($image_url,"."));
$image_name = substr($image_url,0,strrpos($image_url, "."));
$tmp_thumb = $thumb_dir . "/" . substr($image_url,strrpos($image_url,DIRECTORY_SEPARATOR));
$thumb_url = $image_name . $thumb_ext . $extension;
$isimage = ($extension == '.jpg' || $extension == '.jpeg' || $extension == '.bmp' || $extension == '.png' || $extension == '.gif');
if ($onsite){
if (!isset($size_matches[1]) && $isimage) {
list($image_width,$image_height)=getimagesize($link);
$thesize = "[" . $image_width . " " . $image_height . "]";
}
$thethumbcount--;
if ($thethumbcount<0) $displaythumb = '" style="display: none;';
else $displaythumb = "";
}
if (!strlen($thethumb) && !strlen($thetype) && strlen($thetext) > 0) {
if (strlen($themodule)) $text .= ''.$thetext.'';
else $text .= ''.$thetext.'';
} else if (!strlen($thethumb) && !strlen($thetype) && !$isimage) {
if (strlen($themodule)) $text .= ''.$thetitle.'';
else $text .= ''.$thetitle.'';
} else {
if (strlen($thethumb) > 0) {
if (strlen($themodule)) $text .= '
';
else $text .= '
';
} elseif (!$thumb_custom && file_exists($thumb_url) && strlen($thethumb) > 0) {
if (strlen($themodule)) $text .= '
';
else $text .= '
';
} elseif (file_exists($thumb_url)) {
// thumbnail exists so can do lightbox with thumbnail
if (strlen($themodule)) $text .= '
';
else $text .= '
';
} elseif (file_exists($tmp_thumb)) {
if (strlen($themodule)) $text .= '
';
else $text .= '
';
} elseif ($isimage || $thetype == 'image') {
//try to generate thumbs
if ($thumb_custom) $thumb_url = $tmp_thumb;
$rd = new imgRedim(false, $improve_thumbnails, $temp_path);
$image_filename = $image_url; // define source image here
$output_filename = $thumb_url; // define destination image here
$rd->loadImage($image_filename);
$rd->redimToSize($width, $height, true);
$rd->saveImage($output_filename, $thumb_quality);
$text .= '
';
}
}
$text .= ' ';
}
}
return $text;
}
}
?>