![]() |
|
#1
|
||||
|
||||
|
This module will display a random image on your portal using Gallery.
Copy and paste the entire contents into a file named "block-random.php" and FTP it or otherwise place it in your Gallery installation directory. Code:
<? /* * Gallery - a web based photo album viewer and editor * Copyright (C) 2000-2001 Bharat Mediratta * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * This block selects a random photo for display. It will only display photos * from albums that are visible to the public. It will not display hidden * photos. * * Once a day (or whatever you set CACHE_EXPIRED to) we scan all albums and * create a cache file listing each public album and the number of photos it * contains. For all subsequent attempts we use that cache file. This means * that if you change your albums around it may take a day before this block * starts (or stops) displaying them. */ /* * With Barca-Hall modifications * * Latest revision: 8-Jun-2004 to clean-up HTML output to pass W3C validation. * * * See: http://www.barcahall.com/gallery-block-random.html. */ // Hack prevention. if (!empty($HTTP_GET_VARS["GALLERY_BASEDIR"]) || !empty($HTTP_POST_VARS["GALLERY_BASEDIR"]) || !empty($HTTP_COOKIE_VARS["GALLERY_BASEDIR"])) { print "Security violation\n"; exit; } require($GALLERY_BASEDIR . "init.php"); if ($profile) { $timer = time(); } /* Initializing the seed */ srand ((double) microtime() * 1000000); define(CACHE_FILE, $gallery->app->albumDir . "/block-random.cache"); define(CACHE_EXPIRED, 86400); // Check the cache file to see if it's up to date $rebuild = 1; if (fs_file_exists(CACHE_FILE)) { $stat = fs_stat(CACHE_FILE); $mtime = $stat[9]; if (time() - $mtime < CACHE_EXPIRED) { $rebuild = 0; } } // Only select sub-albums that Everybody can access $everybody = $gallery->userDB->getEverybody(); if ($rebuild) { scanAlbums(); saveCache(); } else { readCache(); } // Parameter: size // Specify that the thumbnail image should be resized when displayed, // to fit a specific dimension in both height and width. Aspect ratio is maintained. // Intended to reduce the size of images, but if the size specified is larger than either thumbnail dimension, // the image will be enlarged (with a corresponding loss of quality.) // Note: This does not create an additional thumbnail, nor does it alter the existing thumbnail; // the image is dynamically scaled by the browser when rendered. // Example: size=75 // Default: 0, meaning no resize. if (!empty($HTTP_GET_VARS["size"])) $size = $HTTP_GET_VARS["size"]; else $size = 0; // Parameter: domain // Specify the value to which document.domain should be set. // Not needed if this page and the page calling it are on the same server. // Allows the page embedding this random photo page to resize the containing IFRAME, // when the two pages are on different servers, but within a common domain (e.g. "www.foo.com" and "gallery.foo.com"). // The value specified must be the common suffix of the two server names, cannot be simply ".com", // and the calling page must set its document.domain to the same value. // Example: domain=foo.com // Default: none. If not specified, no document.domain statement will be executed. if (!empty($HTTP_GET_VARS["domain"])) $domain = $HTTP_GET_VARS["domain"]; // Parameter: target // Specify the value to be used in the target= attribute of the A tag. // Example: target=_top // Default: _blank if (!empty($HTTP_GET_VARS["target"])) $targetAttr = "target=\"".$HTTP_GET_VARS["target"] ."\""; else $targetAttr = "target=\"_blank\""; // Parameter: album // Limit the photo block to only one album (including its sub-albums). // Example: album=nytrip // Default: none. If not specified, all visible albums will be used. if (!empty($HTTP_GET_VARS["album"])) { $album = new Album(); $album->load($HTTP_GET_VARS["album"]); } else $album = chooseAlbum(); if ($album) { $index = choosePhoto(); } if (!$GALLERY_EMBEDDED_INSIDE) { echo "<head>" .getStyleSheetLink(); echo "<style type=\"text/css\">"; echo "BODY { margin:0 0; }"; if ($album->fields["bgcolor"]) { echo "BODY { background-color:".$album->fields[bgcolor]."; }"; } if ($album->fields["textcolor"]) { echo "BODY {color:".$album->fields[textcolor]."; }"; } echo "</style>"; if ($domain) { echo "<script language='JavaScript'>document.domain='$domain';</script>"; } echo "</head>"; } if (isset($index)) { $id = $album->getPhotoId($index); echo "<center>" ."<a href=\"" .makeAlbumUrl($album->fields["name"], $id) ."\" $targetAttr>" .$album->getThumbnailTag($index,$size) ."</a>"; $caption = $album->getCaption($index); echo "<span class=caption>"; if ($caption) { echo "<br>$caption"; } echo "<br><i>From: </i>" ."<a href=\"" .makeAlbumUrl($album->fields["name"]) ."\" $targetAttr>" .$album->fields["title"] ."</a></span></center></body>"; } else { // No photo chosen. Provide link to album itself, otherwise to top-level of gallery. if ($album) { echo "<center>" ."<a href=\"" .makeAlbumUrl($album->fields["name"]) ."\" $targetAttr>" .$album->getHighlightAsThumbnailTag($size) ."</a><span class=caption><br>" ."<a href=\"" .makeAlbumUrl($album->fields["name"]) ."\" $targetAttr>" .$album->fields["title"] ."</a></span></center></body>"; } else { print "<center><a href=\"" . makeGalleryUrl("albums.php") . "\" $targetAttr>" . $gallery->app->galleryTitle . "</a></center>"; } // print "No photo chosen."; } if ($profile) { $elapsed = time() - $timer; print "<br>Elapsed: $elapsed secs"; } /* * -------------------------------------------------- * Support functions * -------------------------------------------------- */ function saveCache() { global $cache; if ($fd = fs_fopen(CACHE_FILE, "w")) { foreach ($cache as $key => $val) { fwrite($fd, "$key/$val\n"); } fclose($fd); } } function readCache() { global $cache; if ($fd = fs_fopen(CACHE_FILE, "r")) { while ($line = fgets($fd, 4096)) { list($key, $val) = explode("/", $line); $cache[$key] = trim($val); } fclose($fd); } } function choosePhoto() { global $cache; global $album; $count = $cache[$album->fields["name"]]; if ($count == 0) { // Shouldn't happen return null; } else if ($count == 1) { $choose = 1; } else { $choose = rand(1, (int) $count); $wrap = 0; // Skip an item in the album if it is Private (a hidden photo, or a protected sub-album) while ( isPrivate($album, $choose) ) { $choose++; if ($choose > $count) { $choose = 1; $wrap++; if ($wrap == 2) { return null; } } } } /* * If we've picked a sub-album, then * make it the chosen album, and * recursively choose a photo from *it* */ $isSubAlbum = FALSE; $subAlbumName = ''; // Backwards compatibility was lost in v1.4.3 if (method_exists($album, 'isAlbum')) { // Gallery v1.4.3 or later if ( $album->isAlbum($choose) ) { $isSubAlbum = TRUE; $subAlbumName = $album->getAlbumName($choose); } } else { // Gallery v1.4.2 or earlier if ( $album->isAlbumName($choose) ) { $isSubAlbum = TRUE; $subAlbumName = $album->isAlbumName($choose); } } if ( $isSubAlbum ) { $album->load($subAlbumName); return choosePhoto(); } return $choose; } function chooseAlbum() { global $cache; /* * The odds that an album will be selected is proportional * to the number of (visible) items in the album. */ $total = 0; foreach ($cache as $name => $count) { if (!$choose) { $choose = $name; } $total += $count; if ($total != 0 && ($total == 1 || rand(1, $total) <= $count)) { $choose = $name; } } if ($choose) { $album = new Album(); $album->load($choose); return $album; } else { return null; } } function scanAlbums() { global $cache; global $gallery; global $everybody; $cache = array(); // $everybody = $gallery->userDB->getEverybody(); $albumDB = new AlbumDB(); foreach ($albumDB->albumList as $tmpAlbum) { if ($everybody->canReadAlbum($tmpAlbum)) { $seeHidden = $everybody->canWriteToAlbum($tmpAlbum); $numPhotos = $tmpAlbum->numPhotos($seeHidden); $name = $tmpAlbum->fields["name"]; if ($numPhotos > 0) { $cache[$name] = $numPhotos; } } } } function isPrivate($alb, $idx) { global $everybody; $isSubAlbum = FALSE; $subAlbumName = ''; if (method_exists($alb, 'isAlbum')) { // Gallery v1.4.3 or later $isSubAlbum = $alb->isAlbum($idx); $subAlbumName = $alb->getAlbumName($idx); } else { // Gallery v1.4.2 or earlier $isSubAlbum = $alb->isAlbumName($idx); $subAlbumName = $alb->isAlbumName($idx); } if ( $isSubAlbum ) { $tmpAlb = new Album(); $tmpAlb->load($subAlbumName); return ! $everybody->canReadAlbum($tmpAlb); } return $alb->isHidden($idx); } ?> Code:
// document.domain='yourdomain.com'; // Uncomment and edit if Access is Denied runtime JavaScript error occurs
function iFrameHeight(obj) {
aID = obj.id;
// if contentDocument exists, W3C compliant (Mozilla)
if (document.getElementById(aID).contentDocument){
obj.height = document.getElementById(aID).contentDocument.body.scrollHeight;
} else {
// IE
obj.style.height = document.frames[aID].document.body.scrollHeight;
}
}
Code:
<!-- Random Gallery Block -->
<script language="JavaScript" type="text/javascript" SRC="http://www.ravensrealm.net/block-random-support.js"></script>
<table align="center" border="0" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" class="tborder" width="100%">
<thead>
<tr>
<td class="tcat"><span class="smallfont"><strong>$vba_options[portal_blockbullet] Random Image </strong></span></td>
</tr>
</thead>
<tr>
<td class="$getbgrow" width="100%" align="center">
<IFRAME id="blockrandom1"
name="blockrandom1"
onLoad="iFrameHeight(this);"
src="http://yourdomain.com/gallery/block-random.php?size=125&target=_top"
width="125"
height="120" align=top scrolling=no frameborder=0>
[This feature requires IFRAME.]</IFRAME>
</td>
</tr>
</table>
<br />
<!-- End Random Gallery Block -->
Module Title: Random Images (or whatever you want_ Module Identifier: Blank File to include: None Template to include random Activate and place where you wish! Last edited by mholtum; 06-25-2004 at 03:03 PM. |
|
#2
|
|||
|
|||
|
whats this gallery referring too i dont see ahy gallery script or one in the members area?
|
|
#3
|
||||
|
||||
|
|
|
#4
|
|||
|
|||
|
We're you able to intergrate vb's user log in with gallery?
|
|
#5
|
||||
|
||||
|
Quote:
|
|
#6
|
|||
|
|||
|
i got this error
Warning: main(init.php): failed to open stream: No such file or directory in /home/tamer/public_html/tomyalpom/block-random.php on line 50 Fatal error: main(): Failed opening required 'init.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/tamer/public_html/tomyalpom/block-random.php on line 50 ??????] any help |
|
#7
|
|||
|
|||
|
????? any help
|
|
#8
|
|||
|
|||
|
mr mholtum
any help plz? |
|
#9
|
||||
|
||||
|
I would try to do it again.
1: Remove everything you have done. 2: Follow the directions exactly as posted. 3: You shouldn't get any errors. If I can get it to work, anyone can.. |
|
#10
|
|||
|
|||
|
in
Template to include :random only ? |
|
#11
|
|||
|
|||
|
Will this also support photopost?
|
|
#12
|
|||
|
|||
|
Quote:
Regards, Matt |
|
#13
|
||||
|
||||
|
Not sure if I read this right, but after installing the images do not rotate, only the first image is ever displayed.
Quote:
Any help appreciated. |
|
#14
|
|||
|
|||
|
I tried to install this module in CMPS 2.x but I was not able to use this as a left block module. If I did than all the blocks from the center will be shifted down under the last left block. It works fine when it's the only one or the last block on the right ??
Any ideas what went wrong ??? See pix attached TIA |
|
#15
|
||||
|
||||
|
Quote:
|
|
#16
|
||||
|
||||
|
Quote:
|
|
#17
|
||||
|
||||
|
mholtum, hope you don't mind but I changed the thread title to specify Menalto gallery so people know right away which "Gallery" it is.
|
|
#18
|
||||
|
||||
|
Quote:
I was kinda thinking "Holy Thread Resurection Batman!" |
|
#19
|
||||
|
||||
|
Quote:
|
|
#20
|
|||
|
|||
|
hello to all.
Running menalto gallery 2, vbulletin 3.5.4 and vbadvanced cmps 2.0.1 Stuck at one point, where and how do i do this part of the procedure: You then must reference this file in the HTML Head of the page on which you want to display random images. Do this by placing the following line of code into the HEAD of your page (just above the closing </HEAD> is a good place), adjusting the SRC pathname as needed for your installation: script language="JavaScript" type="text/javascript" SRC="/block-random-support.js"></script> thanks in advance for all your help. |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Gallery Random Image | mholtum | Add-On Modules & Modifications | 1 | 09-13-2004 06:35 AM |
| How do I add the following 'Display Random Image' Code? | baptizer | Add-On Modules & Modifications | 5 | 07-14-2004 03:37 PM |
| Random Image from Gallery | mholtum | Add-On Modules & Modifications | 2 | 06-25-2004 02:12 AM |