Click to See Complete Forum and Search --> : what's wrong with this photo gallery code? HELP!!


mikeyzc
05-28-2004, 08:32 AM
Here is the php file.

<?php

/* This is a script that list all image files on a given directory, and displays the thumbnails nicely formated within an HTML table. It also make use of JavScript to open pop up windows when the users want to see the full photo */

//***********************************************************//
//******** STARTOF VARIABLES CONFIGURATION SECTION **********//
//***********************************************************//

// DON'T FORGET TO INCLUDE THE CLASS.FILE
// You can download it from:
// http://www.thewebmasters.net/php/File-1_0.tar.gz
include("http://www.mydomain.com/testing/class.file.php3");

// RELATIVE PATH TO IMAGES DIRECTORY (Other than gallery.php3's)
$path = "http://www.mydomain.com/testing/";

// NUMBER OF COLUMNS TO BE DISPLAYED
$colunas = 3;

// THUMBNAIL WIDTH
$thumb_width = "100";

// THUMBNAIL HEIGHT
$thumb_height = "";

/* COORDINATES FOR THE FULL SIZE PHOTO POP-UP WINDOW
YOU CAN USE (MINUS) TO INVERT THE REFERENCES
(RIGHTMARGIN AND BOTTOMMARGIN). PREETY COOL, ISN'T IT? */

// LEFTMARGIN OFFSET (RIGTHMARGIN IF YOU USE NEGATIVE VALUES)
$pop_leftmargin = "1";

// TOPMARGIN OFFSET (BOTTOMMARGIN IF YOU USE NEGATIVE VALUES)
$pop_topmargin = "1";

//***********************************************************//
//******** ENDOF VARIABLES CONFIGURATION SECTION ************//
//***********************************************************//

$file = new File();
$images = array();
$jpgs = $file->get_files("$path","jpg");
if( !empty($jpgs) ) {
while ( list( $key, $filename ) = each( $jpgs ) ) {
$images[] = $filename;
}
}
$gifs = $file->get_files("$path","gif");
if( !empty($gifs) ) {
while ( list( $key, $filename ) = each( $gifs ) ) {
$images[] = $filename;
}
}
$pngs = $file->get_files("$path","png");
if( !empty($pngs) ) {
while ( list( $key, $filename ) = each( $pngs ) ) {
$images[] = $filename;
}
}
$bmps = $file->get_files("$path","bmp");
if( !empty($bmps) ) {
while ( list( $key, $filename ) = each( $bmps ) ) {
$images[] = $filename;
}
}
$count = 1;
$break = $colunas;
?>
<!-- STARTOF HTML CODE - CUSTOMIZE AS YOU WISH -->
<!-- JUST DON'T TOUCH THE JAVA CODE -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>The PHP Photo Gallery</TITLE>
<SCRIPT Language="JavaScript">
<!--
var popWin = null
var winCount = 0
var winName = "popWin"
function openPopWin(winURL, winWidth, winHeight, winFeatures, winLeft, winTop){
var d_winLeft = 20
var d_winTop = 20
winName = "popWin" + winCount++
closePopWin()
if (openPopWin.arguments.length >= 4)
winFeatures = "," + winFeatures
else
winFeatures = ""
if (openPopWin.arguments.length == 6)
winFeatures += getLocation(winWidth, winHeight, winLeft, winTop)
else
winFeatures += getLocation(winWidth, winHeight, d_winLeft, d_winTop)
popWin = window.open(winURL, winName, "width=" + winWidth
+ ",height=" + winHeight + winFeatures)
}
function closePopWin(){
if (navigator.appName != "Microsoft Internet Explorer"
|| parseInt(navigator.appVersion) >=4)
if(popWin != null) if(!popWin.closed) popWin.close()
}
function getLocation(winWidth, winHeight, winLeft, winTop){
return ""
}
//-->
</SCRIPT>
<SCRIPT Language="JavaScript1.2">
<!--
function getLocation(winWidth, winHeight, winLeft, winTop){
var winLocation = ""
if (winLeft < 0)
winLeft = screen.width - winWidth + winLeft
if (winTop < 0)
winTop = screen.height - winHeight + winTop
if (winTop == "cen")
winTop = (screen.height - winHeight)/2 - 20
if (winLeft == "cen")
winLeft = (screen.width - winWidth)/2
if (winLeft>0 & winTop>0)
winLocation = ",screenX=" + winLeft + ",left=" + winLeft
+ ",screenY=" + winTop + ",top=" + winTop
else
winLocation = ""
return winLocation
}
//-->
</SCRIPT>
<style>
<!--
BODY {
font-family: Verdana,Arial;
font-style: none;
font-size: 16px;
}
BIG {
font-size: 28px;
font-weight: bold;
}
TABLE {
font-size: 16px;
}
SMALL {
font-size: 12px;
}

A:LINK {
text-decoration: none;
font-weight: bold;
}
-->
</style>
</HEAD>
<BODY onUnload="closePopWin()">

<div align="center">
<BIG>PHP Photo Gallery</BIG><br>

<br>
<b>(Click the thumbnails to enlarge ­ Total in this page:
<?php echo count($images); ?> images)</b></small>


<table border="5" cellspacing="0" cellpadding="6">
<tr>
<!-- STARTOF TABLE CELL DISPLAY PHP CODE -->
<!-- DO NOT ALTER IT -->
<?php
while ( list( $key, $fileName ) = each( $images ) )
{
if( !empty($fileName) )
{
$tamanho = GetImageSize("$path/$fileName");
$largura = $tamanho[0] + 18;
$altura = $tamanho[1] + 28;
echo " <td align=\"CENTER\" valign=\"TOP\"><a href='javascript:openPopWin(\"$path/$fileName\", $largura, $altura, \"\", $pop_leftmargin, $pop_topmargin)'><IMG SRC=\"$path/$fileName\" border=0 alt=\"$count\"";
if (!empty($thumb_width)) {echo " width=\"$thumb_width\"";}
if (!empty($thumb_height)) {echo " height=\"$thumb_height\"";}
echo "></a><br><small>$count</small>";

if ($count == $break) {
echo "\n </td>\n</tr>\n<tr>\n";
$break = $count + $colunas;
}
else { echo "</td>\n"; }
}
$count++;
}
?>
<!-- ENDOF TABLE CELL CODE PHP-->
</tr>
</table>
</div>
<hr>
<div align="CENTER">
<b>The PHP Photo Gallery</b><br>

</div>
</BODY>
</HTML>

mikeyzc
05-28-2004, 08:35 AM
here is the class.file.php3



<?
/*

File 1.0 - A wrapper class to common PHP file operations
Copyright (c) 1999 CDI, cdi@thewebmasters.net
All Rights Reserved

*/

Class File
{
var $ERROR = "";
var $BUFFER = -1;
var $STATCACHE = array();
var $TEMPDIR = '/tmp';
var $REALUID = -1;
var $REALGID = -1;

function File ()
{
global $php_errormsg;
return;
}

function clear_cache()
{
unset($this->STATCACHE);
$this->STATCACHE = array();
return true;
}

function is_sane($fileName = "", $must_exist = 0, $noSymLinks = 0, $noDirs = 0)
{
$exists = false;

if(empty($fileName)) { return false; }
if($must_exist != 0)
{
if(!file_exists($fileName))
{
$this->ERROR = "is_sane: [$fileName] does not exist";
return false;
}
$exists = true;
}
if($exists)
{
if(!is_readable($fileName))
{
$this->ERROR = "is_sane: [$fileName] not readable";
return false;
}

if($noDirs != 0)
{
if(is_dir($fileName))
{
$this->ERROR = "is_sane: [$fileName] is a directory";
return false;
}
}

if($noSymLinks != 0)
{
if(is_link($fileName))
{
$this->ERROR = "is_sane: [$fileName] is a symlink";
return false;
}
}

} // end if exists

return true;
}


// **************************************************************

function read_file ($fileName = "" )
{
$contents = "";

if(empty($fileName))
{
$this->ERROR = "read_file: No file specified";
return false;
}
if(!$this->is_sane($fileName,1,0,1))
{
// Preserve the is_sane() error msg
return false;
}
$fd = @fopen($fileName,"r");

if( (!$fd) || (empty($fd)) )
{
$this->ERROR = "read_file: File error: [$php_errormsg]";
return false;
}

$contents = fread($fd, filesize($fileName) );

fclose($fd);

return $contents;
}

// **************************************************************
// Read a file via fgetss(), which strips all php/html
// from the file.

function strip_read ($fileName = "", $strip_cr = 0)
{
if(empty($fileName))
{
$this->ERROR = "strip_read: No file specified";
return false;
}
if(!$this->is_sane($fileName,1,0,1))
{
// Preserve the error
return false;
}
if($this->BUFFER > 0)
{
$buffer = $this->BUFFER;
} else {
$buffer = filesize($fileName);
}

$contents = "";

$fd = @fopen($fileName,"r");

if( (!$fd) || (empty($fd)) )
{
$this->ERROR = "strip_read: File error: [$php_errormsg]";
return false;
}
while(!feof($fd))
{
$contents .= fgetss($fd,$buffer);
}
fclose($fd);
return $contents;
}

// **************************************************************
function write_file ($fileName,$Data)
{
$tempDir = $this->TEMPDIR;
$tempfile = tempnam( $tempDir, "cdi" );

if(!$this->is_sane($fileName,0,1,1))
{
return false;
}

if (file_exists($fileName))
{
if (!copy($fileName, $tempfile))
{
$this->ERROR = "write_file: cannot create backup file [$tempfile] : [$php_errormsg]";
return false;
}
}

$fd = @fopen( $tempfile, "a" );

if( (!$fd) or (empty($fd)) )
{
$myerror = $php_errormsg;
unlink($tempfile);
$this->ERROR = "write_file: [$tempfile] access error [$myerror]";
return false;
}

fwrite($fd, $Data);

fclose($fd);

if (!copy($tempfile, $fileName))
{
$myerror = $php_errormsg; // Stash the error, see above
unlink($tempfile);
$this->ERROR = "write_file: Cannot copy file [$fileName] [$myerror]";
return false;
}

unlink($tempfile);

if(file_exists($tempfile))
{
// Not fatal but it should be noted
$this->ERROR = "write_file: Could not unlink [$tempfile] : [$php_errormsg]";
}
return true;
}

// **************************************************************
function copy_file ($oldFile = "", $newFile = "")
{
if(empty($oldFile))
{
$this->ERROR = "copy_file: oldFile not specified";
return false;
}
if(empty($newFile))
{
$this->ERROR = "copy_file: newFile not specified";
return false;
}
if(!$this->is_sane($oldFile,1,0,1))
{
// preserve the error
return false;
}
if(!$this->is_sane($newFile,0,1,1))
{
// preserve it
return false;
}

if (! (@copy($oldFile, $newFile)))
{
$this->ERROR = "copy_file: cannot copy file [$oldFile] [$php_errormsg]";
return false;
}

return true;
}

// **********************************************

function get_files ($root_dir, $fileExt = 'ALL_FILES')
{
$fileList = array();

if(!is_dir($root_dir))
{
$this->ERROR = "get_files: Sorry, [$root_dir] is not a directory";
return false;
}

if(empty($fileExt))
{
$this->ERROR = "get_files: No file extensions specified";
return false;
}

$open_dir = @opendir($root_dir);

if( (!$open_dir) or (empty($open_dir)) )
{
$this->ERROR = "get_files: Failed to open dir [$root_dir] : $php_errormsg";
return false;
}

$fileCount = 0;

while ( $file = readdir($open_dir))
{
if( (!is_dir($file)) and (!empty($file)) )
{
if($fileExt == 'ALL_FILES')
{
$fileList[$fileCount] = $file;
$fileCount++;
}
else
{
if(eregi(".\.($fileExt)$",$file))
{
$fileList[$fileCount] = $file;
$fileCount++;
}
}
}
}

closedir($open_dir);
return $fileList;

} // end get_files

function is_owner($fileName, $uid = "")
{
if(empty($uid))
{
if($this->REALUID < 0)
{
$tempDir = $this->TEMPDIR;
$tempFile = tempnam($tempDir,"cdi");
if(!touch($tempFile))
{
$this->ERROR = "is_owner: Unable to create [$tempFile]";
return false;
}
$stats = stat($tempFile);
unlink($tempFile);
$uid = $stats[4];
}
else
{
$uid = $this->REALUID;
}
}
$fileStats = stat($fileName);
if( (empty($fileStats)) or (!$fileStats) )
{
$this->ERROR = "is_owner: Unable to stat [$fileName]";
return false;
}

$this->STATCACHE = $fileStats;

$owner = $fileStats[4];
if($owner == $uid)
{
return true;
}

$this->ERROR = "is_owner: Owner [$owner] Uid [$uid] FAILED";
return false;
}

function is_inGroup($fileName, $gid = "")
{
if(empty($gid))
{
if($this->REALGID < 0)
{
$tempDir = $this->TEMPDIR;
$tempFile = tempnam($tempDir,"cdi");
if(!touch($tempFile))
{
$this->ERROR = "is_inGroup: Unable to create [$tempFile]";
return false;
}
$stats = stat($tempFile);
unlink($tempFile);
$gid = $stats[5];
}
else
{
$gid = $this->REALGID;
}
}
$fileStats = stat($fileName);
if( (empty($fileStats)) or (!$fileStats) )
{
$this->ERROR = "is_inGroup: Unable to stat [$fileName]";
return false;
}

$this->STATCACHE = $fileStats;

$group = $fileStats[5];
if($group == $gid)
{
return true;
}

$this->ERROR = "is_inGroup: Group [$group] Gid [$gid] FAILED";
return false;
}

function get_real_uid()
{
$tempDir = $this->TEMPDIR;
$tempFile = tempnam($tempDir,"cdi");
if(!touch($tempFile))
{
$this->ERROR = "is_owner: Unable to create [$tempFile]";
return false;
}
$stats = stat($tempFile);
unlink($tempFile);
$uid = $stats[4];
$gid = $stats[5];
$this->REALUID = $uid;
$this->REALGID = $gid;
return $uid;
}

function get_real_gid()
{
$uid = $this->get_real_uid();
if( (!$uid) or (empty($uid)) )
{
return false;
}
return $this->REALGID;
}

} ?>

olaf
05-28-2004, 09:05 AM
hallo,

maybe you should tell us what's wrong...

mikeyzc
05-28-2004, 09:08 AM
Originally posted by olaf
hallo,

maybe you should tell us what's wrong...


lol..sorry....

basically it loads without error, but says there are no images, when there are actually 10 images in the source directory.