/************************************
Stand 031203_21:24
advanced gallery script
(C) Stefan Seifarth 2003
www.polycoder.de
Kommentare und Copyright-Hinweis
fairnesshalber nicht entfernen
*************************************/
error_reporting(0);
//breite der bilder in bilduebersicht in pixel
$picwidth = 780;
// anzahl thumbnails pro seite (standard = 20)
$pp = (isset($_GET["pp"]) && !empty($_GET["pp"])) ? $_GET["pp"] : 20;
// anzahl thumbnails pro seite (standard = 20)
$thumbs = (isset($_GET["thumbs"]) && !empty($_GET["thumbs"])) ? true:false;
//basisverzeichnis bestimmen
$basedir = (isset($_GET["basedir"]) && !empty($_GET["basedir"])) ? $_GET["basedir"] : ".";
$basedir = eregi_replace("\.\.\/","",$basedir);
$basedir = (isset($basedir) && !empty($basedir)) ? $basedir : ".";
//dateinamen bestimmen
$filename = (isset($_GET["filename"]) && !empty($_GET["filename"])) ? $_GET["filename"] : "";
// bildanzeigemethode definieren (standard = 2 = imagelist)
$mode = (isset($_GET["mode"]) && !empty($_GET["mode"])) ? $_GET["mode"] : 2;
// startbilder ... (standard 0 - also am anfang starten)
$start = (isset($_GET["start"]) && !empty($_GET["start"])) ? $_GET["start"] : 0;
//defintion der dateitypen, welche angezeigt werden sollen ...
$filetypes = array();
$filetypes[".gif"]["description"] = "GIF (CompuServe-Bitmap)";
$filetypes[".gif"]["webimage"] = true; //ist eine webgrafik und kann vom browser angezeigt werden
$filetypes[".jpg"]["description"] = "JPEG-Bitmap";
$filetypes[".jpg"]["webimage"] = true;
$filetypes[".jpeg"]["description"] = "JPEG-Bitmap";
$filetypes[".jpeg"]["webimage"] = true;
$filetypes[".jpe"]["description"] = "JPEG-Bitmap";
$filetypes[".jpe"]["webimage"] = true;
$filetypes[".png"]["description"] = "PNG (Portierbare Netzwerk-Grafik)";
$filetypes[".png"]["webimage"] = true;
$filetypes[".bmp"]["description"] = "BMP (Windows-Bitmap)";
$filetypes[".bmp"]["webimage"] = true;
$filetypes[".swf"]["description"] = "SWF (Macromedia Shockwave Flash)";
$filetypes[".swf"]["webimage"] = false; //kann auch auf true gesetzt werden - aber birgt u. U. Probleme
$filetypes[".avi"]["description"] = "AVI (Video)";
$filetypes[".avi"]["webimage"] = false;
//aus sicherheitsgründen standardmässig deaktiviert
/*
$filetypes[".htm"]["description"] = "HTML-Datei";
$filetypes[".htm"]["webimage"] = false;
$filetypes[".html"]["description"] = "HTML-Datei";
$filetypes[".html"]["webimage"] = false;
$filetypes[".tif"]["description"] = "TIFF-Bitmap";
$filetypes[".tif"]["webimage"] = false;
$filetypes[".tiff"]["description"] = "TIFF-Bitmap";
$filetypes[".tiff"]["webimage"] = false;
$filetypes[".psd"]["description"] = "Adobe Photoshop Datei";
$filetypes[".psd"]["webimage"] = false;
$filetypes[".pdf"]["description"] = "Portable Document File (Adobe Acrobat)";
$filetypes[".pdf"]["webimage"] = false;
$filetypes[".txt"]["description"] = "Text-Datei";
$filetypes[".txt"]["webimage"] = false;
$filetypes[".log"]["description"] = "Logfile";
$filetypes[".log"]["webimage"] = false;
*/
//los gehts
$dirs = array();
$pics = array();
$files = array();
//finde alle bilder im verzeichnis
$handle = opendir($basedir);
while ($file = readdir($handle)) {
if (!is_dir($basedir."/".$file)) {
if (file_exists($basedir."/".$file)) {
foreach ($filetypes as $k => $v) {
if (eregi($k,$file)) {
$files[] = $file;
break;
}
}
}
} else {
$dirs[] = $file;
}
}
closedir($handle);
//finde aus allen gefundenden dateien all diejenigen heraus, diewebbilder sind ...
foreach ($files as $actfile) {
foreach ($filetypes as $k => $v) {
if (eregi($k,$actfile) && $v["webimage"] == true) {
$pics[] = $actfile;
break;
}
}
}
//arrays korrekt sortieren nach dateiname ....
sort ($files);
reset ($files);
sort ($pics);
reset ($pics);
sort ($dirs);
reset ($dirs);
echo pageHeader();
echo showLocation();
echo fileTree($dirs,$files); //diese zeile mittels "//" deaktivieren, um die verzeichnis- und dateiliste nicht anzeigen zu lassen
echo showImages($pics);
echo pageFooter();
function pageHeader() {
$out = '
dynamic Picture Browser
';
return $out;
}
function pageFooter() {
$out = '';
//return $out;
}
//aktuelles verzeichnis zeigen
function showLocation() {
global $basedir;
$out = '';
$out.= '
Verzeichnis: ' . $basedir . '
';
$out.= '';
//return $out;
}
//bildzeigefunktion
function showImages($files) {
global $mode, $filename;
$out = "";
switch ($mode) {
case 1:
$out.= (strlen($filename) > 0) ? getFullImage($filename, $files) : getFullImage($files[0], $files);
break;
default:
$out.= '' . "\n";
$out.= getFullImageList($files);
$out.= '
';
break;
}
return $out;
}
//vollbild anzeige - viele files ...
function getFullImageList($files) {
global $basedir, $pp, $start, $mode, $thumbwidth, $thumbheight, $picwidth;
$out="";
$imgbasedir = ($basedir=="./") ? "" : $basedir . "/";
//navigation ....
$piccount = count($files);
$pagecount = ceil($piccount / $pp);
if ($piccount > $pp) {
$out.= 'Seite: ';
for ($i = 0; $i < $pagecount; $i++) {
$out.='
' . ($i + 1) . ' ';
}
$out.= ' (' . count($files) . ' Bilder gesamt)
' . "\n";
}
for ($i = $start; $i < $start + $pp; $i++) {
if (strlen($files[$i]) > 0) {
//bilddaten holen
$param = getimagesize($basedir . "/" . $files[$i]);
$filesize = filesize($basedir . "/" . $files[$i]);
//berechnet neue breite ...
$w = $param[0];
$h = $param[1];
if ($picwidth < $w) {
$factor = $picwidth / $w;
$w = $picwidth;
$h = $h * $factor;
}
$filesize = ceil($filesize / 1000);
$out.= '';
$out.= '' . $files[$i] . ' (' . $param[0] . 'x' . $param[1] . ') ' . $filesize . 'KB
' . "\n";
}
}
//navigation ....
$piccount = count($files);
$pagecount = ceil($piccount / $pp);
if ($piccount > $pp) {
$out.= 'Seite: ';
for ($i = 0; $i < $pagecount; $i++) {
$out.='
' . ($i + 1) . ' ';
}
$out.= ' (' . count($files) . ' Bilder gesamt)
' . "\n";
}
return $out;
}
//einzel vollbild
function getFullImage($filename, $files) {
global $basedir, $start, $pp, $picwidth;
$othershit = "&pp=" . $pp;
$othershit.= "&start=" . $start;
$out = "";
$imgbasedir = ($basedir == "./") ? "" : $basedir . "/";
$param = array();
$filesize = 0;
$out.= '';
if (file_exists($basedir . "/" . $filename)) {
//hole bildgrösse
$param = getImageSize($basedir . "/" . $filename);
$filesize = filesize($basedir . "/" . $filename);
//gib das flash aus
if (eregi(".swf",$filename)) {
$out.= '
';
} else { //gib das bild aus
$out.= '
';
}
} else {
$out .= '
Datei "' . $filename . '" exisitiert nicht!
'."\n";
}
$filesize = ceil($filesize / 1000);
$out.='
' . $filename . ' (' . $param[0] . 'x' . $param[1] . ') ' . $filesize . 'KB
' . "\n";
$out.='
' . "\n";
// vor- / zuücknavigation unten
$prevpic = 0;
$nextpic = 0;
for ($i = 0; $i < count($files); $i++) {
if ($filename == $files[$i]) {
$prevpic = $i - 1;
$nextpic = $i + 1;
break;
}
}
$prevpic = ($prevpic < 0) ? count($files) - 1 : $prevpic;
$nextpic = ($nextpic >= count($files)) ? 0 : $nextpic;
$out.= '' . "\n";
$out.= '
' . "\n";
$out.="
\n";
return $out;
}
//erzeuge uebersicht des dateibaumes
function fileTree($dirs, $files) {
global $filetypes, $mode, $start, $pp, $basedir, $filename;
//vorhergehendes verzeichnis ermitteln
$prevbasedir = ".";
if (strlen($basedir)>0) {
$ta = split("\/", $basedir);
if (count($ta) > 1) {
array_pop($ta);
$prevbasedir = join("/", $ta);
}
}
$othershit = ($pp != 10) ? "&pp=" . $pp : "";
$othershit.= ($start != 0) ? "&start=" . $start : "";
$t = 1;
$out = "";
if (count($dirs) > 0 || count($files) > 0) {
//container erzeugen
$out = '' . "\n";
//tabelle erzeugen
$out.= '
' . "\n";
$out.= 'Dateiname | Beschreibung |
' . "\n";
//erzeuge verzeichnissliste
for ($i=0; $i < count($dirs); $i++) {
$newbasedir = (strlen($basedir) > 0 && $basedir != "./") ? (($dirs[$i] == ".." || $dirs[$i] == ".") ? (($dirs[$i] == "..") ? $prevbasedir : "." ) : $basedir . "/" . $dirs[$i]) : "./" . $dirs[$i];
$out.= '' . $dirs[$i] . ' | Verzeichnis |
' . "\n";
$t = ($t == 1) ? 2 : 1;
}
//erzeuge dateiliste
for ($i = 0; $i < count($files); $i++) {
//dateiart bestimmen
$actFileType = "unbestimmte Datei";
foreach ($filetypes as $k => $v) {
if (eregi($k, $files[$i])) {
$actFileType = $v["description"];
//ausgabe
if ($v["webimage"] == true) {
$out.= '' . $files[$i] . ' | ' . $actFileType . ' |
' . "\n";
} else {
$out.= '' . $files[$i] . ' | ' . $actFileType . ' |
' . "\n";
}
$t = ($t == 1) ? 2 : 1;
break;
}
}
}
$out.= '
' . "\n";
$out.= '
' . "\n";
}
//return $out;
}
?>