<?php
-header('Content-Type: text/html; charset=utf-8');
-header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));
-?>
-<html>
-<head>
-<style type="text/css">
-img {
- border: 0;
- vertical-align: middle;
-}
-
-.square {
- display: inline-block;
-}
-
-.image {
- width: 100px;
- height: 100px;
- display: table-cell;
- text-align: center;
- vertical-align: middle;
+/*
+ Bizou - a (french) KISS php image gallery
+ Copyright (C) 2010 Marc MAURICE
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+*/
+
+require 'config.php';
+
+// global variables, globals should remain contant
+$scriptUrl = $_SERVER["SCRIPT_NAME"];
+$rootUrl = dirname($scriptUrl);
+if (substr($rootUrl, -1) !== '/') $rootUrl.='/'; // add a trailing / to rootUrl
+// $scriptUrl = "/path/to/bizou/index.php"
+// $rootUrl = "/path/to/bizou/"
+
+require 'functions.php';
+
+
+// if url == http://localhost/photos/index.php/toto/titi, path_info == /toto/titi
+// if url == http://localhost/photos/index.php, path_info is not set
+// if url == http://localhost/photos/, path_info is not set
+// if path_info is not set, we are at top level, so we redirect to /photos/index.php/
+if (! isset($_SERVER["PATH_INFO"])) {
+ header("Location: $scriptUrl/");
+ exit();
}
-</style>
-</head>
-<body>
-<?php
+// simplePath is the simple path to the directory
+// extract /path/to/dir/ from /index.php/path/to/dir/
+$simplePath = getPathInfo();
-function getPreview($imgFile, $maxSize)
-{
- # example: data/myalbum/100.mypic.jpg
- $newImgFile = "data/".dirname($imgFile)."/".$maxSize.".".basename($imgFile);
-
- if (! is_file($newImgFile))
- {
- $img = imagecreatefromjpeg($imgFile);
-
- $w = imagesx($img);
- $h = imagesy($img);
- # don't do anything if the image is already small
- if ($w <= $maxSize and $h <= $maxSize) {
- imagedestroy($img);
- return $imgFile;
- }
+# realDir is the directory in filesystem
+# seen from current script directory
+$realDir = IMAGES_DIR.$simplePath;
- # create the thumbs directory recursively
- if (! is_dir(dirname($newImgFile))) mkdir(dirname($newImgFile), 0777, true);
-
- if ($w > $h) {
- $newW = $maxSize;
- $newH = $h/($w/$maxSize);
- } else {
- $newW = $w/($h/$maxSize);
- $newH = $maxSize;
- }
-
- $newImg = imagecreatetruecolor($newW, $newH);
-
- imagecopyresampled($newImg, $img, 0, 0, 0, 0, $newW, $newH, $w, $h);
-
- imagejpeg($newImg, $newImgFile);
-
- imagedestroy($img);
- imagedestroy($newImg);
- }
-
- return dirname($_SERVER["SCRIPT_NAME"])."/".$newImgFile;
+if (! is_dir($realDir)) {
+ header("HTTP/1.1 404 Not Found");
+ die("Directory Not Found");
}
-function getAlbumPreview($dir)
-{
- foreach (scandir($dir) as $file) if ($file != '.' and $file != '..') {
- if (mime_content_type("$dir/$file") == "image/jpeg")
- return getPreview("$dir/$file", 100);
- }
-
- return '';
-}
-
-$shortPath = isset($_SERVER["PATH_INFO"]) ? $_SERVER["PATH_INFO"] : "";
-if ($shortPath == '/') $shortPath = '';
-$scriptUrlPath = substr($_SERVER["SCRIPT_NAME"], 0, -4); // trim .php
-
+$folders = array();
$imageFiles = array();
$otherFiles = array();
-$realDir = "images$shortPath";
-
-foreach (scandir($realDir) as $file) if ($file != '.')
+foreach (scandir($realDir) as $file) if ($file[0] != '.')
{
- if ($file == '..')
- {
- echo "<div><a href=\"$scriptUrlPath".dirname($shortPath)."/\">..</a></div>\n";
- }
- elseif (is_dir("$realDir/$file"))
+ if (is_dir("$realDir/$file"))
{
- echo "<div>";
- $preview = getAlbumPreview("$realDir/$file");
- if ($preview !== '') {
- echo "<img src=\"$preview\" /> ";
- }
-
- echo "<a href=\"$scriptUrlPath$shortPath/$file\">$file</a>";
- echo "</div>\n";
+ $folders[] = array( "name" => $file, "file" => "$realDir/$file", "link" => "$scriptUrl$simplePath/$file" );
}
else
{
- $mime = mime_content_type("$realDir/$file");
-
- if ($mime == "image/jpeg")
- $imageFiles[] = $file;
- else
- $otherFiles[] = $file;
+ $ext = strtolower(substr($file, -4));
+ if ($ext == ".jpg" or $ext == ".png") {
+ $imageFiles[] = array( "name" => $file, "file" => "$realDir/$file", "link" => getImageLink("$simplePath/$file") );
+ } else {
+ $otherFiles[] = array( "name" => $file, "link" => "$rootUrl$realDir/$file" );
+ }
}
}
-foreach ($imageFiles as $file) {
- echo "<div class=\"square\"><div class=\"image\"><a href=\"".dirname($scriptUrlPath)."/view/$shortPath/$file\"><img src=\"".getPreview("$realDir/$file", 100)."\" /></a></div></div>\n";
-}
+if (dirname($simplePath) !== '')
+ $parentLink = $scriptUrl.dirname($simplePath);
+else
+ $parentLink = "";
-foreach ($otherFiles as $file) {
- echo "<div><a href=\"".dirname($scriptUrlPath)."/$realDir/$file\">$file</a></div>\n";
-}
+///// template starts here /////
+header('Content-Type: text/html; charset=utf-8');
+header('Cache-Control: max-age=3600');
-?>
+require 'template.php';
-</body>
-</html>
+?>