Subject: Photo script
He Carbonize, hope you can/wil help me with this one:
I've an Photo script witch i'm very happy with, but....The scripts automaticaly creates a list of galleries. But the script (php) is sorting it from A.....Z. Now i want him to sort on date/time when the galleries where created....I was looking for the sort funtction. I've tried te change the sort function but i can't do it....
Is this easy or diffecult?
The script:
file 1: show_foto.php
File 2: Fotoalbum.php
I've an Photo script witch i'm very happy with, but....The scripts automaticaly creates a list of galleries. But the script (php) is sorting it from A.....Z. Now i want him to sort on date/time when the galleries where created....I was looking for the sort funtction. I've tried te change the sort function but i can't do it....
Is this easy or diffecult?
The script:
file 1: show_foto.php
<?php
//
// show_foto.php
//
//
include("../inc/head.inc.php");
?>
<div align="center">
<?php
// Is er om een specifiek album gevraagd...?
if (isset($_GET['album'])) {
$album = $_GET['album'];
} else {
echo "<H2> Fout ! </H2>\n";
echo "<p>Geen album aangevraagd.</p>\n";
echo "</body></html>\n";
exit;
}
// Is er een niet bestaand album gevraagd...?
if ($album != "" && !is_dir($album)) {
// Foutmelding weergeven
echo "<h2>Fout:</h2>\n";
echo "<p>Het door u gevraagde album bestaat niet.</p>\n";
echo "</body></html>\n";
exit;
}
if (isset($_GET['fotonr'])) {
$fotonr = $_GET['fotonr'];
} else {
$fotonr = 0;
}
// indexen op nul zetten
$aantal_fotos = 0;
// Huidige directory openen
$mydir = opendir($album);
// Alle bestanden in de huidige directory doorlopen
while ($filename = readdir($mydir)) {
// Alle plaatjes in array opslaan
if (is_file ($album."/".$filename) && eregi("\.jpg$|\.jpeg$|\.gif$|\.bmp$|\.png$", $filename)) {
$foto[$aantal_fotos] = $filename;
$aantal_fotos++;
}
}
// Directory weer sluiten...
closedir($mydir);
// Foto's pagina weergeven
if ($aantal_fotos == 0) {
// Foutmelding weergeven
echo "<h2>Fout:</h2>\n";
echo "<p>Er bestaan geen foto's in dit album...</p>\n";
echo "</body></html>\n";
exit;
}
if ($fotonr > $aantal_fotos) {
// Foutmelding weergeven
echo "<h2>Fout:</h2>\n";
echo "<p>Gevraagde foto bestaat niet...</p>\n";
echo "</body></html>\n";
exit;
}
if ($fotonr < 0) {
// Foutmelding weergeven
echo "<h2>Fout:</h2>\n";
echo "<p>Gevraagde foto bestaat niet...</p>\n";
echo "</body></html>\n";
exit;
}
// sorteren op alfabet...
sort ($foto);
ClearStatCache();
// Afmetingen van foto bepalen...
$size = GetImageSize("$album/$foto[$fotonr]");
$size[0] = $size[0] + 35;
$size[1] = $size[1] + 100; //was 85
echo "<script type=\"text/javascript\" language=\"JavaScript\">\n";
echo "<!--\n";
echo "\twindow.resizeTo($size[0],$size[1]);\n";
echo "//-->\n";
echo "</script>\n";
// Extensie van bestand afhakken, en daarna alle "_" vervangen door " "
$display = eregi_replace(".jpg|.jpeg|.gif|.bmp|.png", "", $foto[$fotonr]);
$display = eregi_replace("_", " ", $display);
echo "<table border=0>\n";
echo "<tr><td colspan=2>\n";
echo "<img src=\"$album/$foto[$fotonr]\" />\n";
echo "</td></tr>\n";
$nextfoto = ($fotonr + 1);
$prevfoto = ($fotonr - 1);
// bepalen of er wel of geen volgende en vorige moeten worden weergegeven...
if ($nextfoto < $aantal_fotos) {
$volgende = "<a href=?album=$album&fotonr=$nextfoto>Volgende </a>";
} else {
$volgende = " ";
}
if ($fotonr != 0) {
$vorige = "<a href=?album=$album&fotonr=$prevfoto>Vorige </a>";
} else {
$vorige = " ";
}
// Footer, dit staat onder de tabel.
echo "<tr><td align=right width=50%> $vorige </td>\n";
echo "<td align=left width=50%> $volgende </td>\n";
echo "</tr>\n";
echo "</table>\n";
?>
</div>
</body>
</html>
File 2: Fotoalbum.php
<?php
// Is er om een specifiek album gevraagd...?
if (isset($_GET['album'])) {
$album = $_GET['album'];
} else {
$album = ".";
}
// Is er om een specifieke pagina gevraagd...?
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 0;
}
// Configuratie
$cols = "4"; // Aantal kolommen
$rows = "3"; // aantal rijen
$max_thumb_width = "120"; // Maximale breedte van een thumbnail
$max_thumb_height = "90"; // Maximale hoogte van een thumbnail
$thumbs = "$album/thumbs"; // directory waar thumbnails in staan
$header = eregi_replace("_", " ", $album);
if ($cols % 2 == 0) {
$colspan = "";
} else {
$colspan = "colspan=2";
}
include("../inc/head.inc.php");
?>
<div align="center">
<?php
// Is er een niet bestaand album gevraagd...?
if ($album != "" && !is_dir($album)) {
// Foutmelding weergeven
echo "<h2>Fout:</h2>\n";
echo "<p>Het door u gevraagde album bestaat niet. Selecteer een album uit de lijst hieronder.</p>\n";
// Album leegmaken, zodat album-overzicht wordt weergegeven
$album = ".";
}
// Huidige directory openen
$mydir = opendir($album);
// indexen op nul zetten
$aantal_subdirs = 0;
$aantal_fotos = 0;
// Alle bestanden in de huidige directory doorlopen
while ($filename = readdir($mydir)) {
// Alle subdirectories in array opslaan
if (is_dir($album."/".$filename) && $filename != "." && $filename != ".." && $filename != "thumbs") {
$subdir[$aantal_subdirs] = $filename;
$aantal_subdirs++;
}
// Alle plaatjes in array opslaan
if (is_file ($album."/".$filename) && eregi("\.jpg$|\.jpeg$|\.gif$|\.bmp$|\.png$", $filename)) {
$foto[$aantal_fotos] = $filename;
$aantal_fotos++;
}
}
// Directory weer sluiten...
closedir($mydir);
// Directory structuur vastleggen in array...
$map = $album;
$i = 1;
$directory_tree[0] = $map;
while ($map != ".") {
$last_slash_pos = strlen($map) - strpos(strrev($map), "/");
$map = substr ($map, 0, $last_slash_pos - 1);
$directory_tree[$i] = $map;
$i++;
}
// Rij met links naar albumoverzicht/subalbums weergeven....
for ($i = count ($directory_tree) - 1 ; $i >= 0; $i--) {
$last_slash_pos = strlen($directory_tree[$i]) - strpos(strrev($directory_tree[$i]), "/");
$directory_name = substr($directory_tree[$i], $last_slash_pos);
$directory_name = eregi_replace("_", " ", $directory_name);
if ($directory_name != "") {
//echo " > ";
}
//echo "<a href='../foto.php'>";//echo "<a href='?album=$directory_tree[$i]'>";
if ($directory_name != "") {
// echo $directory_name;
} else {
// echo "Foto album";
}
//echo "</a>";
}
//echo "<hr><br>";
// Subalbums weergeven :
if ($aantal_subdirs > 0) {
sort ($subdir);
echo "<table>\n";
for ($i =0; $i < $aantal_subdirs; $i++) {
$directory_name = eregi_replace("_", " ", $subdir[$i]);
echo "<tr><td><a href=?album=$album/$subdir[$i]>$directory_name</a></td></tr>\n";
}
echo "</table>";
}
// Foto's pagina weergeven
if ($aantal_fotos > 0) {
// sorteren op alfabet...
sort ($foto);
// eerste en laatste foto op deze pagina bepalen...
$eerste_foto = (($page * $cols * $rows) + 1);
$laatste_foto = (($page + 1) * $cols * $rows);
// tabel beginnen...
echo "<table border=0 cellpadding=10 cellspacing=0><tr>\n";
// alleen foto's tussen eerste en laatste foto afdrukken...
for ($i = $eerste_foto - 1; ($i < $aantal_fotos) && ($i < $laatste_foto); $i++) {
ClearStatCache();
// Afmetingen van foto bepalen...
$size = GetImageSize("$album/$foto[$i]");
// Afmeting van Window bepalen...
$size[0] = $size[0] + 25;
$size[1] = $size[1] + 45;
// bestandsgrootte bepalen...
$file_size = fileSize("$album/$foto[$i]");
$file_size = round($file_size / 1000) . "k";
// Extensie van bestand afhakken, en daarna alle "_" vervangen door " "
$display = eregi_replace(".jpg|.jpeg|.gif|.bmp|.png", "", $foto[$i]);
$display = eregi_replace("_", " ", $display);
// Veld in tabel weergeven...
echo ("<td $colspan><a href=\"$album/$foto[$i]\" onmouseover=\"window.status='Vergroten';return true;\"
onmouseout=\"window.status=''; return true\"
onclick=\"window.open('show_foto.php?album=$album&fotonr=$i', 'pix$i', 'width=$size[0], height=$size[1], innerwidth=$size[0], innerheight=$size[1], directories=no, location=no, menubar=no, scrollbars=no, status=no, toolbar=no, resizable=no, top=0, left=0, leftmargin=0, topmargin=0, marginwidth=0, marginheight=0, screenX=0, screenY=0' ); return false\">\n");
$entry_without_ext = eregi_replace("\.jpg$|\.jpeg$|\.gif$|\.bmp$|\.png$", "", $foto[$i]);
// Bestaat thumb?
switch (true) {
case (is_file($thumbs."/".$entry_without_ext.".jpg")):
$thumbnail = $thumbs."/".$entry_without_ext.".jpg";
break;
case (is_file($thumbs."/".$entry_without_ext.".jpeg")):
$thumbnail = $thumbs."/".$entry_without_ext.".jpeg";
break;
case (is_file($thumbs."/".$entry_without_ext.".gif")):
$thumbnail = $thumbs."/".$entry_without_ext.".gif";
break;
case (is_file($thumbs."/".$entry_without_ext.".bmp")):
$thumbnail = $thumbs."/".$entry_without_ext.".bmp";
break;
case (is_file($thumbs."/".$entry_without_ext.".png")):
$thumbnail = $thumbs."/".$entry_without_ext.".png";
break;
default:
$thumbnail = "";
}
if ($thumbnail == "") {
// Thumb bestaat niet
if (! eregi("\.jpg$|\.jpeg$", $foto[$i])) {
// Andere formaten dan jpg of jpeg zitten niet ingebouwd...
echo "Geen thumbnail beschikbaar...<br>\n";
} else {
// Voor jpg/jpeg formaat: thumbnail maken
////echo "Nog geen thumbnail beschikbaar, wacht tot deze is aangemaakt...<br>\n";
// Als nog geen directory voor de thumbs bestaat, deze aanmaken...
if (! is_dir ($thumbs)) {
mkdir("$thumbs");
}
// Thumbs aanmaken kan even duren, voor iedere thumb de timeout klok
// resetten, en een maximum van 20 seconden per thumb instellen.
set_time_limit(20);
// Voorlopig alleen jpp/jpeg support...
// Voor het aanmaken van thumbs bij gif en png, moet hier wat worden bijgebouwd...
$photo = imagecreatefromjpeg ("$album/$foto[$i]");
// afmetingen bepalen
$photo_width = imagesx ($photo);
$photo_height = imagesy ($photo);
// minimaal een van de afmetingen is groter dan $max_thumb..?
if ($photo_width > $max_thumb_width || $photo_height > $max_thumb_height) {
// langwerpiger dan thumb??
if ($photo_width / $photo_height > $max_thumb_width / $max_thumb_height) {
// Langwerpiger dan thumb, de breedte van de thumb is bepalend
$new_thumb_width = $max_thumb_width;
// Hoogte berekenen:
$value = $photo_width / $max_thumb_width;
$new_thumb_height = round ($photo_height / $value);
} else { // niet langwerpiger...
// De hoogte van de thumb is bepalend...
$new_thumb_height = $max_thumb_height;
// Breedte berekenen
$value = $photo_height / $max_thumb_height;
$new_thumb_width= round ($photo_width / $value);
}
} else {
// Foto is al klein genoeg, afmetingen worden overgenomen
$new_thumb_width = $photo_width;
$new_thumb_height = $photo_height;
}
// plaatje aanmaken, met de juiste afmetingen...
$create_thumb = imagecreatetruecolor ($new_thumb_width, $new_thumb_height);
// Plaatje kopieren en "resamplen"
imagecopyresampled (
$create_thumb,
$photo,
0, 0, 0, 0,
$new_thumb_width,
$new_thumb_height,
$photo_width,
$photo_height);
// Bestand wegschrijven
ImageJpeg ($create_thumb, $thumbs."/".$entry_without_ext.".jpg", 90);
// thumbnail bestaat nu toch...
$thumbnail = $thumbs."/".$entry_without_ext.".jpg";
// Geheugen opschonen
Imagedestroy($photo);
} // endif: Formaat van foto = jpg of jpeg
} // endif: Thumbnail bestaat niet
$thumbsize = GetImageSize($thumbnail);
// Thumbnail weergeven...
echo "<img src='$thumbnail' border=0 width=$thumbsize[0] height=$thumbsize[1] alt=$i>\n";
// Titel onder thumbnail weergeven...
echo "</a><br>$display<br><br></td>\n\n";
// Einde van de row...?
if (($i % $cols) == $cols -1 ) {
echo "</tr>\n<tr>\n";
}
} // endfor: Alle plaatjes doorlopen...
$pages = ($aantal_fotos / ($cols * $rows));
$nextpage = ($page + 1);
$prevpage = ($page - 1);
// bepalen of er wel of geen volgende en vorige moeten worden weergegeven...
if (($page + 1) < $pages) {
// aantal op volgende pagina berekenen:
$aantal_op_volgende = $aantal_fotos - $nextpage * $rows * $cols;
// wanneer dit meer dan het aantal op één pagina is, dit terugschroeven tot het aantal op één pagina.
if ($aantal_op_volgende > $rows * $cols) {
$aantal_op_volgende = $rows * $cols;
}
// aantal op volgende is 1: in enkelvoud weergeven, anders aantal specificeren.
if ($aantal_op_volgende == 1) {
$volgende = "<a href=?album=$album&page=$nextpage>Volgende foto </a>";
} else {
$volgende = "<a href=?album=$album&page=$nextpage>Volgende ". $aantal_op_volgende ." foto's </a>";
}
} else {
$volgende = "";
}
if (($page+1) > "1") {
// aantal op vorige is 1: in enkelvoud weergeven, anders aantal specificeren.
if ($rows * $cols > 1) {
$vorige = "<a href=?album=$album&page=$prevpage>Vorige ". ($rows * $cols) ." foto's </a>";
} else {
$vorige = "<a href=?album=$album&page=$prevpage>Vorige foto </a>";
}
} else {
$vorige = "";
}
if ($cols % 2 == 1) {
$footer_colspan = "colspan=$cols";
} else {
$footer_colspan = "colspan=" . ($cols / 2);
}
// Footer, dit staat onder de tabel.
echo "</tr><tr><td $footer_colspan align=right> $vorige </td>\n";
echo "<td $footer_colspan align=left> $volgende </td>\n";
echo "</tr>\n";
echo "</table>\n";
} // endif: Fotoalbum afdrukken...?
?>
</div>
</body>
</html>