Recent Topics

1 May 22, 2007 10:05    

My b2evolution Version: 1.10.0 beta

Does anyone know why my random Gallery photo would just stop appearing in my sidebar? I'm using the clean skin. I was also using b2evo 1.93.0 when this happened.

Here's what happened: I made a post on my blog with a couple of animated gifs. It looked fine. I went to sleep. In the morning, I woke up and my sidebar (which had nothing to do with that post) just had the very top link working and everything else below it wasn't there. When I went into the admin section of b2evo, it was giving me the following error when I tried to load all my posts in admin mode: "Fatal error: Allowed memory size of 8388608 bytes exhausted." This message was appearing in the sidebar of the admin page. I researched this board and edited the _basic_config.php and .htaccess files and also worked with my ISP to edit my php.ini file. That message stopped appearing. But my sidebar still didn't appear on my homepage.

Then I went into my _main.php file in my skin directory and took out the code that calls my gallery/block-random.php file. The sidebar reappeared. A-ha! Since then, I've tried using the block-random-enhanced.php file and changing around the code that calls it in my _main.php file with no luck. I just don't get why this happened since I didn't do anything to any of these files. But clearly that random image is a problem.

Here's my code in my _main.php file right now if anyone has any ideas:

<div class="bSideItem" align="center">
<a href="http://www.mysite.com/gallery/albums.php" title="My Gallery">My Gallery</a><br><br>
<?php
@include 'http://www.mysite.com/gallery/block-random.php' ;
?>
</div>

Thanks!
Gurg

2 May 22, 2007 11:29

It's really hard to comment on your problem without a direct link and/or a sample of your random script.

3 May 23, 2007 02:14

My site is www.scarchive.com

Here's block-random.php...

<?php
/*
 * Gallery - a web based photo album viewer and editor
 * Copyright (C) 2000-2006 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., 51 Franklin Street - Fifth Floor, Boston, MA  02110-1301, USA.
 *
 * $Id: block-random.php 13338 2006-03-27 15:32:14Z jenst $
 */
/*
 * 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.
 *
 * If your Gallery is embedded and you call it via an URL, 
 * make sure you are giving the needed paramters.
 *
 * *Nuke:
 * http://<URL to your Nuke>/modules.php?op=modload&name=gallery&file=index&include=block-random.php
 *
 * Mambo / Joomla :
 * http://<URL to Mambo>/index.php?option=com_gallery&Itemid=XXX
 */

// Random block does not require authentication of any sort... don't use sessions
$GALLERY_NO_SESSIONS = 1;
require(dirname(__FILE__) . "/init.php");

define('CACHE_FILE', $gallery->app->albumDir . "/block-random.dat");
define('CACHE_EXPIRED', $gallery->app->blockRandomCache);

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

if ($rebuild) {
	scanAlbums();
	saveGalleryBlockRandomCache();
} else {
	readGalleryBlockRandomCache();
}

$i = 0;
do { 
	$success = doPhoto();
	$i++;
} while (empty($success) && $i < $gallery->app->blockRandomAttempts);

if (empty($success)) {
	echo _("No photo chosen.");
}

function doPhoto() {
	$album = chooseAlbum();

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

	if (!empty($index)) {
		$id = $album->getPhotoId($index);
		$caption = $album->getCaption($index) ? '<br>'. $album->getCaption($index) : '';
		$photoUrl = makeAlbumUrl($album->fields['name'], $id);
		$imageUrl = $album->getThumbnailTag($index);
		$albumUrl = makeAlbumUrl($album->fields['name']);
		$albumTitle = $album->fields['title'];
?>
  <div class="random-block">
    <div class="random-block-photo">
    <a href="<?php echo $photoUrl; ?>"><?php echo $imageUrl; ?></a>
    <?php echo $caption; ?>
    
    </div>
    <?php printf (_("From album: %s"), "<a href=\"$albumUrl\">$albumTitle</a>"); ?>
  </div>
<?php
		return 1;
	} else {
		return 0;
	}
}

/*
 * --------------------------------------------------
 * Support functions
 * --------------------------------------------------
 */

function saveGalleryBlockRandomCache() {
	global $cache;
	safe_serialize($cache, CACHE_FILE);
}

function readGalleryBlockRandomCache() {
	global $cache;

	$sCache = getFile(CACHE_FILE);
	$cache = unserialize($sCache);
}

function choosePhoto($album) {
	global $cache;

	$count = $cache[$album->fields["name"]];
	if ($count == 0) {
		// Shouldn't happen
		return null;
	} elseif ($count == 1) {
		$choose = 1;
		if ($album->isAlbum($choose)) {
			return null;
		}
	} else {
		$choose = mt_rand(1, $count);
		$wrap = 0;
		while ($album->isHiddenRecurse($choose) || $album->isAlbum($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 (empty($choose)) {
			$choose = $name;
		}

		$total += $count;
		if ($total != 0 && ($total == 1 || mt_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 ($tmpAlbum->canReadRecurse($everybody->getUid()) && !$tmpAlbum->isHiddenRecurse()) {
			$seeHidden = $everybody->canWriteToAlbum($tmpAlbum);
			$numPhotos = $tmpAlbum->numPhotos($seeHidden);
			$name = $tmpAlbum->fields["name"];
			if ($numPhotos > 0) {
				$cache[$name] = $numPhotos;
			}
		}
	}
}
?>

4 May 23, 2007 02:45

Well, at first glance your Sidebar divs are not closed

<div class="bSideBar">

<div class="bSideItem" align="center">
<a href="http://www.scarchive.com/gallery/albums.php" title="My Gallery">My Gallery</a><br><br>

It seems like your include php just isn't working!!

5 May 23, 2007 04:14

Any ideas why?

Or some other code I can try?

Thanks

6 May 23, 2007 16:08

Sorry I can't help you with the problem you're having, but I did want to ask that when you post code please use the "code" button. As you can see, it makes the thread and code a bit easier to read. The "php" button does groovy color stuff, but I always use plain old "code".

Oh and yeah I'm the one who edited your post to use "code".

7 May 23, 2007 18:14

remove the red bit, it may or may not be enlightening ;)

<?php
@include 'http://www.mysite.com/gallery/block-random.php' ;
?>

¥

8 May 23, 2007 23:12

EdB: Sorry, I will remember that.

Yabba: It was not enlightening unfortunately. No effect.

Is there anything my hosting provider could have done to cause this?


Form is loading...