Replaced deprecaded Expires headers by Cache-Control
[bizou.git] / index.php
index 489e7b1..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;
+/*
+    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();
 }
 
-.square {
-       display: inline-block;
-}
-
-.image {
-       width: 100px;
-       height: 100px;
-       display: table-cell;
-       text-align: center;
-       vertical-align: middle;
-}
-</style>
-</head>
-<body>
-
-<?php
-
-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;
-               }
-
-               # create the thumbs directory recursively
-               if (! is_dir(dirname($newImgFile))) mkdir(dirname($newImgFile), 0777, true);
+// simplePath is the simple path to the directory
+// extract /path/to/dir/ from /index.php/path/to/dir/
+$simplePath = getPathInfo();
 
-               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);
-       }
+# realDir is the directory in filesystem
+# seen from current script directory
+$realDir = IMAGES_DIR.$simplePath;
 
-       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"))
        {
-               $folders[] = array( "name" => $file, "link" => "$scriptUrlPath$shortPath/$file", "preview" => getAlbumPreview("$realDir/$file") );
+               $folders[] = array( "name" => $file, "file" => "$realDir/$file", "link" => "$scriptUrl$simplePath/$file" );
        }
        else
        {
-               $mime = mime_content_type("$realDir/$file");
-
-               if ($mime == "image/jpeg")
-                       $imageFiles[] = array( "name" => $file, "url" => getPreview("$realDir/$file", 100), "link" => dirname($scriptUrlPath)."/view/$shortPath/$file" );
-               else
-                       $otherFiles[] = array( "name" => $file, "link" => dirname($scriptUrlPath)."/$realDir/$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" );
+               }
        }
 }
 
-?>
+if (dirname($simplePath) !== '')
+       $parentLink = $scriptUrl.dirname($simplePath);
+else
+       $parentLink = "";
 
-<?php foreach($folders as $folder) { ?>
-       <div class="folder">
-       <a href="<?php echo $folder["link"] ?>">
-       <?php if ($folder["preview"] !== "") { ?>
-               <img src="<?php echo $folder["preview"] ?>" />
-       <?php } ?>
-       <?php echo $folder["name"] ?>
-       </a>
-       </div>
-<?php } ?>
-
-<?php foreach ($imageFiles as $file) { ?>
-       <div class="square"><div class="image"><a href="<?php echo $file["link"] ?>"><img src="<?php echo $file["url"] ?>" alt="<?php echo $file["name"] ?>" /></a></div></div>
-<?php } ?>
-
-<?php foreach ($otherFiles as $file) { ?>
-       <div class="miscfile"><a href="<?php echo $file["link"] ?>"><?php echo $file["name"] ?></a></div>
-<?php } ?>
-
-</body>
-</html>
+///// template starts here /////
+header('Content-Type: text/html; charset=utf-8');
+header('Cache-Control: max-age=3600');
+
+require 'template.php';
+
+?>