/********************************************************************************************* * e107 PLUGIN: Auto Gallery * VERSION: 2.xx * DESCRIPTION: A very simple media gallery, where galleries are based on a directory * structure. For the e107 CMS (http://e107.org) * WRITTEN BY: Mr_Visible (www.cerebralsynergy.com) * DATE: 31/07/2005 * * Released under the terms and conditions of the * GNU General Public License (http://gnu.org). ********************************************************************************************/ /* TODO: This release: X Upload writes to XML X Admin moves XML X Comment classes (gallery and media) X Add XML into review submissions X Lock XML files when writting X Display Error Log X Different 'unavailable' images - animations, movies, sound, images X Finish permissions thing X Gallery comment classes in gallery page X Searchin' (keywords in XML) X Complete languages USER REQUESTS X Reset core issue X Large Images in new window X Turn of text in galleries X e107 thinks its something it's not - Upload thumbnails for flash files X CHARSET e107_languages|YOUR_LANGUAGE|YOUR_LANGUAGE.php X Audio without display XML Cache Complete XML configuration X Gallery settings in XML - Ratings Uploading: Suggested gallery X "'" problem in comments - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?465 X Sort by modified date? - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?264 X Small word capitalisation problem - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?535 Permission change problem - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?539 Split galleries into pages - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?508 X Disallow BBCode option Gallery stats - total image, total media, +zzz new images e.c Autogallery Random Image Plugin , doesn't take already created thumbnails ... (th_ files) , it only take non thumbnails pictures ... like xxx.jpg ! Why? At every refresh , the random menu auto-generates an thumbnail .... X Random default image Latest media page plugin - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?501 Auto copywright - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?349 - Submit with gallery admin_main.php issue - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?484 Upload issue - http://www.cerebralsynergy.com/e107_plugins/forum/forum_viewtopic.php?214 Timer slide show X Sorting not working X Leech protection X Fixed thumbnail moving/renaming/deleting problem with non-images X Touch thumbnail before generation X Moved gallery XML file to 'Configuration' folder (security reasons). Remote Media Next release: Stylin' Thumbs to suffix Admin rotates Watermaking Top viewed page Top emailed page Later: e107 separation */ require_once(dirname(__FILE__)."/def.php"); require_once(dirname(__FILE__)."/language.php"); $startAG = microtime(true); $adminTime = 0; $selElement = rawurldecode($_GET['show']); $selElement = stripslashes($selElement); // GET IMAGE INFO $absPath = AutoGal_GetAbsGalPath($selElement); $galAbsPath = AutoGal_GetAbsGalPath(''); if (preg_match("/^".preg_quote($galAbsPath, '/')."/", $absPath)) { $selEleInfo = AutoGal_GetElementInfo($selElement, true); } else { $selEleInfo = NULL; } // GET VERSION if (AUTOGAL_SHOWAUTOGALVER) { $agVer = AutoGal_GetVersion(); $autoGalVer = "
". AUTOGAL_LANG_L1. "Auto Gallery v$agVer". "
"; } else { $autoGalVer = ''; } // BAD ELEMENT INFO if (($selElement)&&(!$selEleInfo)) { define("e_PAGETITLE", AUTOGAL_TITLE); require_once(HEADERF); $text = "

".AUTOGAL_LANG_L2."

".htmlspecialchars($selElement)."

".AUTOGAL_LANG_L3."

"; $ns -> tablerender(AUTOGAL_TITLE, $text); if (AUTOGAL_SHOW_FOOTER){require_once(FOOTERF);} } else { $startImage = ($_GET['start'] ? $_GET['start'] : 0); $showFullImage = rawurldecode($_GET['full']); $isNewWindow = $_GET['newwindow']; $showInNewWindow = false; // DO PAGE HEADER define("e_PAGETITLE", AUTOGAL_TITLE." : ".$selEleInfo['pathtitle']); if ((AUTOGAL_SHOWINNEWWINDOW)&&($selEleInfo['type'] == 'Image')&&($isNewWindow)) { $showInNewWindow = true; $text = AutoGal_GetNewWindowHeader(e_PAGETITLE); } else { // RENDER e107 HEADER require_once(HEADERF); // RENDER NAVIGATION BAR $text = "
".AutoGal_NavLinks($selEleInfo)."

"; } // PREFORM AND RENDER ADMIN MENU ACTION $renameTitle = ''; if (isset($_POST['autogal_adminaction']) && check_class($selEleInfo['adminclass'])) { $adminStart = microtime(true); require_once(dirname(__FILE__)."/admin_functions.php"); $text = AutoGal_PerformAdminAction ($selElement, $selEleInfo); $ns -> tablerender(AUTOGAL_TITLE, $text); $adminTime += (microtime(true) - $adminStart); } else { // CHECK IF XML FILE WAS OK if ((ADMIN)&&(AUTOGAL_USEXMLMETA)&&(($selEleInfo['xmlfileexists'])&&(!$selEleInfo['xmlok']))) { $ns -> tablerender(AUTOGAL_TITLE, "".AUTOGAL_LANG_L38." ".$selEleInfo['xmlerror']); } // SHOW GALLERY/IMAGE if ($selEleInfo['type'] == 'Gallery') { $text .= AutoGal_ShowGallery($selEleInfo, $startImage); } elseif($selEleInfo['type'] == 'Image') { $text .= AutoGal_ShowImage($selEleInfo, $showFullImage); } else { $text .= "
".AUTOGAL_LANG_L2."$selElement!
"; } $ns -> tablerender(AUTOGAL_TITLE, $text); // SHOW THE ERROR LOG IF ADMIN if ((check_class($selEleInfo['adminclass']))&&(AUTOGAL_SHOWERRORLOG)&&(filesize(AUTOGAL_ERRORLOG) > 0)) { $adminStart = microtime(true); $LOGHANDLE = fopen(AUTOGAL_ERRORLOG, "r"); $errorLog = fread($LOGHANDLE, filesize(AUTOGAL_ERRORLOG)); $errorLog = str_replace("\n\n", "\n", $errorLog); $errorLog = htmlspecialchars($errorLog); $errorLog = nl2br($errorLog); $errorLog = "$errorLog"; flock($LOGHANDLE, LOCK_UN); fclose($LOGHANDLE); $LOGHANDLE = fopen(AUTOGAL_ERRORLOG, "w"); flock($LOGHANDLE, LOCK_EX); ftruncate($LOGHANDLE, 0); flock($LOGHANDLE, LOCK_UN); fclose($LOGHANDLE); $errorLog .= "
"; if (AUTOGAL_GENERATEDEBUGLOG) { $errorLog .= "[".AUTOGAL_LANG_L39."]"; } else { $errorLog .= "[".AUTOGAL_LANG_L40."]"; } $errorLog .= "
"; $ns -> tablerender(AUTOGAL_LANG_L35, $errorLog); $adminTime += (microtime(true) - $adminStart); } if (AUTOGAL_USEXMLMETA) { // RENDER DESCRIPTION IF ENABLED if ($selEleInfo['description']) AutoGal_RenderDescription($selEleInfo); // RENDER COMMENTS IF ENABLED if (AUTOGAL_USEXMLMETACOMS) $selEleInfo = AutoGal_RenderComments($selEleInfo); // UPDATE VIEW HITS IF ENABLED if (AUTOGAL_USEXMLMETAVHITS) $selEleInfo = AutoGal_IncrementViewHits($selEleInfo); } // RENDER ADMIN MENU if (check_class($selEleInfo['adminclass'])) { $adminStart = microtime(true); require_once(dirname(__FILE__)."/admin_functions.php"); if (AUTOGAL_SHOWADMINMENU) AutoGal_ShowAdmin($selElement, $ns, $selEleInfo); $adminTime += (microtime(true) - $adminStart); } } // PRINT VERSION/FOOTER $AGTime = microtime(true) - $startAG; $AGTime = number_format(abs($AGTime), 4); $adminTime = number_format(abs($adminTime), 4); print "
". str_replace("[TIME]", $AGTime, AUTOGAL_LANG_L5). (ADMIN ? ' '.str_replace("[ADMINTIME]", $adminTime, AUTOGAL_LANG_L38) : ''). "
". $autoGalVer; if ((AUTOGAL_SHOW_FOOTER)&&(!$showInNewWindow)){require_once(FOOTERF);} } /***************************************************************************************************** * SHOWS A SINGLE IMAGE ****************************************************************************************************/ function AutoGal_ShowImage($selEleInfo, $showFullImage) { $image = $selEleInfo['element']; $imageGallery = $selEleInfo['gallery']; $galEles = AutoGal_GetGalleryElements($imageGallery); $imageFile = $selEleInfo['basename']; $shNewWin = ""; if (AUTOGAL_SHOWINNEWWINDOW) $shNewWin = "&newwindow=1"; $currImageIndex = AutoGal_GetImageIndex($image, $galEles); $imageInfo = $galEles['Images'][$currImageIndex]; $title = $imageInfo['title']; $subTitle = $imageInfo['subtitle']; if(!check_class(AutoGal_GetGalUserClass($imageGallery, 'view'))) { return ("
".AUTOGAL_LANG_L6."

"); } # GET IMAGE PAGE NUMBER $pageNum = floor($currImageIndex / (AUTOGAL_MAXPERPAGE ? AUTOGAL_MAXPERPAGE : 1)); $start = $pageNum * AUTOGAL_MAXPERPAGE; # NAV IMAGES $firstImage = ($currImageIndex == 0 ? '' : $galEles['Images'][0]); $lastImage = ($currImageIndex == (count($galEles['Images']) - 1) ? '' : $galEles['Images'][count($galEles['Images']) - 1]); $prevImage = $galEles['Images'][$currImageIndex - 1]; $nextImage = $galEles['Images'][$currImageIndex + 1]; $firstImage = ($firstImage ? "" : ""); $prevImage = ($prevImage ? "" : ""); $nextImage = ($nextImage ? "" : ""); $lastImage = ($lastImage ? "" : ""); $galleryLink = ""; $closeWindow = ""; $isLimited = 0; $emailLink = AutoGal_GetEmailLink($image); $botLinks = AutoGal_GetBotLinks($imageGallery); $fileSize = filesize($selEleInfo['abspath']); // GOT FROM http://php.mirrors.ilisys.com.au/manual/en/function.filesize.php $fileSizeName = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); $fileSize = round($fileSize/pow(1024, ($i = floor(log($fileSize, 1024)))), 2) . $fileSizeName[$i]; if ($selEleInfo['isflash']) { $showHTML = '
' .AUTOGAL_LANG_L37.$fileSize.'
'; } else if ($selEleInfo['isquicktime']) { $showHTML = '
' .AUTOGAL_LANG_L37.$fileSize.'
'; } else if ($selEleInfo['iswinmedia']) { if ($selEleInfo['isaudio']) { $wmpWidth = 300; $wmpHeight = 46; } else { $wmpWidth = AUTOGAL_MOVIEWIDTH; $wmpHeight = AUTOGAL_MOVIEHEIGHT; } $showHTML = '
'.AUTOGAL_LANG_L37.$fileSize.'
'.AUTOGAL_LANG_L26.'
'; } else if ($selEleInfo['isrealmedia']) { $showHTML = '
'.AUTOGAL_LANG_L37.$fileSize.'
'.AUTOGAL_LANG_L26.'

'; } else { if (!$showFullImage) { $imageSize = AutoGal_GetImageDimensions($image); $imageWidth = $imageSize['w']; $imageHeight = $imageSize['h']; $whRatio = ($imageSize['w'] / $imageSize['h']); $hwRatio = ($imageSize['h'] / $imageSize['w']); if ($imageWidth > AUTOGAL_MAXIMAGEWIDTH) { $imageWidth = AUTOGAL_MAXIMAGEWIDTH; $isLimited = 1; } if ($imageHeight > AUTOGAL_MAXIMAGEHEIGHT) { $imageHeight = AUTOGAL_MAXIMAGEHEIGHT; $isLimited = 1; } if ($isLimited) { if ($imageSize['w'] > $imageSize['h']){ $imageHeight = round($imageWidth / $whRatio); }elseif ($imageSize['h'] > $imageSize['w']){ $imageWidth = round($imageHeight / $hwRatio); } } $imgDims = ($imageWidth > 0 && $imageHeight > 0 ? ";width:${imageWidth}px;height:${imageHeight}px" : ''); } if (AUTOGAL_LARGEIMGNEWWINDOW) { $showFullAHref = ""; } else { $showFullAHref = ""; } $showHTML = "\"$title\"
" .($isLimited ? "$showFullAHref".str_replace("[SIZE]", $imageSize['w']."x".$imageSize['h'], AUTOGAL_LANG_L14)."

" : ''); } // XML STAT STUFF if (AUTOGAL_USEXMLMETA) { $hitStat = ""; if (AUTOGAL_USEXMLMETAVHITS) { $hitStat = AUTOGAL_LANG_L28; $hitStat = str_replace("[TYPE]", $selEleInfo['filetypetitle'], $hitStat); $hitStat = str_replace("[HITS]", ($selEleInfo['viewhits'] ? $selEleInfo['viewhits'] : 0), $hitStat); $hitStat = str_replace("[TIMES]", ($selEleInfo['viewhits'] == 1 ? AUTOGAL_LANG_L32 : AUTOGAL_LANG_L33), $hitStat); } if (AUTOGAL_USEXMLMETAEHITS) { $hitStat .= AUTOGAL_LANG_L29.AUTOGAL_LANG_L30; $hitStat = str_replace("[TYPE]", $selEleInfo['filetypetitle'], $hitStat); $hitStat = str_replace("[HITS]", ($selEleInfo['emailhits'] ? $selEleInfo['emailhits'] : 0), $hitStat); $hitStat = str_replace("[TIMES]", ($selEleInfo['emailhits'] == 1 ? AUTOGAL_LANG_L32 : AUTOGAL_LANG_L33), $hitStat); } $hitStat = ($hitStat ? "$hitStat.
" : ''); $submitStat = ""; if ($selEleInfo['submitdate'] > 0) { $submitStat = AUTOGAL_LANG_L31; if ($selEleInfo['submitbyuserid'] == 0) { $subUser = AUTOGAL_LANG_L34; } else { $subUser = "".$selEleInfo['submitbyusername'].""; } $submitStat = str_replace("[USER]", $subUser, $submitStat); $submitStat = str_replace("[DATE]", strftime("%d %b, %I:%M%p", $selEleInfo['submitdate']), $submitStat); $submitStat .= "
"; } } $stats = $hitStat.$submitStat; $stats = ($stats ? "$stats
" : ''); $text = "
$title ".($imageInfo['subtitle'] ? $imageInfo['subtitle']."
" : '')."
$showHTML
$stats $firstImage $prevImage ".(AUTOGAL_SHOWINNEWWINDOW ? $closeWindow : $galleryLink)." $nextImage $lastImage
\n". ($emailLink ? "
$emailLink
\n" : ''). (count($botLinks) > 0 ? "
".implode(' ', $botLinks) : ''). "
"; return $text; } /***************************************************************************************************** * SHOWS IMAGE GALLERY, WITH THUMBNAILS ****************************************************************************************************/ function AutoGal_ShowGallery($selEleInfo, $startImage) { $gallery = $selEleInfo['element']; $galEles = array(); global $pref; if(!check_class($selEleInfo['viewclass'])) { return ("
".AUTOGAL_LANG_L15."

"); } # GET THE IMAGES/SUB GALLERIES $galEles = AutoGal_GetGalleryElements($gallery, 1, 1); if (count($galEles['Images']) > 0 || count($galEles['SubGals']) > 0) { $divImgCellBy = (count($galEles['Images']) < AUTOGAL_NUMCOLS ? count($galEles['Images']) : AUTOGAL_NUMCOLS); $divGalCellBy = (count($galEles['SubGals']) < AUTOGAL_NUMGALLCOLS ? count($galEles['SubGals']) : AUTOGAL_NUMGALLCOLS); //////////////////////////////////////////////////////// // SUB GALLERIES //////////////////////////////////////////////////////// $numSubGals = 0; $galColCount = 0; $galRowCount = 0; foreach ($galEles['SubGals'] as $subGal) { if (check_class(AutoGal_GetGalUserClass($subGal['element'], 'view'))) { $subGallerys .= "\n". "\t".$subGal['ahref']." title='".$subGal['title']."'>\n". "\t".$subGal['defimghtml']."\n". "\t".$subGal['title']."\n". ($subGal['subtitle'] && AUTOGAL_SHOWSUBTITLESGAL ? "
(".$subGal['subtitle'].")\n" : ''). "\n"; $galColCount ++; if ($galColCount == AUTOGAL_NUMGALLCOLS) { $subGallerys .= ""; $galColCount = 0; $galRowCount ++; } $numSubGals ++; } } //////////////////////////////////////////////////////// // ROUND OFF SUB GALLERIES //////////////////////////////////////////////////////// if ($numSubGals) { while (($galRowCount > 0)&&($galColCount)&&($galColCount < AUTOGAL_NUMGALLCOLS)) { $subGallerys .= " "; $galColCount ++; } $subGallerys = " $subGallerys

"; } //////////////////////////////////////////////////////// // IMAGES //////////////////////////////////////////////////////// $numImages = 0; $imgColCount = 0; $imgRowCount = 0; $numShownImages = 0; foreach ($galEles['Images'] as $image) { if ($numImages >= $startImage) { $images .= "\n". "\t".$image['ahref']."title=\"".$image['title']."\">".$image['imgthumbhtml']."". (AUTOGAL_SHOWTITLEINGALL ? "
\n\t".$image['ahref']."title=\"".$image['title']."\">".$image['title']."\n". ($image['subtitle'] && AUTOGAL_SHOWSUBTITLESGAL ? "
(".$image['subtitle'].")" : '') : ''). "\n"; $imgColCount ++; if ($imgColCount == AUTOGAL_NUMCOLS) { $images .= ""; $imgColCount = 0; $imgRowCount ++; } $numShownImages ++; if ($numShownImages >= AUTOGAL_MAXPERPAGE) break; } $numImages ++; } $pageList = ''; if ($numImages > 0) { //////////////////////////////////////////////////////// // ROUND OFF IMAGES //////////////////////////////////////////////////////// while (($imgRowCount > 0)&&($imgColCount)&&($imgColCount < AUTOGAL_NUMCOLS)) { $images .= " "; $imgColCount ++; } $images = " $images
"; $images = str_replace("", "", $images); //////////////////////////////////////////////////////// // PAGE LIST //////////////////////////////////////////////////////// $totalImages = count($galEles['Images']); $numPages = ceil($totalImages / (AUTOGAL_MAXPERPAGE ? AUTOGAL_MAXPERPAGE : 1)); $currPage = floor($startImage / (AUTOGAL_MAXPERPAGE ? AUTOGAL_MAXPERPAGE : 1)); $showNum = ($totalImages - $startImage > AUTOGAL_MAXPERPAGE ? AUTOGAL_MAXPERPAGE : $totalImages - $startImage); $pageList = str_replace("[TOTALIMAGES]", $totalImages, str_replace("[IMAGERANGE]", ($startImage + 1).'-'.($startImage + $showNum), AUTOGAL_LANG_L17))."
"; if ($numPages > 1) { $pageList .= AUTOGAL_LANG_L18; for ($pageNum = 0; $pageNum < $numPages; $pageNum ++) { if ($pageNum == $currPage){ $pageList .= "".($pageNum + 1)." "; }else{ $pageList .= "".($pageNum + 1)." "; } } $pageList .= "
"; } } } //////////////////////////////////////////////////////// // NEW IMAGES //////////////////////////////////////////////////////// $newImagesTable = ''; if (($gallery == '')&&(AUTOGAL_SHOWNEWESTINROOT)) { $newImages = AutoGal_GetNewestImages(AUTOGAL_NUMCOLS, 0); if (count($newImages) > 0) { $newImagesTable = "
"; $newImgCount = 0; foreach ($newImages as $newImageInfo) { $newImgTitle = AUTOGAL_LANG_STAT_L4.": ".strftime(AUTOGAL_NEWESTLTIMEFORMAT, $newImageInfo['ctime']); $newImagesTable .= "\n"; $newImgCount ++; } while ($newImgCount < AUTOGAL_NUMCOLS) { $newImagesTable .= ""; $newImgCount ++; } $newImagesTable .= "
".AUTOGAL_LANG_STAT_L12."
\n". "\t".$newImageInfo['ahref']." title=\"$newImgTitle\">".$newImageInfo['imgthumbhtml']."". (AUTOGAL_SHOWTITLEINGALL ? "
\n\t".$newImageInfo['ahref']." title=\"$newImgTitle\">".$newImageInfo['title']."\n". ($newImageInfo['subtitle'] && AUTOGAL_SHOWSUBTITLESGAL ? "
(".$newImageInfo['subtitle'].")" : '') : ''). "
 
"; } } //////////////////////////////////////////////////////// // BUILD PAGE //////////////////////////////////////////////////////// $botLinks = AutoGal_GetBotLinks($gallery, true, true, ($gallery != '')); $text = "
". ($selEleInfo['subtitle'] ? "".$selEleInfo['subtitle']."

" : ''); if ((count($galEles['Images']) <= 0)&&(count($galEles['SubGals']) <= 0)) { $text .= "".AUTOGAL_LANG_L16."
"; } else { if (count($galEles['SubGals']) > 0) $text .= $subGallerys; if (count($galEles['Images']) > 0) $text .= $images; if ($pageList) $text .= "
".$pageList; } if ($newImagesTable) { $text .= $newImagesTable; } $text .= (count($botLinks) > 0 ? "
".implode(' ', $botLinks) : '')."
"; return $text; } /***************************************************************************************************** * RETURNS NAV LINKS BASED ON LOCATION ****************************************************************************************************/ function AutoGal_NavLinks($locInfo) { $location = $locInfo['element']; $galleries = explode ('/', $location); if ($locInfo['isroot']) { return ''.$locInfo['title'].''; } $navLinks = "".AutoGal_GetTitle(AUTOGAL_ROOTNAME, 1, 'title')."".AUTOGAL_NAVSEPERATOR; $absLoc = ''; $galIndex = 0; for ($galIndex = 0; $galIndex < count($galleries) - 1; $galIndex ++) { $gallery = $galleries[$galIndex]; $absLoc .= ($absLoc ? '/' : '').$gallery; $navLinks .= "".AutoGal_GetTitle($gallery, 1, 'title')."".AUTOGAL_NAVSEPERATOR; } $navLinks .= ''.$locInfo['title'].''; return $navLinks; } ?>