Ravens PHP Scripts: Forums
 

 

View next topic
View previous topic
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Ravens PHP Scripts And Web Hosting Forum Index -> phpnuke 6.5
Author Message
msimonds
Regular
Regular



Joined: Jul 15, 2003
Posts: 56
Location: Dallas

PostPosted: Tue Jul 15, 2003 3:41 pm Reply with quote

this block pulls random pics from all galleries that I have running on my site for the Rant Girl of the month. I was wondering if there was any way to modify this block to pull just the newest/current gallery that is on the site. Here is the code:


Code:
<?php

/*
 * 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.
 */

// 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;
}

$GALLERY_BASEDIR = "/home/rantman/public_html/modules/gallery/";
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 = 1;
    }
}

if ($rebuild) {
    scanAlbums();
    saveCache();
} else {
    readCache();
}

$album = chooseAlbum();

if ($album) {
    $index = choosePhoto($album);
}

if (isset($index)) {
    $id = $album->getPhotoId($index);
    $url = "http://www.sportsrant.com/";
    $url .= "modules.php?set_albumName=".$album->fields["name"];
    $url .= "&id=" .$id;
    $url .= "&op=modload&name=gallery&file=index&include=view_photo.php";
//    echo"$url";

    echo "<center>"
       ."<a href=\"$url\">"
//       ."<a href=" .makeAlbumUrl($album->fields["name"], $id) .">"
       .$album->getThumbnailTag($index)
       ."</a></center>";
   
    $caption = $album->getCaption($index);
    if ($caption) {
   echo "<br><center>$caption</center>";
    }
   
    $albumURL = "http://www.sportsrant.com/";
    $albumURL .= "modules.php?set_albumName=".$album->fields["name"];
    $albumURL .= "&op=modload&name=gallery&file=index&include=view_album.php";
    echo "<br><center>From: "
            ."<a href=\"$albumURL\">"
//       ."<a href=" .makeAlbumUrl(currentAlbum) .">"
       .$album->fields["title"]
       ."</a></center>";
} else {
   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] = $val;
   }
   fclose($fd);
    }
}

function choosePhoto($album) {
    global $cache;

    $count = $cache[$album->fields["name"]];
    if ($count == 0) {
   // Shouldn't happen
   return null;
    } else if ($count == 1) {
   $choose = 1;
    } else {
   $choose = rand(1, $count);
   $wrap = 0;
   if ($album->isHidden($choose)) {
       $choose++;
       if ($choose > $album->numPhotos(1)) {
      $choose = 1;
      $wrap++;

      if ($wrap = 2) {
          return null;
      }
       }
   }
    }

    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;

    $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;
       }
   }
    }
}
?>



can someone help me out to see if it is possible to just make this -1/or the current gallery instead of all galleries

Thanks
Mike
 
View user's profile Send private message Send e-mail Visit poster's website AIM Address Yahoo Messenger MSN Messenger
msimonds







PostPosted: Thu Sep 11, 2003 3:32 pm Reply with quote

oh BTW I fixed this block so that it can just pull from whatever gallery you want it to
 
Display posts from previous:       
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Ravens PHP Scripts And Web Hosting Forum Index -> phpnuke 6.5

View next topic
View previous topic
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001-2007 phpBB Group
All times are GMT - 6 Hours
 
Forums ©