vBadvanced Forums  
Go Back   vBadvanced Forums > vBadvanced Products > vBadvanced CMPS > vBa CMPS v1.x (Archive - Closed for Posting) > Add-On Modules & Modifications

 
 
Thread Tools Display Modes
  #1  
Old 06-25-2004, 03:00 PM
mholtum's Avatar
mholtum mholtum is offline
I ******* single moms.
 
Join Date: May 2004
Location: Tempe, Arizona
Posts: 1,938
Default Random Image Display. Menalto Gallery & CMPS

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

?>
Copy and paste the entire contents into a file named "block-random-support.js", and FTP it or otherwise place it in the docroot of your web server (not in your Gallery installation directory). 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>

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;
  }
}
Create a Template named adv_portal_random

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 -->
Create a Module:
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!
Attached Images
File Type: gif random_image.gif (16.5 KB, 909 views)

Last edited by mholtum; 06-25-2004 at 03:03 PM.
  #2  
Old 07-30-2004, 10:20 AM
Graham Barns Graham Barns is offline
Junior Member
 
Join Date: Jul 2004
Posts: 13
Default Re: Random Image Display. Gallery & CMPS

whats this gallery referring too i dont see ahy gallery script or one in the members area?
  #3  
Old 07-30-2004, 10:50 AM
mholtum's Avatar
mholtum mholtum is offline
I ******* single moms.
 
Join Date: May 2004
Location: Tempe, Arizona
Posts: 1,938
Default Re: Random Image Display. Gallery & CMPS

Gallery
  #4  
Old 07-31-2004, 11:34 AM
phoenixdown phoenixdown is offline
Senior Member
 
Join Date: May 2004
Posts: 138
Default Re: Random Image Display. Gallery & CMPS

We're you able to intergrate vb's user log in with gallery?
  #5  
Old 08-02-2004, 01:41 AM
mholtum's Avatar
mholtum mholtum is offline
I ******* single moms.
 
Join Date: May 2004
Location: Tempe, Arizona
Posts: 1,938
Default Re: Random Image Display. Gallery & CMPS

Quote:
Originally Posted by phoenixdown
We're you able to intergrate vb's user log in with gallery?
Not yet..
  #6  
Old 08-13-2004, 01:06 AM
timo1st timo1st is offline
Junior Member
 
Join Date: Jul 2004
Posts: 9
Default Re: Random Image Display. Gallery & CMPS

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  
Old 08-15-2004, 03:38 PM
timo1st timo1st is offline
Junior Member
 
Join Date: Jul 2004
Posts: 9
Unhappy Re: Random Image Display. Gallery & CMPS

????? any help
  #8  
Old 08-17-2004, 10:35 AM
timo1st timo1st is offline
Junior Member
 
Join Date: Jul 2004
Posts: 9
Default Re: Random Image Display. Gallery & CMPS

mr mholtum
any help plz?
  #9  
Old 08-18-2004, 02:07 AM
mholtum's Avatar
mholtum mholtum is offline
I ******* single moms.
 
Join Date: May 2004
Location: Tempe, Arizona
Posts: 1,938
Default Re: Random Image Display. Gallery & CMPS

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  
Old 09-01-2004, 07:31 AM
timo1st timo1st is offline
Junior Member
 
Join Date: Jul 2004
Posts: 9
Default Re: Random Image Display. Gallery & CMPS

in
Template to include :random
only ?
  #11  
Old 10-24-2004, 08:34 PM
thejaxx thejaxx is offline
Member
 
Join Date: Oct 2004
Posts: 45
Default Re: Random Image Display. Gallery & CMPS

Will this also support photopost?
  #12  
Old 10-25-2004, 01:11 AM
memobug memobug is offline
Senior Member
 
Join Date: Aug 2004
Posts: 121
Default Re: Random Image Display. Gallery & CMPS

Quote:
Originally Posted by thejaxx
Will this also support photopost?
No this particular random image display module wouldn't work with photopost.

Regards,

Matt
  #13  
Old 01-09-2005, 07:13 AM
centris's Avatar
centris centris is offline
Junior Member
 
Join Date: Dec 2004
Location: Scotland
Posts: 12
Default Re: Random Image Display. Gallery & CMPS

Not sure if I read this right, but after installing the images do not rotate, only the first image is ever displayed.

Quote:
You then must reference this file in the HTML Head of the page
Creating a html file is easy, but I don't get the above part? Where do you put this file and why is it not referenced in the create module??

Any help appreciated.
  #14  
Old 07-20-2005, 09:29 PM
xnt xnt is offline
Junior Member
 
Join Date: Jul 2005
Posts: 9
Default Re: Random Image Display. Gallery & CMPS

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
Attached Images
File Type: jpg randomshift.jpg (104.9 KB, 42 views)
File Type: jpg randomright.jpg (132.4 KB, 42 views)
  #15  
Old 07-21-2005, 12:07 AM
mholtum's Avatar
mholtum mholtum is offline
I ******* single moms.
 
Join Date: May 2004
Location: Tempe, Arizona
Posts: 1,938
Default Re: Random Image Display. Gallery & CMPS

Quote:
Originally Posted by xnt
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
It was designed for 1.x but if you change the Use Module Shell Template from yes to no, it may work.
  #16  
Old 07-21-2005, 12:11 AM
mholtum's Avatar
mholtum mholtum is offline
I ******* single moms.
 
Join Date: May 2004
Location: Tempe, Arizona
Posts: 1,938
Default Re: Random Image Display. Gallery & CMPS

Quote:
Originally Posted by timo1st
in
Template to include :random
only ?
Yes
  #17  
Old 07-21-2005, 12:33 AM
KW802's Avatar
KW802 KW802 is offline
Administrator
 
Join Date: Mar 2004
Location: A galaxy far, far away...
Posts: 5,030
Default Re: Random Image Display. Menalto Gallery & CMPS

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  
Old 07-21-2005, 12:39 AM
mholtum's Avatar
mholtum mholtum is offline
I ******* single moms.
 
Join Date: May 2004
Location: Tempe, Arizona
Posts: 1,938
Default Re: Random Image Display. Menalto Gallery & CMPS

Quote:
Originally Posted by KW802
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.
That is great. I posted this long before vbagallery was released.. I havent used it since..


I was kinda thinking "Holy Thread Resurection Batman!"
  #19  
Old 07-21-2005, 12:46 AM
KW802's Avatar
KW802 KW802 is offline
Administrator
 
Join Date: Mar 2004
Location: A galaxy far, far away...
Posts: 5,030
Default Re: Random Image Display. Menalto Gallery & CMPS

Quote:
Originally Posted by mholtum
I was kinda thinking "Holy Thread Resurection Batman!"
I didn't even notice when it was originally posted... I just assumed that you were playing around with Menalto for one of your sites. I should have known better than to think that you'd use something other than vBa Gallery.
  #20  
Old 07-14-2006, 07:09 PM
oldgoat oldgoat is offline
Junior Member
 
Join Date: Jun 2006
Location: montreal
Posts: 6
Exclamation Re: Random Image Display. Menalto Gallery & CMPS

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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

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


All times are GMT -4. The time now is 01:47 PM.

Forums Powered by vBulletin, Copyright ©2000-2009, Jelsoft Enterprises Ltd.
Please note that vBadvanced is in no way affiliated with Jelsoft Enterprises Ltd, nor will Jelsoft be able to provide any support for our products.