Pages

Tuesday, April 15, 2008

Grab images from a menalto gallery

I needed to grab images, 3 at a time, from a menalto gallery and put them on the bottom of other pages. This could be an include were $dir is specified and "albumname" could be changed to $albumname. I judge my own code to be a bit sloppy, but it works. Maybe this will point someone in the right direction.

It detects going too far previous or too far "next". It allows for counted pages. If the number of pages is not divisible by 3, the last page is handled correctly. The numbered page you are on is not a link. There is a previous and next link that appear only when applicable. The links have the rel="nofollow" attribute so that the S.E.s don't find a bunch of basically duplicate pages.

Admittedly this would be better with colorized text, but here's a quick rendering of it. (if you copy this, be sure to paste it into a text only editor.)

<?php

$dir = 'gallery/albums/albumname';



$photosdb=@file($dir.'/photos.dat');

$count=0;

foreach($photosdb as $line){

$newphotosdb.=$line;

//echo $photosdb[$count];



$count++;

}



$newphotosdb=explode('"emailMe";N;}',$newphotosdb);



$counta=0;

foreach($newphotosdb as $photo){

list($null,$name,$null2)=explode('"name"',$photo);

list($null,$name,$null2)=explode('"',$name);





list($null,$caption)=explode('caption";s',$photo);

list($null,$caption,$null2)=explode('"',$caption);

//list($caption,$null)=explode('";s',$caption);

//echo("$counta $photo<br><br>");

$captions[$name]=$caption;

$counta++;

}



// open specified directory

$dirHandle = opendir($dir);

$count = -1;

$returnstr = "";

while ($file = readdir($dirHandle)) {

// if not a subdirectory and if filename contains the string '.jpg' or '.jpeg'

if(!is_dir($file) && (strpos($file, '.jpg')>0 strpos($file, '.jpeg')>0)&&
ereg('thumb',$file)) {

// update count and string of files to be returned

$count++;



$returnstr[$count]=$file;

}

}

//$returnstr .= '&';

//echo $returnstr;

closedir($dirHandle);

//echo("begin corry test");

$countb=0;

// foreach ($returnstr as $link){

// $countb++;

// $unthumb=str_replace('.thumb.jpg','',$link);

// $unthumb=str_replace('.thumb.jpeg','',$link);

// echo('<a target="_blank" href="http://www.mysite.com/gallery/albumname/'.$unthumb.'"><img
border="0" src="'.$dir.'/'.$link.'"></a> '.$countb.'<br>');

// }

//echo count($returnstr);

$num_of_images=count($returnstr)-1; // I actually mis-named this variable, but
it made sense (to me) at the time. It is actually the highest index number in
the array.

if($_GET['startimage']=="" $_GET['startimage']<0){$startimage="0";}else{$startimage=$_GET['startimage'];}

if($startimage > $num_of_images){$startimage=$num_of_images;}

// full size images are loaded with a SEFU. Take out "thumb" for full size image
and ".jpg" for SEFU.

$unthumb1=str_replace('.thumb.jpg','',$returnstr[$startimage]);$unthumb1=str_replace('.thumb.jpeg','',$unthumb1);

if(count($returnstr)>=$startimage+1){$unthumb2=str_replace('.thumb.jpg','',$returnstr[$startimage+1]);$unthumb2=str_replace('.thumb.jpeg','',$unthumb2);}

if(count($returnstr)>=$startimage+2){$unthumb3=str_replace('.thumb.jpg','',$returnstr[$startimage+2]);$unthumb3=str_replace('.thumb.jpeg','',$unthumb3);}

?>

<table border="1" cellpadding="3" cellspacing="0" style="border-collapse:
collapse" bordercolor="#111111" width="500" id="AutoNumber1">

<tr>

<td width="33%" align="center">

<p align="center"><?php echo('<a target="_blank" href="http://www.mysite.com/gallery/ambumname/'.$unthumb1.'"><img
border="0" src="'.$dir.'/'.$returnstr[$startimage].'"></a>');?></td>

<?php if($num_of_images>=$startimage+1){ ?>

<td width="33%" align="center"><?php echo('<a target="_blank" href="http://www.mysite.com/gallery/albumname/'.$unthumb2.'"><img
border="0" src="'.$dir.'/'.$returnstr[$startimage+1].'"></a>');?></td>

<?php }?>

<?php if($num_of_images>=$startimage+2){ ?>

<td width="34%" align="center"><?php echo('<a target="_blank" href="http://www.mysite.com/gallery/albumname/'.$unthumb3.'"><img
border="0" src="'.$dir.'/'.$returnstr[$startimage+2].'"></a>');?></td>

<?php }?>

</tr>

<tr>

<?php // the $unthumb variable happen to have the filname without extension,
which I need here as an array index.

?>

<td width="33%" align="center"><?php echo($captions[$unthumb1]); ?></td>

<?php if($num_of_images>=$startimage+1){ ?>

<td width="33%" align="center"><?php echo($captions[$unthumb2]); ?></td>

<?php }?>

<?php if($num_of_images>=$startimage+2){ ?>

<td width="34%" align="center"><?php echo($captions[$unthumb3]); ?></td>

<?php }?>

</tr>

</table>

<?php

if ($startimage > 0){$previmage=$startimage-3;

echo ("<a rel=\"nofollow\" href=\"http://www.mysite.com/image_grabber.php?startimage=$previmage\">previous</a>&nbsp;");

}

$pages=ceil(($num_of_images+1)/3);

$pagenum=1;

$start=0;

while($pagenum<=$pages)

{

if($start==$startimage){echo("$pagenum \n");}else{

echo ("<a rel=\"nofollow\" href=\"http://www.mysite.com/image_grabber.php?startimage=$start\">$pagenum</a>\n");

}

$pagenum++;

$start=$start+3;

}

if($num_of_images > $startimage+2){

$nextimage=$startimage+3;

echo ("<a href=\"http://www.mysite.com/image_grabber.php?startimage=$nextimage\">next</a>\n");

}

?>

No comments: