From b497c8ebcab3d91b552b3ada2ea6e5658ba9952c Mon Sep 17 00:00:00 2001 From: Marc MAURICE Date: Wed, 27 Jul 2011 22:59:36 +0200 Subject: [PATCH] functions put in a separate file, so that they can be used by plugins put the getPathInfo code in a function --- functions.php | 134 +++++++++++++++++++++++++++++++++++++++++++++ index.php | 137 +++-------------------------------------------- plugins/viewer/view.php | 8 ++- 3 files changed, 145 insertions(+), 134 deletions(-) create mode 100644 functions.php diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..162b01e --- /dev/null +++ b/functions.php @@ -0,0 +1,134 @@ + $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); + + if ($ext == ".jpg") + imagejpeg($newImg, $newImgFile); + else + imagepng($newImg, $newImgFile); + + imagedestroy($img); + imagedestroy($newImg); + } + + return $newImgFile; +} + +function getAlbumPreview($dir) +{ + $previewFile = DATA_DIR."/$dir/albumpreview"; + + if (is_file("$previewFile.jpg")) { + return "$previewFile.jpg"; + } else if (is_file("$previewFile.empty")) { + return ""; + } else if (is_file("$previewFile.png")) { + return "$previewFile.png"; + } else { + # uncomment this if you need group writable files + #umask(0002); + # create the thumbs directory recursively + if (! is_dir(dirname($previewFile))) mkdir(dirname($previewFile), 0777, true); + + // no preview: look for a preview in current dir, write it, return it + foreach (scandir($dir) as $file) if ($file != '.' and $file != '..') { + $ext = strtolower(substr($file, -4)); + if ($ext == ".jpg" or $ext == ".png") { + $thumb = getPreview("$dir/$file"); + copy($thumb, $previewFile.$ext); + return $previewFile.$ext; + } else if (is_dir("$dir/$file")) { + $subPreview = getAlbumPreview("$dir/$file"); + if ($subPreview) { + $myPreview = dirname($previewFile)."/".basename($subPreview); + copy($subPreview, $myPreview); + return $myPreview; + } + } + } + + // nothing found. create empty file + touch("$previewFile.empty"); + return ""; + } +} + +?> diff --git a/index.php b/index.php index f028451..d598060 100644 --- a/index.php +++ b/index.php @@ -26,126 +26,8 @@ if (substr($rootUrl, -1) !== '/') $rootUrl.='/'; // add a trailing / to rootUrl // $scriptUrl = "/path/to/bizou/index.php" // $rootUrl = "/path/to/bizou/" -// load plugins -$plugins = array(); -if (is_dir("plugins")) { - $plugins = scandir("plugins"); - array_shift($plugins); array_shift($plugins); // remove . and .. - foreach ($plugins as $p) if (is_file("plugins/$p/functions.php")) - require "plugins/$p/functions.php"; -} - -function plugins_include($phpFile) -{ - foreach ($GLOBALS['plugins'] as $p) if (is_file("plugins/$p/$phpFile")) - require "plugins/$p/$phpFile"; -} - -if (! function_exists('getImageLink')) { -function getImageLink($imageSimplePath) -{ - return $GLOBALS['rootUrl'].IMAGES_DIR.$imageSimplePath; -} -} - -function getPreview($imgFile, $maxSize = THUMB_SIZE) -{ - # example: data/myalbum/100.mypic.jpg - $newImgFile = DATA_DIR."/".dirname($imgFile)."/".$maxSize.".".basename($imgFile); - - # if the preview is a symlink, image is already good sized - if (is_link($newImgFile)) return $imgFile; - - if (! is_file($newImgFile)) - { - # this tels the template to flush output after displaying previews - $GLOBALS["generating"] = true; - - # reset script time limit to 20s (wont work in safe mode) - set_time_limit(20); - - $ext = strtolower(substr($imgFile, -4)); - if ($ext == ".jpg") - $img = imagecreatefromjpeg($imgFile); - else - $img = imagecreatefrompng($imgFile); - - $w = imagesx($img); - $h = imagesy($img); - # if the image is already small, make a symlink, and return it - if ($w <= $maxSize and $h <= $maxSize) { - imagedestroy($img); - symlink($imgFile, $newImgFile); - return $imgFile; - } +require 'functions.php'; - # uncomment this if you need group writable files - #umask(0002); - # 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); - - if ($ext == ".jpg") - imagejpeg($newImg, $newImgFile); - else - imagepng($newImg, $newImgFile); - - imagedestroy($img); - imagedestroy($newImg); - } - - return $newImgFile; -} - -function getAlbumPreview($dir) -{ - $previewFile = DATA_DIR."/$dir/albumpreview"; - - if (is_file("$previewFile.jpg")) { - return "$previewFile.jpg"; - } else if (is_file("$previewFile.empty")) { - return ""; - } else if (is_file("$previewFile.png")) { - return "$previewFile.png"; - } else { - # uncomment this if you need group writable files - #umask(0002); - # create the thumbs directory recursively - if (! is_dir(dirname($previewFile))) mkdir(dirname($previewFile), 0777, true); - - // no preview: look for a preview in current dir, write it, return it - foreach (scandir($dir) as $file) if ($file != '.' and $file != '..') { - $ext = strtolower(substr($file, -4)); - if ($ext == ".jpg" or $ext == ".png") { - $thumb = getPreview("$dir/$file"); - copy($thumb, $previewFile.$ext); - return $previewFile.$ext; - } else if (is_dir("$dir/$file")) { - $subPreview = getAlbumPreview("$dir/$file"); - if ($subPreview) { - $myPreview = dirname($previewFile)."/".basename($subPreview); - copy($subPreview, $myPreview); - return $myPreview; - } - } - } - - // nothing found. create empty file - touch("$previewFile.empty"); - return ""; - } -} // 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 @@ -156,16 +38,9 @@ if (! isset($_SERVER["PATH_INFO"])) { exit(); } -# simplePath is the simple path to the image -# /index.php/toto/titi => simplePath == /toto/titi -$simplePath = $_SERVER["PATH_INFO"]; -if ($simplePath == '/') $simplePath = ''; -// extra security check to avoid /photos/index/../.. like urls, maybe useless but.. -if (strpos($simplePath, '..') !== false) die(".. found in url"); - -$folders = array(); -$imageFiles = array(); -$otherFiles = array(); +// simplePath is the simple path to the directory +// extract /path/to/dir/ from /index.php/path/to/dir/ +$simplePath = getPathInfo(); # realDir is the directory in filesystem # seen from current script directory @@ -176,6 +51,10 @@ if (! is_dir($realDir)) { die("Directory Not Found"); } +$folders = array(); +$imageFiles = array(); +$otherFiles = array(); + foreach (scandir($realDir) as $file) if ($file != '.' and $file != '..') { if (is_dir("$realDir/$file")) diff --git a/plugins/viewer/view.php b/plugins/viewer/view.php index a1af936..2af21b1 100644 --- a/plugins/viewer/view.php +++ b/plugins/viewer/view.php @@ -19,12 +19,10 @@ $bizouRootFromHere = '../..'; require "$bizouRootFromHere/config.php"; +require "$bizouRootFromHere/functions.php"; -$simpleImagePath = $_SERVER["PATH_INFO"]; -if ($simpleImagePath == '/') $simpleImagePath = ''; -// extra security check to avoid /photos/index/../.. like urls, maybe useless but.. -if (strpos($simpleImagePath, '..') !== false) die(".. found in url"); - +// extract /path/to/image.jpg from /view.php/path/to/image.jpg +$simpleImagePath = getPathInfo(); if (! is_file("$bizouRootFromHere/".IMAGES_DIR.$simpleImagePath)) { header("HTTP/1.1 404 Not Found"); -- 1.7.10.4