/* * 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 "
" .getStyleSheetLink(); echo ""; if ($domain) { echo ""; } echo ""; } if (isset($index)) { $id = $album->getPhotoId($index); echo "