Replaced deprecaded Expires headers by Cache-Control
[bizou.git] / index.php
index e6ab0c1..708a9e3 100644 (file)
--- a/index.php
+++ b/index.php
 <?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>
+?>