PSR2 php style
This commit is contained in:
parent
7466c634f0
commit
08cbcbdc5f
7 changed files with 666 additions and 574 deletions
|
@ -4,49 +4,49 @@ MINIGAL NANO, a simple PHP/HTML/CSS based image gallery script
|
||||||
|
|
||||||
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
||||||
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
||||||
* Website : https://github.com/sebsauvage/MinigalNano/
|
* Website : https://github.com/sebsauvage/MinigalNano/
|
||||||
* Support : https://github.com/sebsauvage/MinigalNano/issues and by mail (contact [@] tomcanac [.] com)
|
* Support : https://github.com/sebsauvage/MinigalNano/issues and by mail (contact [@] tomcanac [.] com)
|
||||||
|
|
||||||
MiniGal Nano is based on an original work by Thomas Rybak (© 2010)
|
MiniGal Nano is based on an original work by Thomas Rybak (© 2010)
|
||||||
Original support board : www.minigal.dk and www.minigal.dk/forum
|
Original support board : www.minigal.dk and www.minigal.dk/forum
|
||||||
|
|
||||||
Please enjoy this free script!
|
Please enjoy this free script!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// EDIT SETTINGS BELOW TO CUSTOMIZE YOUR GALLERY
|
// EDIT SETTINGS BELOW TO CUSTOMIZE YOUR GALLERY
|
||||||
$thumbs_pr_page = "39"; // Number of thumbnails on a single page
|
$thumbs_pr_page = "39"; // Number of thumbnails on a single page
|
||||||
$gallery_width = "80%"; // Gallery width. Eg: "500px" or "70%"
|
$gallery_width = "80%"; // Gallery width. Eg: "500px" or "70%"
|
||||||
$backgroundcolor = "white"; // This provides a quick way to change your gallerys background to suit your website. Use either main colors like "black", "white", "yellow" etc. Or HEX colors, eg. "#AAAAAA"
|
$backgroundcolor = "white"; // This provides a quick way to change your gallerys background to suit your website. Use either main colors like "black", "white", "yellow" etc. Or HEX colors, eg. "#AAAAAA"
|
||||||
$templatefile = "board"; // Template filename (must be placed in 'templates' folder)
|
$templatefile = "board"; // Template filename (must be placed in 'templates' folder)
|
||||||
$title = "MiniGal Nano"; // Text to be displayed in browser titlebar
|
$title = "MiniGal Nano"; // Text to be displayed in browser titlebar
|
||||||
$author = "John Doe";
|
$author = "John Doe";
|
||||||
$folder_color = "black"; // Color of folder icons: blue / black / vista / purple / green / grey
|
$folder_color = "black"; // Color of folder icons: blue / black / vista / purple / green / grey
|
||||||
$sorting_folders = "name"; // Sort folders by: [name][date]
|
$sorting_folders = "name"; // Sort folders by: [name][date]
|
||||||
$sorting_files = "name"; // Sort files by: [name][date][size]
|
$sorting_files = "name"; // Sort files by: [name][date][size]
|
||||||
$sortdir_folders = SORT_ASC; // Sort direction of folders: SORT_ASC / SORT_DESC
|
$sortdir_folders = SORT_ASC; // Sort direction of folders: SORT_ASC / SORT_DESC
|
||||||
$sortdir_files = SORT_ASC; // Sort direction of files: SORT_ASC / SORT_DESC
|
$sortdir_files = SORT_ASC; // Sort direction of files: SORT_ASC / SORT_DESC
|
||||||
$lazyload = 1; // 0 is pagination, 1 is display all pictures on one page
|
$lazyload = 1; // 0 is pagination, 1 is display all pictures on one page
|
||||||
$SkipObjects = array('aFolder', 'aFile.ext'); //Those files and folders will not be displayed (affects the page and the RSS feed)
|
$SkipObjects = array('aFolder', 'aFile.ext'); //Those files and folders will not be displayed (affects the page and the RSS feed)
|
||||||
|
|
||||||
//LANGUAGE STRINGS
|
//LANGUAGE STRINGS
|
||||||
$label_home = "Home"; // Name of home link in breadcrumb navigation
|
$label_home = "Home"; // Name of home link in breadcrumb navigation
|
||||||
$label_new = "New"; // Text to display for new images. Use with $display_new variable
|
$label_new = "New"; // Text to display for new images. Use with $display_new variable
|
||||||
$label_page = "Page"; // Text used for page navigation
|
$label_page = "Page"; // Text used for page navigation
|
||||||
$label_all = "All"; // Text used for link to display all images in one page
|
$label_all = "All"; // Text used for link to display all images in one page
|
||||||
$label_noimages = "No images... yet !"; // Empty folder text
|
$label_noimages = "No images... yet !"; // Empty folder text
|
||||||
$label_noimages_advice = "Use your FTP to upload some picture !";
|
$label_noimages_advice = "Use your FTP to upload some picture !";
|
||||||
$label_loading = "Loading..."; // Thumbnail loading text
|
$label_loading = "Loading..."; // Thumbnail loading text
|
||||||
$breadcrumb_separator = ">"; // Breadcrumb parts separator
|
$breadcrumb_separator = ">"; // Breadcrumb parts separator
|
||||||
|
|
||||||
//RSS SETTINGS
|
//RSS SETTINGS
|
||||||
$description = "MiniGal Nano";
|
$description = "MiniGal Nano";
|
||||||
$nb_items_rss = 25; // Number of elements to display in the feed. If you add a lot of pictures at the time, consider increasing this number
|
$nb_items_rss = 25; // Number of elements to display in the feed. If you add a lot of pictures at the time, consider increasing this number
|
||||||
$rss_refresh_interval = 60;// Time, in seconds, between two RSS refresh. for example, 3600 = 1update max per hour, 86400 = 1/day.
|
$rss_refresh_interval = 60; // Time, in seconds, between two RSS refresh. for example, 3600 = 1update max per hour, 86400 = 1/day.
|
||||||
$SkipExts = array('html', 'txt', 'php', "gitignore"); //Files with one of this extension will not be displayed on the RSS feed
|
$SkipExts = array('html', 'txt', 'php', "gitignore"); //Files with one of this extension will not be displayed on the RSS feed
|
||||||
|
|
||||||
//ADVANCED SETTINGS
|
//ADVANCED SETTINGS
|
||||||
$thumb_size = 320; //Thumbnail height/width (square thumbs). Changing this will most likely require manual altering of the template file to make it look properly!
|
$thumb_size = 320; //Thumbnail height/width (square thumbs). Changing this will most likely require manual altering of the template file to make it look properly!
|
||||||
$label_max_length = 40; //Maximum chars of a folder name that will be displayed on the folder thumbnail
|
$label_max_length = 40; //Maximum chars of a folder name that will be displayed on the folder thumbnail
|
||||||
$display_exif = 0; //Take care, even if not diplayed EXIF are still readable for visitors. May be a good idea to erase EXIF data...
|
$display_exif = 0; //Take care, even if not diplayed EXIF are still readable for visitors. May be a good idea to erase EXIF data...
|
||||||
$display_filename = 0; //Show file names below the pictures
|
$display_filename = 0; //Show file names below the pictures
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -4,8 +4,8 @@ MINIGAL NANO, a simple PHP/HTML/CSS based image gallery script
|
||||||
|
|
||||||
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
This script and included files are subject to licensing from Creative Commons (http://creativecommons.org/licenses/by-sa/2.5/)
|
||||||
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
You may use, edit and redistribute this script, as long as you pay tribute to the original author by NOT removing the linkback to www.minigal.dk ("Powered by MiniGal Nano x.x.x")
|
||||||
* Website : https://github.com/sebsauvage/MinigalNano/
|
* Website : https://github.com/sebsauvage/MinigalNano/
|
||||||
* Support : https://github.com/sebsauvage/MinigalNano/issues and by mail (contact [@] tomcanac [.] com)
|
* Support : https://github.com/sebsauvage/MinigalNano/issues and by mail (contact [@] tomcanac [.] com)
|
||||||
|
|
||||||
MiniGal Nano is based on an original work by Thomas Rybak (© 2010)
|
MiniGal Nano is based on an original work by Thomas Rybak (© 2010)
|
||||||
Original support board : www.minigal.dk and www.minigal.dk/forum
|
Original support board : www.minigal.dk and www.minigal.dk/forum
|
||||||
|
@ -15,7 +15,7 @@ Please enjoy this free script!
|
||||||
Upgraded to https://github.com/sebsauvage/MinigalNano
|
Upgraded to https://github.com/sebsauvage/MinigalNano
|
||||||
by Sébastien SAUVAGE.
|
by Sébastien SAUVAGE.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// INSERT HERE YOUR CUSTOMIZED SETTINGS
|
// INSERT HERE YOUR CUSTOMIZED SETTINGS
|
||||||
// for the list of possible options, peruse config-default.php
|
// for the list of possible options, peruse config-default.php
|
||||||
|
|
152
createthumb.php
152
createthumb.php
|
@ -15,23 +15,37 @@ Community: www.minigal.dk/forum
|
||||||
Please enjoy this free script!
|
Please enjoy this free script!
|
||||||
|
|
||||||
Version 0.3.5 modified by Sebastien SAUVAGE (sebsauvage.net):
|
Version 0.3.5 modified by Sebastien SAUVAGE (sebsauvage.net):
|
||||||
- Added thumbnail cache (reduces server CPU load, server bandwith and speeds up client page display).
|
- Added thumbnail cache (reduces server CPU load, server bandwith and speeds up client page display).
|
||||||
- Thumbnails are now always in JPEG even if the source image is PNG or GIF.
|
- Thumbnails are now always in JPEG even if the source image is PNG or GIF.
|
||||||
|
|
||||||
USAGE EXAMPLE:
|
USAGE EXAMPLE:
|
||||||
File: createthumb.php
|
File: createthumb.php
|
||||||
Example: <img src="createthumb.php?filename=photo.jpg&size=100">
|
Example: <img src="createthumb.php?filename=photo.jpg&size=100">
|
||||||
*/
|
*/
|
||||||
|
|
||||||
error_reporting(0);
|
error_reporting(0);
|
||||||
|
|
||||||
$get_filename = $_GET['filename'];
|
$get_filename = $_GET['filename'];
|
||||||
$get_size = @$_GET['size'];
|
$get_size = @$_GET['size'];
|
||||||
if (empty($get_size)) $get_size = 120;
|
if (empty($get_size)) {
|
||||||
if (preg_match("/^\/.*/i", $get_filename)) die("Unauthorized access !");
|
$get_size = 120;
|
||||||
if (preg_match("/.jpe?g$/i", $get_filename)) $get_filename_type = "JPG";
|
}
|
||||||
if (preg_match("/.gif$/i", $get_filename)) $get_filename_type = "GIF";
|
|
||||||
if (preg_match("/.png$/i", $get_filename)) $get_filename_type = "PNG";
|
if (preg_match("/^\/.*/i", $get_filename)) {
|
||||||
|
die("Unauthorized access !");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match("/.jpe?g$/i", $get_filename)) {
|
||||||
|
$get_filename_type = "JPG";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match("/.gif$/i", $get_filename)) {
|
||||||
|
$get_filename_type = "GIF";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (preg_match("/.png$/i", $get_filename)) {
|
||||||
|
$get_filename_type = "PNG";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Vertical flip
|
* Vertical flip
|
||||||
|
@ -41,9 +55,8 @@ function flipVertical(&$img) {
|
||||||
$size_x = imagesx($img);
|
$size_x = imagesx($img);
|
||||||
$size_y = imagesy($img);
|
$size_y = imagesy($img);
|
||||||
$temp = imagecreatetruecolor($size_x, $size_y);
|
$temp = imagecreatetruecolor($size_x, $size_y);
|
||||||
$x = imagecopyresampled($temp, $img, 0, 0, 0, ($size_y-1), $size_x, $size_y, $size_x, 0-$size_y);
|
$x = imagecopyresampled($temp, $img, 0, 0, 0, ($size_y - 1), $size_x, $size_y, $size_x, 0 - $size_y);
|
||||||
if ($x)
|
if ($x) {
|
||||||
{
|
|
||||||
$img = $temp;
|
$img = $temp;
|
||||||
} else {
|
} else {
|
||||||
die("Unable to flip image");
|
die("Unable to flip image");
|
||||||
|
@ -58,9 +71,8 @@ function flipHorizontal(&$img) {
|
||||||
$size_x = imagesx($img);
|
$size_x = imagesx($img);
|
||||||
$size_y = imagesy($img);
|
$size_y = imagesy($img);
|
||||||
$temp = imagecreatetruecolor($size_x, $size_y);
|
$temp = imagecreatetruecolor($size_x, $size_y);
|
||||||
$x = imagecopyresampled($temp, $img, 0, 0, ($size_x-1), 0, $size_x, $size_y, 0-$size_x, $size_y);
|
$x = imagecopyresampled($temp, $img, 0, 0, ($size_x - 1), 0, $size_x, $size_y, 0 - $size_x, $size_y);
|
||||||
if ($x)
|
if ($x) {
|
||||||
{
|
|
||||||
$img = $temp;
|
$img = $temp;
|
||||||
} else {
|
} else {
|
||||||
die("Unable to flip image");
|
die("Unable to flip image");
|
||||||
|
@ -75,14 +87,13 @@ function sanitize($name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the "thumbs" directory exists.
|
// Make sure the "thumbs" directory exists.
|
||||||
if (!is_dir('thumbs') && is_writable('.'))
|
if (!is_dir('thumbs') && is_writable('.')) {
|
||||||
{
|
mkdir('thumbs', 0700);
|
||||||
mkdir('thumbs',0700);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Thumbnail file name and path.
|
// Thumbnail file name and path.
|
||||||
// (We always put thumbnails in jpg for simplification)
|
// (We always put thumbnails in jpg for simplification)
|
||||||
$thumbname = 'thumbs/'.sanitize($get_filename).'.jpg';
|
$thumbname = 'thumbs/' . sanitize($get_filename) . '.jpg';
|
||||||
|
|
||||||
if (file_exists($thumbname)) // If thumbnail exists, serve it.
|
if (file_exists($thumbname)) // If thumbnail exists, serve it.
|
||||||
{
|
{
|
||||||
|
@ -90,7 +101,7 @@ if (file_exists($thumbname)) // If thumbnail exists, serve it.
|
||||||
$cacheContent = fread($fd, filesize($thumbname));
|
$cacheContent = fread($fd, filesize($thumbname));
|
||||||
fclose($fd);
|
fclose($fd);
|
||||||
header('Content-type: image/jpeg');
|
header('Content-type: image/jpeg');
|
||||||
echo($cacheContent);
|
echo ($cacheContent);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,14 +132,13 @@ $yoord = 0;
|
||||||
$imgsize = getimagesize($get_filename);
|
$imgsize = getimagesize($get_filename);
|
||||||
$width = $imgsize[0];
|
$width = $imgsize[0];
|
||||||
$height = $imgsize[1];
|
$height = $imgsize[1];
|
||||||
if ($width > $height) // If the width is greater than the height it’s a horizontal picture
|
// If the width is greater than the height it’s a horizontal picture
|
||||||
{
|
if ($width > $height) {
|
||||||
$xoord = ceil(($width-$height)/2);
|
$xoord = ceil(($width - $height) / 2);
|
||||||
$width = $height; // Then we read a square frame that equals the width
|
// Then we read a square frame that equals the width
|
||||||
}
|
$width = $height;
|
||||||
else
|
} else {
|
||||||
{
|
$yoord = ceil(($height - $width) / 2);
|
||||||
$yoord = ceil(($height-$width)/2);
|
|
||||||
$height = $width;
|
$height = $width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,33 +150,33 @@ $degrees = 0;
|
||||||
$flip = '';
|
$flip = '';
|
||||||
if (preg_match("/.jpg$|.jpeg$/i", $_GET['filename'])) {
|
if (preg_match("/.jpg$|.jpeg$/i", $_GET['filename'])) {
|
||||||
if (function_exists('exif_read_data') && function_exists('imagerotate')) {
|
if (function_exists('exif_read_data') && function_exists('imagerotate')) {
|
||||||
$exif = exif_read_data($_GET['filename'], 0, true);
|
$exif = exif_read_data($_GET['filename'], 0, true);
|
||||||
$ort = $exif['IFD0']['Orientation'];
|
$ort = $exif['IFD0']['Orientation'];
|
||||||
switch ($ort) {
|
switch ($ort) {
|
||||||
case 3: // 180 rotate right
|
case 3: // 180 rotate right
|
||||||
$degrees = 180;
|
$degrees = 180;
|
||||||
break;
|
break;
|
||||||
case 6: // 90 rotate right
|
case 6: // 90 rotate right
|
||||||
$degrees = 270;
|
$degrees = 270;
|
||||||
break;
|
break;
|
||||||
case 8: // 90 rotate left
|
case 8: // 90 rotate left
|
||||||
$degrees = 90;
|
$degrees = 90;
|
||||||
break;
|
break;
|
||||||
case 2: // flip vertical
|
case 2: // flip vertical
|
||||||
$flip = 'vertical';
|
$flip = 'vertical';
|
||||||
break;
|
break;
|
||||||
case 7: // flipped
|
case 7: // flipped
|
||||||
$degrees = 90;
|
$degrees = 90;
|
||||||
$flip = 'vertical';
|
$flip = 'vertical';
|
||||||
break;
|
break;
|
||||||
case 5: // flipped
|
case 5: // flipped
|
||||||
$degrees = 270;
|
$degrees = 270;
|
||||||
$flip = 'vertical';
|
$flip = 'vertical';
|
||||||
break;
|
break;
|
||||||
case 4: // flipped
|
case 4: // flipped
|
||||||
$degrees = 180;
|
$degrees = 180;
|
||||||
$flip = 'vertical';
|
$flip = 'vertical';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,27 +184,33 @@ if (preg_match("/.jpg$|.jpeg$/i", $_GET['filename'])) {
|
||||||
$target = imagecreatetruecolor($get_size, $get_size);
|
$target = imagecreatetruecolor($get_size, $get_size);
|
||||||
|
|
||||||
// if the picture can be transparent, add a white background
|
// if the picture can be transparent, add a white background
|
||||||
if (in_array($get_filename_type, array("GIF", "PNG")))
|
if (in_array($get_filename_type, array("GIF", "PNG"))) {
|
||||||
{
|
|
||||||
$backgroundColor = imagecolorallocate($target, 255, 255, 255);
|
$backgroundColor = imagecolorallocate($target, 255, 255, 255);
|
||||||
imagefill($target, 0, 0, $backgroundColor);
|
imagefill($target, 0, 0, $backgroundColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($get_filename_type == "JPG") $source = imagecreatefromjpeg($get_filename);
|
if ($get_filename_type == "JPG") {
|
||||||
if ($get_filename_type == "GIF") $source = imagecreatefromgif($get_filename);
|
$source = imagecreatefromjpeg($get_filename);
|
||||||
if ($get_filename_type == "PNG") $source = imagecreatefrompng($get_filename);
|
}
|
||||||
|
|
||||||
|
if ($get_filename_type == "GIF") {
|
||||||
|
$source = imagecreatefromgif($get_filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($get_filename_type == "PNG") {
|
||||||
|
$source = imagecreatefrompng($get_filename);
|
||||||
|
}
|
||||||
|
|
||||||
imagecopyresampled($target, $source, 0, 0, $xoord, $yoord, $get_size, $get_size, $width, $height);
|
imagecopyresampled($target, $source, 0, 0, $xoord, $yoord, $get_size, $get_size, $width, $height);
|
||||||
imagedestroy($source);
|
imagedestroy($source);
|
||||||
|
|
||||||
//proper rotation by jan niggemann
|
//proper rotation by jan niggemann
|
||||||
if ($degrees != 0)
|
if ($degrees != 0) {
|
||||||
{
|
|
||||||
$target = imagerotate($target, $degrees, 0);
|
$target = imagerotate($target, $degrees, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//proper mirror (aka flip) by jan niggemann
|
//proper mirror (aka flip) by jan niggemann
|
||||||
if ($flip == 'vertical')
|
if ($flip == 'vertical') {
|
||||||
{
|
|
||||||
//only in php >= 5.5.0 ImageJPEG(imageflip($target, IMG_FLIP_VERTICAL),null,80);
|
//only in php >= 5.5.0 ImageJPEG(imageflip($target, IMG_FLIP_VERTICAL),null,80);
|
||||||
flipVertical($target);
|
flipVertical($target);
|
||||||
flipHorizontal($target);
|
flipHorizontal($target);
|
||||||
|
@ -208,12 +224,10 @@ imagedestroy($target);
|
||||||
$cachedImage = ob_get_contents(); // Get the buffer content.
|
$cachedImage = ob_get_contents(); // Get the buffer content.
|
||||||
ob_end_flush(); // End buffering
|
ob_end_flush(); // End buffering
|
||||||
|
|
||||||
if (is_writable(dirname($thumbname)))
|
if (is_writable(dirname($thumbname))) {
|
||||||
{
|
|
||||||
$fd = fopen($thumbname, "w"); // Save buffer to disk
|
$fd = fopen($thumbname, "w"); // Save buffer to disk
|
||||||
if ($fd)
|
if ($fd) {
|
||||||
{
|
fwrite($fd, $cachedImage);
|
||||||
fwrite($fd,$cachedImage);
|
|
||||||
fclose($fd);
|
fclose($fd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
725
index.php
725
index.php
|
@ -19,7 +19,7 @@ Please enjoy this free script!
|
||||||
Upgraded to https://github.com/sebsauvage/MinigalNano
|
Upgraded to https://github.com/sebsauvage/MinigalNano
|
||||||
by Sébastien SAUVAGE.
|
by Sébastien SAUVAGE.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
error_reporting(-1);
|
error_reporting(-1);
|
||||||
|
|
||||||
|
@ -29,8 +29,8 @@ header('Content-Type: text/html; charset=UTF-8'); // We use UTF-8 for proper int
|
||||||
$version = "0.3.7";
|
$version = "0.3.7";
|
||||||
ini_set("memory_limit", "256M");
|
ini_set("memory_limit", "256M");
|
||||||
|
|
||||||
require("config-default.php");
|
require "config-default.php";
|
||||||
include("config.php");
|
include "config.php";
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// DEFINE VARIABLES
|
// DEFINE VARIABLES
|
||||||
|
@ -48,122 +48,121 @@ $comment = "";
|
||||||
// PHP ENVIRONMENT CHECK
|
// PHP ENVIRONMENT CHECK
|
||||||
//-----------------------
|
//-----------------------
|
||||||
if (!function_exists('exif_read_data') && $display_exif == 1) {
|
if (!function_exists('exif_read_data') && $display_exif == 1) {
|
||||||
$display_exif = 0;
|
$display_exif = 0;
|
||||||
$messages = "Error: PHP EXIF is not available. Set $display_exif = 0; in config.php to remove this message";
|
$messages = "Error: PHP EXIF is not available. Set $display_exif = 0; in config.php to remove this message";
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// FUNCTIONS
|
// FUNCTIONS
|
||||||
//-----------------------
|
//-----------------------
|
||||||
function padstring($name, $length)
|
function padstring($name, $length) {
|
||||||
{
|
global $label_max_length;
|
||||||
global $label_max_length;
|
if (!isset($length)) {
|
||||||
if (!isset($length)) {
|
$length = $label_max_length;
|
||||||
$length = $label_max_length;
|
}
|
||||||
}
|
if (strlen($name) > $length) {
|
||||||
if (strlen($name) > $length) {
|
return substr($name, 0, $length) . "...";
|
||||||
return substr($name, 0, $length) . "...";
|
}
|
||||||
}
|
return $name;
|
||||||
return $name;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getfirstImage($dirname)
|
function getfirstImage($dirname) {
|
||||||
{
|
$imageName = false;
|
||||||
$imageName = false;
|
$extensions = array("jpg", "png", "jpeg", "gif");
|
||||||
$extensions = array("jpg", "png", "jpeg", "gif");
|
if ($handle = opendir($dirname)) {
|
||||||
if ($handle = opendir($dirname)) {
|
while (false !== ($file = readdir($handle))) {
|
||||||
while(false !== ($file = readdir($handle))) {
|
if ($file[0] == '.') {
|
||||||
if ($file[0] == '.') {
|
continue;
|
||||||
continue;
|
}
|
||||||
}
|
$pathinfo = pathinfo($file);
|
||||||
$pathinfo = pathinfo($file);
|
if (empty($pathinfo['extension'])) {
|
||||||
if (empty($pathinfo['extension'])) {
|
continue;
|
||||||
continue;
|
}
|
||||||
}
|
$ext = strtolower($pathinfo['extension']);
|
||||||
$ext = strtolower($pathinfo['extension']);
|
if (in_array($ext, $extensions)) {
|
||||||
if (in_array($ext, $extensions)) {
|
$imageName = $file;
|
||||||
$imageName = $file;
|
break;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
}
|
closedir($handle);
|
||||||
closedir($handle);
|
}
|
||||||
}
|
return $imageName;
|
||||||
return $imageName;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function parse_fraction($v, $round=0)
|
function parse_fraction($v, $round = 0) {
|
||||||
{
|
list($x, $y) = array_map('intval', explode('/', $v));
|
||||||
list($x, $y) = array_map('intval', explode('/', $v));
|
if (empty($x) || empty($y)) {
|
||||||
if (empty($x) || empty($y)) {
|
return $v;
|
||||||
return $v;
|
}
|
||||||
}
|
if ($x % $y == 0) {
|
||||||
if ($x % $y == 0) {
|
return $x / $y;
|
||||||
return $x/$y;
|
}
|
||||||
}
|
if ($y % $x == 0) {
|
||||||
if ($y % $x == 0) {
|
return "1/" . $y / $x;
|
||||||
return "1/" . $y/$x;
|
}
|
||||||
}
|
return round($x / $y, $round);
|
||||||
return round($x/$y, $round);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function readEXIF($file)
|
function readEXIF($file) {
|
||||||
{
|
$exif_arr = array();
|
||||||
$exif_arr = array();
|
$exif_data = exif_read_data($file);
|
||||||
$exif_data = exif_read_data($file);
|
|
||||||
|
|
||||||
$exif_val = @$exif_data['Model'];
|
$exif_val = @$exif_data['Model'];
|
||||||
if (!empty($exif_val)) {
|
if (!empty($exif_val)) {
|
||||||
$exif_arr[] = $exif_val;
|
$exif_arr[] = $exif_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
$exif_val = @$exif_data['FocalLength'];
|
$exif_val = @$exif_data['FocalLength'];
|
||||||
if (!empty($exif_val)) {
|
if (!empty($exif_val)) {
|
||||||
$exif_arr[] = parse_fraction($exif_val) . "mm";
|
$exif_arr[] = parse_fraction($exif_val) . "mm";
|
||||||
}
|
}
|
||||||
|
|
||||||
$exif_val = @$exif_data['ExposureTime'];
|
$exif_val = @$exif_data['ExposureTime'];
|
||||||
if (!empty($exif_val)) {
|
if (!empty($exif_val)) {
|
||||||
$exif_arr[] = parse_fraction($exif_val, 2) . "s";
|
$exif_arr[] = parse_fraction($exif_val, 2) . "s";
|
||||||
}
|
}
|
||||||
|
|
||||||
$exif_val = @$exif_data['FNumber'];
|
$exif_val = @$exif_data['FNumber'];
|
||||||
if (!empty($exif_val)) {
|
if (!empty($exif_val)) {
|
||||||
$exif_arr[] = "f" . parse_fraction($exif_val);
|
$exif_arr[] = "f" . parse_fraction($exif_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
$exif_val = @$exif_data['ISOSpeedRatings'];
|
$exif_val = @$exif_data['ISOSpeedRatings'];
|
||||||
if (!empty($exif_val)) {
|
if (!empty($exif_val)) {
|
||||||
$exif_arr[] = "ISO " . $exif_val;
|
$exif_arr[] = "ISO " . $exif_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count($exif_arr) > 0) {
|
if (count($exif_arr) > 0) {
|
||||||
return "::" . implode(" | ", $exif_arr);
|
return "::" . implode(" | ", $exif_arr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkpermissions($file)
|
function checkpermissions($file) {
|
||||||
{
|
global $messages;
|
||||||
global $messages;
|
|
||||||
|
|
||||||
if (!is_readable($file)) {
|
if (!is_readable($file)) {
|
||||||
$messages = "At least one file or folder has wrong permissions. "
|
$messages = "At least one file or folder has wrong permissions. "
|
||||||
. "Learn how to <a href='http://minigal.dk/faq-reader/items/"
|
. "Learn how to <a href='http://minigal.dk/faq-reader/items/"
|
||||||
. "how-do-i-change-file-permissions-chmod.html' target='_blank'>"
|
. "how-do-i-change-file-permissions-chmod.html' target='_blank'>"
|
||||||
. "set file permissions</a>";
|
. "set file permissions</a>";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!defined("GALLERY_ROOT")) {
|
||||||
|
define("GALLERY_ROOT", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined("GALLERY_ROOT"))
|
|
||||||
define("GALLERY_ROOT", "");
|
|
||||||
$requestedDir = '';
|
$requestedDir = '';
|
||||||
if (!empty($_GET['dir']))
|
if (!empty($_GET['dir'])) {
|
||||||
$requestedDir = $_GET['dir'];
|
$requestedDir = $_GET['dir'];
|
||||||
|
}
|
||||||
|
|
||||||
$thumbdir = rtrim('photos/' . $requestedDir, '/');
|
$thumbdir = rtrim('photos/' . $requestedDir, '/');
|
||||||
|
|
||||||
//$thumbdir = str_replace('/..', '', $thumbdir); // Prevent directory traversal attacks.
|
//$thumbdir = str_replace('/..', '', $thumbdir); // Prevent directory traversal attacks.
|
||||||
if (strstr($thumbdir, '..') !== false) {
|
if (strstr($thumbdir, '..') !== false) {
|
||||||
$requestedDir = '';
|
$requestedDir = '';
|
||||||
$thumbdir = rtrim('photos/', '/');
|
$thumbdir = rtrim('photos/', '/');
|
||||||
}
|
}
|
||||||
|
|
||||||
$currentdir = GALLERY_ROOT . $thumbdir;
|
$currentdir = GALLERY_ROOT . $thumbdir;
|
||||||
|
@ -175,333 +174,383 @@ $files = array();
|
||||||
$dirs = array();
|
$dirs = array();
|
||||||
$img_captions = array();
|
$img_captions = array();
|
||||||
if (is_dir($currentdir) && $handle = opendir($currentdir)) {
|
if (is_dir($currentdir) && $handle = opendir($currentdir)) {
|
||||||
// 1. LOAD CAPTIONS
|
// 1. LOAD CAPTIONS
|
||||||
$caption_filename = "$currentdir/captions.txt";
|
$caption_filename = "$currentdir/captions.txt";
|
||||||
if (is_readable($caption_filename)) {
|
if (is_readable($caption_filename)) {
|
||||||
$caption_handle = fopen($caption_filename, "rb");
|
$caption_handle = fopen($caption_filename, "rb");
|
||||||
while (!feof($caption_handle)) {
|
while (!feof($caption_handle)) {
|
||||||
$caption_line = fgetss($caption_handle);
|
$caption_line = fgetss($caption_handle);
|
||||||
if (empty($caption_line)) {
|
if (empty($caption_line)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
list($img_file, $img_text) = explode('|', $caption_line);
|
list($img_file, $img_text) = explode('|', $caption_line);
|
||||||
$img_captions[$img_file] = trim($img_text);
|
$img_captions[$img_file] = trim($img_text);
|
||||||
}
|
}
|
||||||
fclose($caption_handle);
|
fclose($caption_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (false !== ($file = readdir($handle)) && !in_array($file, $SkipObjects)) {
|
while (false !== ($file = readdir($handle)) && !in_array($file, $SkipObjects)) {
|
||||||
// 2. LOAD FOLDERS
|
// 2. LOAD FOLDERS
|
||||||
if (is_dir($currentdir . "/" . $file)) {
|
if (is_dir($currentdir . "/" . $file)) {
|
||||||
if ($file != "." && $file != "..") {
|
if ($file != "." && $file != "..") {
|
||||||
checkpermissions($currentdir . "/" . $file); // Check for correct file permission
|
checkpermissions($currentdir . "/" . $file); // Check for correct file permission
|
||||||
// Set thumbnail to folder.jpg if found:
|
// Set thumbnail to folder.jpg if found:
|
||||||
if (file_exists($currentdir. '/' . $file . '/folder.jpg')) {
|
if (file_exists($currentdir . '/' . $file . '/folder.jpg')) {
|
||||||
$linkParams = http_build_query(
|
$linkParams = http_build_query(
|
||||||
array('dir' => ltrim("$requestedDir/$file", '/')),
|
array('dir' => ltrim("$requestedDir/$file", '/')),
|
||||||
'',
|
'',
|
||||||
'&'
|
'&'
|
||||||
);
|
);
|
||||||
$linkUrl = "?$linkParams";
|
$linkUrl = "?$linkParams";
|
||||||
|
|
||||||
$imgParams = http_build_query(
|
$imgParams = http_build_query(
|
||||||
array(
|
array(
|
||||||
'filename' => "$currentdir/$file/folder.jpg",
|
'filename' => "$currentdir/$file/folder.jpg",
|
||||||
'size' => $thumb_size
|
'size' => $thumb_size,
|
||||||
),
|
),
|
||||||
'',
|
'',
|
||||||
'&'
|
'&'
|
||||||
);
|
);
|
||||||
$imgUrl = GALLERY_ROOT . "createthumb.php?$imgParams";
|
$imgUrl = GALLERY_ROOT . "createthumb.php?$imgParams";
|
||||||
|
|
||||||
$dirs[] = array(
|
$dirs[] = array(
|
||||||
"name" => $file,
|
"name" => $file,
|
||||||
"date" => filemtime($currentdir . "/" . $file . "/folder.jpg"),
|
"date" => filemtime($currentdir . "/" . $file . "/folder.jpg"),
|
||||||
"html" => "<li><a href=\"{$linkUrl}\"><em>" . padstring($file, $label_max_length) . "</em><span></span><img src=\"{$imgUrl}\" alt=\"$label_loading\" /></a></li>"
|
"html" => "<li><a href=\"{$linkUrl}\"><em>" . padstring($file, $label_max_length) . "</em><span></span><img src=\"{$imgUrl}\" alt=\"$label_loading\" /></a></li>",
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// Set thumbnail to first image found (if any):
|
// Set thumbnail to first image found (if any):
|
||||||
unset($firstimage);
|
unset($firstimage);
|
||||||
$firstimage = getfirstImage("$currentdir/" . $file);
|
$firstimage = getfirstImage("$currentdir/" . $file);
|
||||||
|
|
||||||
if ($firstimage != "") {
|
if ($firstimage != "") {
|
||||||
$linkParams = http_build_query(
|
$linkParams = http_build_query(
|
||||||
array('dir' => ltrim("$requestedDir/$file", '/')),
|
array('dir' => ltrim("$requestedDir/$file", '/')),
|
||||||
'',
|
'',
|
||||||
'&'
|
'&'
|
||||||
);
|
);
|
||||||
$linkUrl = "?$linkParams";
|
$linkUrl = "?$linkParams";
|
||||||
|
|
||||||
$imgParams = http_build_query(
|
$imgParams = http_build_query(
|
||||||
array(
|
array(
|
||||||
'filename' => "$thumbdir/$file/$firstimage",
|
'filename' => "$thumbdir/$file/$firstimage",
|
||||||
'size' => $thumb_size
|
'size' => $thumb_size,
|
||||||
),
|
),
|
||||||
'',
|
'',
|
||||||
'&'
|
'&'
|
||||||
);
|
);
|
||||||
$imgUrl = GALLERY_ROOT . "createthumb.php?$imgParams";
|
$imgUrl = GALLERY_ROOT . "createthumb.php?$imgParams";
|
||||||
|
|
||||||
$dirs[] = array(
|
$dirs[] = array(
|
||||||
"name" => $file,
|
"name" => $file,
|
||||||
"date" => filemtime($currentdir . "/" . $file),
|
"date" => filemtime($currentdir . "/" . $file),
|
||||||
"html" => "<li><a href=\"{$linkUrl}\"><em>" . padstring($file, $label_max_length) . "</em><span></span><img src=\"{$imgUrl}\" alt='$label_loading' /></a></li>"
|
"html" => "<li><a href=\"{$linkUrl}\"><em>" . padstring($file, $label_max_length) . "</em><span></span><img src=\"{$imgUrl}\" alt='$label_loading' /></a></li>",
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// If no folder.jpg or image is found, then display default icon:
|
// If no folder.jpg or image is found, then display default icon:
|
||||||
$linkParams = http_build_query(
|
$linkParams = http_build_query(
|
||||||
array('dir' => ltrim("$requestedDir/$file", '/')),
|
array('dir' => ltrim("$requestedDir/$file", '/')),
|
||||||
'',
|
'',
|
||||||
'&'
|
'&'
|
||||||
);
|
);
|
||||||
$linkUrl = "?$linkParams";
|
$linkUrl = "?$linkParams";
|
||||||
$imgUrl = GALLERY_ROOT . 'images/folder_' . strtolower($folder_color) . '.png';
|
$imgUrl = GALLERY_ROOT . 'images/folder_' . strtolower($folder_color) . '.png';
|
||||||
|
|
||||||
$dirs[] = array(
|
$dirs[] = array(
|
||||||
"name" => $file,
|
"name" => $file,
|
||||||
"date" => filemtime($currentdir . "/" . $file),
|
"date" => filemtime($currentdir . "/" . $file),
|
||||||
"html" => "<li><a href=\"{$linkUrl}\"><em>" . padstring($file, $label_max_length) . "</em><span></span><img src=\"{$imgUrl}\" width='$thumb_size' height='$thumb_size' alt='$label_loading' /></a></li>"
|
"html" => "<li><a href=\"{$linkUrl}\"><em>" . padstring($file, $label_max_length) . "</em><span></span><img src=\"{$imgUrl}\" width='$thumb_size' height='$thumb_size' alt='$label_loading' /></a></li>",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. LOAD FILES
|
// 3. LOAD FILES
|
||||||
if ($file != "." && $file != ".." && $file != "folder.jpg") {
|
if ($file != "." && $file != ".." && $file != "folder.jpg") {
|
||||||
if ($display_filename)
|
if ($display_filename) {
|
||||||
$filename_caption = "<em>" . padstring($file, $label_max_length) . "</em>";
|
$filename_caption = "<em>" . padstring($file, $label_max_length) . "</em>";
|
||||||
else
|
} else {
|
||||||
$filename_caption = "";
|
$filename_caption = "";
|
||||||
// JPG, GIF and PNG
|
}
|
||||||
if (preg_match("/.jpg$|.gif$|.png$/i", $file)) {
|
|
||||||
//Read EXIF
|
|
||||||
if (!array_key_exists($file, $img_captions)) {
|
|
||||||
if ($display_exif == 1) {
|
|
||||||
$exifReaden = readEXIF($currentdir . "/" . $file);
|
|
||||||
//Add to the caption all the EXIF information
|
|
||||||
$img_captions[$file] = $file.$exifReaden;
|
|
||||||
} else {
|
|
||||||
//If no EXIF, just use the filename as caption
|
|
||||||
$img_captions[$file] = $file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Read the optionnal image title and caption in html file (image.jpg --> image.jpg.html)
|
|
||||||
// Format: title::caption
|
|
||||||
// Example: My cat::My cat like to <i>roll</i> on the floor.
|
|
||||||
// If file is not provided, image filename will be used instead.
|
|
||||||
checkpermissions($currentdir . "/" . $file);
|
|
||||||
|
|
||||||
if (is_file($currentdir.'/'.$file.'.html'))
|
// JPG, GIF and PNG
|
||||||
$img_captions[$file] = $file.'::'.htmlspecialchars(file_get_contents($currentdir.'/'.$file.'.html'), ENT_QUOTES);
|
if (preg_match("/.jpg$|.gif$|.png$/i", $file)) {
|
||||||
$linkUrl = str_replace('%2F', '/', rawurlencode("$currentdir/$file"));
|
//Read EXIF
|
||||||
$imgParams = http_build_query(
|
if (!array_key_exists($file, $img_captions)) {
|
||||||
array('filename' => "$thumbdir/$file", 'size' => $thumb_size),
|
if ($display_exif == 1) {
|
||||||
'',
|
$exifReaden = readEXIF($currentdir . "/" . $file);
|
||||||
'&');
|
//Add to the caption all the EXIF information
|
||||||
$imgUrl = GALLERY_ROOT . "createthumb.php?$imgParams";
|
$img_captions[$file] = $file . $exifReaden;
|
||||||
if ($lazyload)
|
} else {
|
||||||
$imgopts = "class=\"b-lazy\" src=data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== data-src=\"$imgUrl\"";
|
//If no EXIF, just use the filename as caption
|
||||||
else
|
$img_captions[$file] = $file;
|
||||||
$imgopts = "src=\"{$imgUrl}\"";
|
}
|
||||||
$files[] = array(
|
}
|
||||||
"name" => $file,
|
// Read the optionnal image title and caption in html file (image.jpg --> image.jpg.html)
|
||||||
"date" => filemtime($currentdir . "/" . $file),
|
// Format: title::caption
|
||||||
"size" => filesize($currentdir . "/" . $file),
|
// Example: My cat::My cat like to <i>roll</i> on the floor.
|
||||||
"html" => "<li><a href=\"{$linkUrl}\" rel='lightbox[billeder]' title=\"".htmlentities($img_captions[$file])."\"><img $imgopts alt='$label_loading' /></a>" . $filename_caption . "</li>");
|
// If file is not provided, image filename will be used instead.
|
||||||
}
|
checkpermissions($currentdir . "/" . $file);
|
||||||
// Other filetypes
|
|
||||||
$extension = "";
|
|
||||||
if (preg_match("/\.pdf$/i", $file)) $extension = "PDF"; // PDF
|
|
||||||
if (preg_match("/\.zip$/i", $file)) $extension = "ZIP"; // ZIP archive
|
|
||||||
if (preg_match("/\.rar$|\.r[0-9]{2,}/i", $file)) $extension = "RAR"; // RAR Archive
|
|
||||||
if (preg_match("/\.tar$/i", $file)) $extension = "TAR"; // TARball archive
|
|
||||||
if (preg_match("/\.gz$/i", $file)) $extension = "GZ"; // GZip archive
|
|
||||||
if (preg_match("/\.doc$|\.docx$/i", $file)) $extension = "DOCX"; // Word
|
|
||||||
if (preg_match("/\.ppt$|\.pptx$/i", $file)) $extension = "PPTX"; //Powerpoint
|
|
||||||
if (preg_match("/\.xls$|\.xlsx$/i", $file)) $extension = "XLXS"; // Excel
|
|
||||||
if (preg_match("/\.ogv$|\.mp4$|\.mpg$|\.mpeg$|\.mov$|\.avi$|\.wmv$|\.flv$|\.webm$/i", $file)) $extension = "VIDEO"; // video files
|
|
||||||
if (preg_match("/\.aiff$|\.aif$|\.wma$|\.aac$|\.flac$|\.mp3$|\.ogg$|\.m4a$/i", $file)) $extension = "AUDIO"; // audio files
|
|
||||||
|
|
||||||
if ($extension != "") {
|
if (is_file($currentdir . '/' . $file . '.html')) {
|
||||||
$files[] = array(
|
$img_captions[$file] = $file . '::' . htmlspecialchars(file_get_contents($currentdir . '/' . $file . '.html'), ENT_QUOTES);
|
||||||
"name" => $file,
|
}
|
||||||
"date" => filemtime($currentdir . "/" . $file),
|
|
||||||
"size" => filesize($currentdir . "/" . $file),
|
$linkUrl = str_replace('%2F', '/', rawurlencode("$currentdir/$file"));
|
||||||
"html" => "<li><a href='$currentdir/$file' title='$file'><em-pdf>" . padstring($file, 20) . "</em-pdf><span></span><img src='" . GALLERY_ROOT . "images/filetype_" . $extension . ".png' width='$thumb_size' height='$thumb_size' alt='$file' /></a>$filename_caption</li>");
|
$imgParams = http_build_query(
|
||||||
}
|
array('filename' => "$thumbdir/$file", 'size' => $thumb_size),
|
||||||
}
|
'',
|
||||||
}
|
'&');
|
||||||
closedir($handle);
|
$imgUrl = GALLERY_ROOT . "createthumb.php?$imgParams";
|
||||||
|
if ($lazyload) {
|
||||||
|
$imgopts = "class=\"b-lazy\" src=data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== data-src=\"$imgUrl\"";
|
||||||
|
} else {
|
||||||
|
$imgopts = "src=\"{$imgUrl}\"";
|
||||||
|
}
|
||||||
|
|
||||||
|
$files[] = array(
|
||||||
|
"name" => $file,
|
||||||
|
"date" => filemtime($currentdir . "/" . $file),
|
||||||
|
"size" => filesize($currentdir . "/" . $file),
|
||||||
|
"html" => "<li><a href=\"{$linkUrl}\" rel='lightbox[billeder]' title=\"" . htmlentities($img_captions[$file]) . "\"><img $imgopts alt='$label_loading' /></a>" . $filename_caption . "</li>");
|
||||||
|
}
|
||||||
|
// Other filetypes
|
||||||
|
$extension = "";
|
||||||
|
if (preg_match("/\.pdf$/i", $file)) {
|
||||||
|
$extension = "PDF";
|
||||||
|
}
|
||||||
|
// PDF
|
||||||
|
if (preg_match("/\.zip$/i", $file)) {
|
||||||
|
$extension = "ZIP";
|
||||||
|
}
|
||||||
|
// ZIP archive
|
||||||
|
if (preg_match("/\.rar$|\.r[0-9]{2,}/i", $file)) {
|
||||||
|
$extension = "RAR";
|
||||||
|
}
|
||||||
|
// RAR Archive
|
||||||
|
if (preg_match("/\.tar$/i", $file)) {
|
||||||
|
$extension = "TAR";
|
||||||
|
}
|
||||||
|
// TARball archive
|
||||||
|
if (preg_match("/\.gz$/i", $file)) {
|
||||||
|
$extension = "GZ";
|
||||||
|
}
|
||||||
|
// GZip archive
|
||||||
|
if (preg_match("/\.doc$|\.docx$/i", $file)) {
|
||||||
|
$extension = "DOCX";
|
||||||
|
}
|
||||||
|
// Word
|
||||||
|
if (preg_match("/\.ppt$|\.pptx$/i", $file)) {
|
||||||
|
$extension = "PPTX";
|
||||||
|
}
|
||||||
|
//Powerpoint
|
||||||
|
if (preg_match("/\.xls$|\.xlsx$/i", $file)) {
|
||||||
|
$extension = "XLXS";
|
||||||
|
}
|
||||||
|
// Excel
|
||||||
|
if (preg_match("/\.ogv$|\.mp4$|\.mpg$|\.mpeg$|\.mov$|\.avi$|\.wmv$|\.flv$|\.webm$/i", $file)) {
|
||||||
|
$extension = "VIDEO";
|
||||||
|
}
|
||||||
|
// video files
|
||||||
|
if (preg_match("/\.aiff$|\.aif$|\.wma$|\.aac$|\.flac$|\.mp3$|\.ogg$|\.m4a$/i", $file)) {
|
||||||
|
$extension = "AUDIO";
|
||||||
|
}
|
||||||
|
// audio files
|
||||||
|
|
||||||
|
if ($extension != "") {
|
||||||
|
$files[] = array(
|
||||||
|
"name" => $file,
|
||||||
|
"date" => filemtime($currentdir . "/" . $file),
|
||||||
|
"size" => filesize($currentdir . "/" . $file),
|
||||||
|
"html" => "<li><a href='$currentdir/$file' title='$file'><em-pdf>" . padstring($file, 20) . "</em-pdf><span></span><img src='" . GALLERY_ROOT . "images/filetype_" . $extension . ".png' width='$thumb_size' height='$thumb_size' alt='$file' /></a>$filename_caption</li>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
} else {
|
} else {
|
||||||
die("ERROR: Could not open ".htmlspecialchars(stripslashes($currentdir))." for reading!");
|
die("ERROR: Could not open " . htmlspecialchars(stripslashes($currentdir)) . " for reading!");
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// SORT FILES AND FOLDERS
|
// SORT FILES AND FOLDERS
|
||||||
//-----------------------
|
//-----------------------
|
||||||
if (sizeof($dirs) > 0) {
|
if (sizeof($dirs) > 0) {
|
||||||
foreach ($dirs as $key => $row) {
|
foreach ($dirs as $key => $row) {
|
||||||
if ($row["name"] == "") {
|
if ($row["name"] == "") {
|
||||||
unset($dirs[$key]); //Delete empty array entries
|
unset($dirs[$key]); //Delete empty array entries
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$name[$key] = strtolower($row['name']);
|
$name[$key] = strtolower($row['name']);
|
||||||
$date[$key] = strtolower($row['date']);
|
$date[$key] = strtolower($row['date']);
|
||||||
}
|
}
|
||||||
@array_multisort($$sorting_folders, $sortdir_folders, $name, $sortdir_folders, $dirs);
|
@array_multisort($$sorting_folders, $sortdir_folders, $name, $sortdir_folders, $dirs);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeof($files) > 0) {
|
if (sizeof($files) > 0) {
|
||||||
foreach ($files as $key => $row) {
|
foreach ($files as $key => $row) {
|
||||||
if ($row["name"] == "") {
|
if ($row["name"] == "") {
|
||||||
unset($files[$key]); //Delete empty array entries
|
unset($files[$key]); //Delete empty array entries
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$name[$key] = strtolower($row['name']);
|
$name[$key] = strtolower($row['name']);
|
||||||
$date[$key] = strtolower($row['date']);
|
$date[$key] = strtolower($row['date']);
|
||||||
$size[$key] = strtolower($row['size']);
|
$size[$key] = strtolower($row['size']);
|
||||||
}
|
}
|
||||||
@array_multisort($$sorting_files, $sortdir_files, $name, SORT_ASC, $files);
|
@array_multisort($$sorting_files, $sortdir_files, $name, SORT_ASC, $files);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// OFFSET DETERMINATION
|
// OFFSET DETERMINATION
|
||||||
//-----------------------
|
//-----------------------
|
||||||
if (!isset($_GET["page"]))
|
if (!isset($_GET["page"])) {
|
||||||
$_GET["page"] = 1;
|
$_GET["page"] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
$offset_start = ($_GET["page"] * $thumbs_pr_page) - $thumbs_pr_page;
|
$offset_start = ($_GET["page"] * $thumbs_pr_page) - $thumbs_pr_page;
|
||||||
$offset_end = $offset_start + $thumbs_pr_page;
|
$offset_end = $offset_start + $thumbs_pr_page;
|
||||||
if ($offset_end > sizeof($dirs) + sizeof($files))
|
if ($offset_end > sizeof($dirs) + sizeof($files)) {
|
||||||
$offset_end = sizeof($dirs) + sizeof($files);
|
$offset_end = sizeof($dirs) + sizeof($files);
|
||||||
|
}
|
||||||
|
|
||||||
if ($_GET["page"] == "all" || $lazyload) {
|
if ($_GET["page"] == "all" || $lazyload) {
|
||||||
$offset_start = 0;
|
$offset_start = 0;
|
||||||
$offset_end = sizeof($dirs) + sizeof($files);
|
$offset_end = sizeof($dirs) + sizeof($files);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// PAGE NAVIGATION
|
// PAGE NAVIGATION
|
||||||
//-----------------------
|
//-----------------------
|
||||||
if (!$lazyload && sizeof($dirs) + sizeof($files) > $thumbs_pr_page) {
|
if (!$lazyload && sizeof($dirs) + sizeof($files) > $thumbs_pr_page) {
|
||||||
$page_navigation .= "$label_page ";
|
$page_navigation .= "$label_page ";
|
||||||
for ($i = 1; $i <= ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page); $i++) {
|
for ($i = 1; $i <= ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page); $i++) {
|
||||||
if ($_GET["page"] == $i)
|
if ($_GET["page"] == $i) {
|
||||||
$page_navigation .= "$i";
|
$page_navigation .= "$i";
|
||||||
else
|
} else {
|
||||||
$page_navigation .= "<a href='?dir=" . $requestedDir . "&page=" . ($i) . "'>" . $i . "</a>";
|
$page_navigation .= "<a href='?dir=" . $requestedDir . "&page=" . ($i) . "'>" . $i . "</a>";
|
||||||
if ($i != ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page))
|
}
|
||||||
$page_navigation .= " | ";
|
|
||||||
}
|
if ($i != ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page)) {
|
||||||
//Insert link to view all images
|
$page_navigation .= " | ";
|
||||||
if ($_GET["page"] == "all")
|
}
|
||||||
$page_navigation .= " | $label_all";
|
|
||||||
else
|
}
|
||||||
$page_navigation .= " | <a href='?dir=" . $requestedDir . "&page=all'>$label_all</a>";
|
//Insert link to view all images
|
||||||
|
if ($_GET["page"] == "all") {
|
||||||
|
$page_navigation .= " | $label_all";
|
||||||
|
} else {
|
||||||
|
$page_navigation .= " | <a href='?dir=" . $requestedDir . "&page=all'>$label_all</a>";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// BREADCRUMB NAVIGATION
|
// BREADCRUMB NAVIGATION
|
||||||
//-----------------------
|
//-----------------------
|
||||||
if ($requestedDir != "" && $requestedDir != "photos") {
|
if ($requestedDir != "" && $requestedDir != "photos") {
|
||||||
$breadcrumb_navigation = "<div class=\"NavWrapper\">";
|
$breadcrumb_navigation = "<div class=\"NavWrapper\">";
|
||||||
$breadcrumb_navigation .= "<a href='?dir='>" . $label_home . "</a> $breadcrumb_separator ";
|
$breadcrumb_navigation .= "<a href='?dir='>" . $label_home . "</a> $breadcrumb_separator ";
|
||||||
$navitems = explode("/", htmlspecialchars($_REQUEST['dir']));
|
$navitems = explode("/", htmlspecialchars($_REQUEST['dir']));
|
||||||
for ($i = 0; $i < sizeof($navitems); $i++) {
|
for ($i = 0; $i < sizeof($navitems); $i++) {
|
||||||
if ($i == sizeof($navitems)-1) {
|
if ($i == sizeof($navitems) - 1) {
|
||||||
$breadcrumb_navigation .= $navitems[$i];
|
$breadcrumb_navigation .= $navitems[$i];
|
||||||
} else {
|
} else {
|
||||||
$breadcrumb_navigation .= "<a href='?dir=";
|
$breadcrumb_navigation .= "<a href='?dir=";
|
||||||
for ($x = 0; $x <= $i; $x++) {
|
for ($x = 0; $x <= $i; $x++) {
|
||||||
$breadcrumb_navigation .= $navitems[$x];
|
$breadcrumb_navigation .= $navitems[$x];
|
||||||
if ($x < $i)
|
if ($x < $i) {
|
||||||
$breadcrumb_navigation .= "/";
|
$breadcrumb_navigation .= "/";
|
||||||
}
|
}
|
||||||
$breadcrumb_navigation .= "'>" . $navitems[$i] . "</a> $breadcrumb_separator ";
|
|
||||||
}
|
}
|
||||||
}
|
$breadcrumb_navigation .= "'>" . $navitems[$i] . "</a> $breadcrumb_separator ";
|
||||||
$breadcrumb_navigation .= "</div>";
|
}
|
||||||
|
}
|
||||||
|
$breadcrumb_navigation .= "</div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
//Include hidden links for all images BEFORE current page so lightbox is able to browse images on different pages
|
//Include hidden links for all images BEFORE current page so lightbox is able to browse images on different pages
|
||||||
for ($y = 0; $y < $offset_start - sizeof($dirs); $y++) {
|
for ($y = 0; $y < $offset_start - sizeof($dirs); $y++) {
|
||||||
$breadcrumb_navigation .= "<a href='" . $currentdir . "/" . $files[$y]["name"] . "' class='hidden' title='" . $img_captions[$files[$y]["name"]] . "'></a>";
|
$breadcrumb_navigation .= "<a href='" . $currentdir . "/" . $files[$y]["name"] . "' class='hidden' title='" . $img_captions[$files[$y]["name"]] . "'></a>";
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// DISPLAY FOLDERS
|
// DISPLAY FOLDERS
|
||||||
//-----------------------
|
//-----------------------
|
||||||
if (count($dirs) + count($files) == 0) {
|
if (count($dirs) + count($files) == 0) {
|
||||||
$thumbnails .= "<div class=\"Empty\">$label_noimages</div> <div class=\"EmptyAdvice\">$label_noimages_advice</div>"; //Display 'no images' text
|
$thumbnails .= "<div class=\"Empty\">$label_noimages</div> <div class=\"EmptyAdvice\">$label_noimages_advice</div>"; //Display 'no images' text
|
||||||
if ($currentdir == "photos") {
|
if ($currentdir == "photos") {
|
||||||
$messages =
|
$messages =
|
||||||
"It looks like you have just installed MiniGal Nano.
|
"It looks like you have just installed MiniGal Nano.
|
||||||
Please run the <a href='system_check.php'>system check tool</a>. <br>
|
Please run the <a href='system_check.php'>system check tool</a>. <br>
|
||||||
And why not have a look to config.php and customize some values ?";
|
And why not have a look to config.php and customize some values ?";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$offset_current = $offset_start;
|
$offset_current = $offset_start;
|
||||||
for ($x = $offset_start; $x < sizeof($dirs) && $x < $offset_end; $x++) {
|
for ($x = $offset_start; $x < sizeof($dirs) && $x < $offset_end; $x++) {
|
||||||
$offset_current++;
|
$offset_current++;
|
||||||
$thumbnails .= $dirs[$x]["html"];
|
$thumbnails .= $dirs[$x]["html"];
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// DISPLAY FILES
|
// DISPLAY FILES
|
||||||
//-----------------------
|
//-----------------------
|
||||||
for ($i = $offset_start - sizeof($dirs); $i < $offset_end && $offset_current < $offset_end; $i++) {
|
for ($i = $offset_start - sizeof($dirs); $i < $offset_end && $offset_current < $offset_end; $i++) {
|
||||||
if ($i >= 0) {
|
if ($i >= 0) {
|
||||||
$offset_current++;
|
$offset_current++;
|
||||||
$thumbnails .= $files[$i]["html"];
|
$thumbnails .= $files[$i]["html"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Include hidden links for all images AFTER current page so lightbox is able to browse images on different pages
|
//Include hidden links for all images AFTER current page so lightbox is able to browse images on different pages
|
||||||
if ($i < 0)
|
if ($i < 0) {
|
||||||
$i = 1;
|
$i = 1;
|
||||||
|
}
|
||||||
|
|
||||||
for ($y = $i; $y < sizeof($files); $y++) {
|
for ($y = $i; $y < sizeof($files); $y++) {
|
||||||
$page_navigation .= "<a href='" . $currentdir . "/" . $files[$y]["name"] . "' class='hidden' title='" . $img_captions[$files[$y]["name"]] . "'></a>";
|
$page_navigation .= "<a href='" . $currentdir . "/" . $files[$y]["name"] . "' class='hidden' title='" . $img_captions[$files[$y]["name"]] . "'></a>";
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------
|
//-----------------------
|
||||||
// OUTPUT MESSAGES
|
// OUTPUT MESSAGES
|
||||||
//-----------------------
|
//-----------------------
|
||||||
if ($messages != "") {
|
if ($messages != "") {
|
||||||
$messages = $messages . "<div><a id=\"closeMessage\" class=\"closeMessage\" href=\"#\"><img src=\"images/close.png\" /></a><div>";
|
$messages = $messages . "<div><a id=\"closeMessage\" class=\"closeMessage\" href=\"#\"><img src=\"images/close.png\" /></a><div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read folder comment.
|
// Read folder comment.
|
||||||
$comment_filepath = $currentdir . $file . "/comment.html";
|
$comment_filepath = $currentdir . $file . "/comment.html";
|
||||||
if (file_exists($comment_filepath)) {
|
if (file_exists($comment_filepath)) {
|
||||||
$fd = fopen($comment_filepath, "r");
|
$fd = fopen($comment_filepath, "r");
|
||||||
$comment = "<div class=\"Comment\">" . fread($fd, filesize($comment_filepath)) . "</div>";
|
$comment = "<div class=\"Comment\">" . fread($fd, filesize($comment_filepath)) . "</div>";
|
||||||
fclose($fd);
|
fclose($fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
//PROCESS TEMPLATE FILE
|
//PROCESS TEMPLATE FILE
|
||||||
if (GALLERY_ROOT != "")
|
if (GALLERY_ROOT != "") {
|
||||||
$templatefile = GALLERY_ROOT . "templates/integrate.html";
|
$templatefile = GALLERY_ROOT . "templates/integrate.html";
|
||||||
else
|
} else {
|
||||||
$templatefile = "templates/" . $templatefile . ".html";
|
$templatefile = "templates/" . $templatefile . ".html";
|
||||||
|
}
|
||||||
|
|
||||||
if (!$fd = fopen($templatefile, "r")) {
|
if (!$fd = fopen($templatefile, "r")) {
|
||||||
echo "Template ".htmlspecialchars(stripslashes($templatefile))." not found!";
|
echo "Template " . htmlspecialchars(stripslashes($templatefile)) . " not found!";
|
||||||
exit();
|
exit();
|
||||||
} else {
|
} else {
|
||||||
$template = fread($fd, filesize ($templatefile));
|
$template = fread($fd, filesize($templatefile));
|
||||||
fclose($fd);
|
fclose($fd);
|
||||||
$template = stripslashes($template);
|
$template = stripslashes($template);
|
||||||
$template = preg_replace("/<% title %>/", $title, $template);
|
$template = preg_replace("/<% title %>/", $title, $template);
|
||||||
$template = preg_replace("/<% messages %>/", $messages, $template);
|
$template = preg_replace("/<% messages %>/", $messages, $template);
|
||||||
$template = preg_replace("/<% author %>/", $author, $template);
|
$template = preg_replace("/<% author %>/", $author, $template);
|
||||||
$template = preg_replace("/<% gallery_root %>/", GALLERY_ROOT, $template);
|
$template = preg_replace("/<% gallery_root %>/", GALLERY_ROOT, $template);
|
||||||
$template = preg_replace("/<% images %>/", "$images", $template);
|
$template = preg_replace("/<% images %>/", "$images", $template);
|
||||||
$template = preg_replace("/<% thumbnails %>/", "$thumbnails", $template);
|
$template = preg_replace("/<% thumbnails %>/", "$thumbnails", $template);
|
||||||
$template = preg_replace("/<% breadcrumb_navigation %>/", "$breadcrumb_navigation", $template);
|
$template = preg_replace("/<% breadcrumb_navigation %>/", "$breadcrumb_navigation", $template);
|
||||||
$template = preg_replace("/<% page_navigation %>/", "$page_navigation", $template);
|
$template = preg_replace("/<% page_navigation %>/", "$page_navigation", $template);
|
||||||
$template = preg_replace("/<% folder_comment %>/", "$comment", $template);
|
$template = preg_replace("/<% folder_comment %>/", "$comment", $template);
|
||||||
$template = preg_replace("/<% bgcolor %>/", "$backgroundcolor", $template);
|
$template = preg_replace("/<% bgcolor %>/", "$backgroundcolor", $template);
|
||||||
$template = preg_replace("/<% gallery_width %>/", "$gallery_width", $template);
|
$template = preg_replace("/<% gallery_width %>/", "$gallery_width", $template);
|
||||||
$template = preg_replace("/<% version %>/", "$version", $template);
|
$template = preg_replace("/<% version %>/", "$version", $template);
|
||||||
echo "$template";
|
echo "$template";
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
$path_to_minigalnano = "minigalnano/"; // <- Enter RELATIVE path to MiniGal Nano here (eg. "subfolder/minigalnano") - DO NOT END WITH /
|
$path_to_minigalnano = "minigalnano/"; // <- Enter RELATIVE path to MiniGal Nano here (eg. "subfolder/minigalnano") - DO NOT END WITH /
|
||||||
|
|
||||||
// DO NOT EDIT BELOW THIS LINE!
|
// DO NOT EDIT BELOW THIS LINE!
|
||||||
define("GALLERY_ROOT", $path_to_minigalnano);
|
define("GALLERY_ROOT", $path_to_minigalnano);
|
||||||
require(GALLERY_ROOT . "index.php");
|
require GALLERY_ROOT . "index.php";
|
||||||
?>
|
?>
|
224
rss.php
224
rss.php
|
@ -4,11 +4,11 @@
|
||||||
/*============================*/
|
/*============================*/
|
||||||
|
|
||||||
if (!empty($_SERVER['REQUEST_SCHEME'])) {
|
if (!empty($_SERVER['REQUEST_SCHEME'])) {
|
||||||
$g_protocol = $_SERVER['REQUEST_SCHEME'];
|
$g_protocol = $_SERVER['REQUEST_SCHEME'];
|
||||||
} elseif (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
|
} elseif (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
|
||||||
$g_protocol = 'https';
|
$g_protocol = 'https';
|
||||||
} else {
|
} else {
|
||||||
$g_protocol = 'http';
|
$g_protocol = 'http';
|
||||||
}
|
}
|
||||||
$g_host = $_SERVER['HTTP_HOST'];
|
$g_host = $_SERVER['HTTP_HOST'];
|
||||||
$g_port = $_SERVER['SERVER_PORT'];
|
$g_port = $_SERVER['SERVER_PORT'];
|
||||||
|
@ -16,14 +16,14 @@ $g_path = dirname($_SERVER['REQUEST_URI']);
|
||||||
|
|
||||||
// remove default ports
|
// remove default ports
|
||||||
if (($g_protocol == 'https' && $g_port == '443') ||
|
if (($g_protocol == 'https' && $g_port == '443') ||
|
||||||
($g_protocol == 'http' && $g_port == '80')) {
|
($g_protocol == 'http' && $g_port == '80')) {
|
||||||
$g_port = '';
|
$g_port = '';
|
||||||
} else {
|
} else {
|
||||||
$g_port = ':' . $g_port;
|
$g_port = ':' . $g_port;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($g_path[0] != '/') {
|
if ($g_path[0] != '/') {
|
||||||
$g_path = '/' . $g_path;
|
$g_path = '/' . $g_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
$gallery_link = $g_protocol . '://' . $g_host . $g_port . $g_path;
|
$gallery_link = $g_protocol . '://' . $g_host . $g_port . $g_path;
|
||||||
|
@ -32,115 +32,115 @@ $gallery_link = $g_protocol . '://' . $g_host . $g_port . $g_path;
|
||||||
/* Functions */
|
/* Functions */
|
||||||
/*===================*/
|
/*===================*/
|
||||||
# Hardly inspired from here : codes-sources.commentcamarche.net/source/35937-creation-d-une-arborescenceI
|
# Hardly inspired from here : codes-sources.commentcamarche.net/source/35937-creation-d-une-arborescenceI
|
||||||
# Listing all files of a folder and sub folders.
|
# Listing all files of a folder and sub folders.
|
||||||
function listFiles(&$content, $Folder, $SkipFileExts, $SkipObjects)
|
function listFiles(&$content, $Folder, $SkipFileExts, $SkipObjects) {
|
||||||
{
|
$dir = opendir($Folder);
|
||||||
$dir = opendir($Folder);
|
// Loop on all contained on the folder
|
||||||
// Loop on all contained on the folder
|
while (false !== ($Current = readdir($dir))) {
|
||||||
while (false !== ($Current = readdir($dir))) {
|
if ($Current != '.' && $Current != '..' && in_array($Current, $SkipObjects) === false) {
|
||||||
if ($Current !='.' && $Current != '..' && in_array($Current, $SkipObjects) === false) {
|
if (is_dir($Folder . '/' . $Current)) {
|
||||||
if (is_dir($Folder.'/'.$Current)) {
|
ListFiles($content, $Folder . '/' . $Current, $SkipFileExts, $SkipObjects);
|
||||||
ListFiles($content, $Folder . '/' . $Current, $SkipFileExts, $SkipObjects);
|
} else {
|
||||||
} else {
|
$FileExt = strtolower(substr(strrchr($Current, '.'), 1));
|
||||||
$FileExt = strtolower(substr(strrchr($Current, '.'), 1));
|
// Should we display this extension ?
|
||||||
// Should we display this extension ?
|
if (in_array($FileExt, $SkipFileExts) === false) {
|
||||||
if (in_array($FileExt, $SkipFileExts) === false) {
|
$current_adress = $Folder . '/' . $Current;
|
||||||
$current_adress = $Folder.'/'. $Current;
|
array_push($content, $current_adress);
|
||||||
array_push($content, $current_adress);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
closedir($dir);
|
||||||
closedir($dir);
|
return $content;
|
||||||
return $content;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Paul's Simple Diff Algorithm v 0.1 : http://paulbutler.org/archives/a-simple-diff-algorithm-in-php/
|
# Paul's Simple Diff Algorithm v 0.1 : http://paulbutler.org/archives/a-simple-diff-algorithm-in-php/
|
||||||
function diff($old, $new)
|
function diff($old, $new) {
|
||||||
{
|
$matrix = array();
|
||||||
$matrix = array();
|
$maxlen = 0;
|
||||||
$maxlen = 0;
|
foreach ($old as $oindex => $ovalue) {
|
||||||
foreach ($old as $oindex => $ovalue) {
|
$nkeys = array_keys($new, $ovalue);
|
||||||
$nkeys = array_keys($new, $ovalue);
|
foreach ($nkeys as $nindex) {
|
||||||
foreach ($nkeys as $nindex) {
|
$matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
|
||||||
$matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
|
$matrix[$oindex - 1][$nindex - 1] + 1 : 1;
|
||||||
$matrix[$oindex - 1][$nindex - 1] + 1 : 1;
|
if ($matrix[$oindex][$nindex] > $maxlen) {
|
||||||
if ($matrix[$oindex][$nindex] > $maxlen) {
|
$maxlen = $matrix[$oindex][$nindex];
|
||||||
$maxlen = $matrix[$oindex][$nindex];
|
$omax = $oindex + 1 - $maxlen;
|
||||||
$omax = $oindex + 1 - $maxlen;
|
$nmax = $nindex + 1 - $maxlen;
|
||||||
$nmax = $nindex + 1 - $maxlen;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
if ($maxlen == 0) {
|
||||||
if ($maxlen == 0)
|
return array(array('d' => $old, 'i' => $new));
|
||||||
return array(array('d'=>$old, 'i'=>$new));
|
}
|
||||||
return array_merge(
|
|
||||||
diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
|
return array_merge(
|
||||||
array_slice($new, $nmax, $maxlen),
|
diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
|
||||||
diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
|
array_slice($new, $nmax, $maxlen),
|
||||||
|
diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===================*/
|
/*===================*/
|
||||||
/* Variables */
|
/* Variables */
|
||||||
/*===================*/
|
/*===================*/
|
||||||
require("config-default.php");
|
require "config-default.php";
|
||||||
include("config.php");
|
include "config.php";
|
||||||
$folder = "photos";
|
$folder = "photos";
|
||||||
|
|
||||||
$content = array();
|
$content = array();
|
||||||
$content = listFiles($content, $folder, $SkipExts, $SkipObjects);
|
$content = listFiles($content, $folder, $SkipExts, $SkipObjects);
|
||||||
usort($content, function ($a, $b) { return filemtime($a) < filemtime($b); });
|
usort($content, function ($a, $b) {return filemtime($a) < filemtime($b);});
|
||||||
|
|
||||||
if (is_writeable(".")) {
|
if (is_writeable(".")) {
|
||||||
$to_store = "";
|
$to_store = "";
|
||||||
$old_files_list = "db_old_files"; //list of files in ./photos
|
$old_files_list = "db_old_files"; //list of files in ./photos
|
||||||
$db_feed_source = "db_feed_source";
|
$db_feed_source = "db_feed_source";
|
||||||
$db_rss_timestamp = "db_rss_timestamp";
|
$db_rss_timestamp = "db_rss_timestamp";
|
||||||
|
|
||||||
// Init files
|
// Init files
|
||||||
if (!file_exists($old_files_list)) {
|
if (!file_exists($old_files_list)) {
|
||||||
file_put_contents($old_files_list, "");
|
file_put_contents($old_files_list, "");
|
||||||
}
|
}
|
||||||
if (!file_exists($db_feed_source)) {
|
if (!file_exists($db_feed_source)) {
|
||||||
file_put_contents($db_feed_source, "");
|
file_put_contents($db_feed_source, "");
|
||||||
}
|
}
|
||||||
if (!file_exists($db_rss_timestamp)) {
|
if (!file_exists($db_rss_timestamp)) {
|
||||||
file_put_contents($db_rss_timestamp, "");
|
file_put_contents($db_rss_timestamp, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===================*/
|
/*===================*/
|
||||||
/* Computing */
|
/* Computing */
|
||||||
/*===================*/
|
/*===================*/
|
||||||
#Todo : ajouter une condition : dois-je regénérer le flux ou utiliser les anciens fichiers ?
|
#Todo : ajouter une condition : dois-je regénérer le flux ou utiliser les anciens fichiers ?
|
||||||
$temp = file_get_contents($db_feed_source);
|
$temp = file_get_contents($db_feed_source);
|
||||||
$last_rss_gen = file_get_contents($db_rss_timestamp);
|
$last_rss_gen = file_get_contents($db_rss_timestamp);
|
||||||
$current_time = time();
|
$current_time = time();
|
||||||
// If the RSS generation is already launched, don't do a second generation at the same time
|
// If the RSS generation is already launched, don't do a second generation at the same time
|
||||||
if (($current_time - $last_rss_gen) > $rss_refresh_interval && file_exists("rss.locker") == false) {
|
if (($current_time - $last_rss_gen) > $rss_refresh_interval && file_exists("rss.locker") == false) {
|
||||||
file_put_contents("rss.locker", "");
|
file_put_contents("rss.locker", "");
|
||||||
file_put_contents($db_rss_timestamp, time());
|
file_put_contents($db_rss_timestamp, time());
|
||||||
// Load the list from files.
|
// Load the list from files.
|
||||||
$old_files_list_content = explode("\n", file_get_contents($old_files_list));
|
$old_files_list_content = explode("\n", file_get_contents($old_files_list));
|
||||||
$new_files_list_content = $content; #debug
|
$new_files_list_content = $content; #debug
|
||||||
// Generate and stock new elements
|
// Generate and stock new elements
|
||||||
$differences = diff($old_files_list_content, $new_files_list_content);
|
$differences = diff($old_files_list_content, $new_files_list_content);
|
||||||
for ($i=0; $i < count($differences); $i++) {
|
for ($i = 0; $i < count($differences); $i++) {
|
||||||
if (is_array($differences[$i])) {
|
if (is_array($differences[$i])) {
|
||||||
for ($j=0; $j < count($differences[$i]["i"]); $j++) {
|
for ($j = 0; $j < count($differences[$i]["i"]); $j++) {
|
||||||
if (strlen($differences[$i]["i"][$j]) > 2) {
|
if (strlen($differences[$i]["i"][$j]) > 2) {
|
||||||
$to_store .= $differences[$i]["i"][$j] . "\n";
|
$to_store .= $differences[$i]["i"][$j] . "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add new elements at the top of the feed's source
|
// Add new elements at the top of the feed's source
|
||||||
$temp = $to_store . $temp;
|
$temp = $to_store . $temp;
|
||||||
file_put_contents($db_feed_source, $temp);
|
file_put_contents($db_feed_source, $temp);
|
||||||
// Store the current file list for the next generation
|
// Store the current file list for the next generation
|
||||||
file_put_contents($old_files_list, join("/n", $content));
|
file_put_contents($old_files_list, join("/n", $content));
|
||||||
unlink("rss.locker");
|
unlink("rss.locker");
|
||||||
}
|
}
|
||||||
$content = explode("\n", $temp);
|
$content = explode("\n", $temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*===================*/
|
/*===================*/
|
||||||
|
@ -152,16 +152,18 @@ echo "<rss version='2.0'>\n<channel>";
|
||||||
echo "<title>$title</title>";
|
echo "<title>$title</title>";
|
||||||
echo "<link>$gallery_link</link>";
|
echo "<link>$gallery_link</link>";
|
||||||
echo "<description>$description</description>\n";
|
echo "<description>$description</description>\n";
|
||||||
for ($i=0; $i < $nb_items_rss && $i < count($content); $i++) {
|
for ($i = 0; $i < $nb_items_rss && $i < count($content); $i++) {
|
||||||
if (empty($content[$i]))
|
if (empty($content[$i])) {
|
||||||
continue;
|
continue;
|
||||||
$link = $gallery_link . '/' . str_replace(' ', '%20', $content[$i]);
|
}
|
||||||
echo "<item>\n";
|
|
||||||
echo " <title>" . basename($link) . "</title>\n";
|
$link = $gallery_link . '/' . str_replace(' ', '%20', $content[$i]);
|
||||||
echo " <link>". $link . "</link>\n";
|
echo "<item>\n";
|
||||||
echo " <guid>". $link . "</guid>\n";
|
echo " <title>" . basename($link) . "</title>\n";
|
||||||
echo " <description><![CDATA[ <img src='" . $link . "'> ]]></description>\n";
|
echo " <link>" . $link . "</link>\n";
|
||||||
echo " <pubDate>" . date ("D, j M Y H:i:s O", filemtime($content[$i])) . "</pubDate>";
|
echo " <guid>" . $link . "</guid>\n";
|
||||||
echo "</item>\n";
|
echo " <description><![CDATA[ <img src='" . $link . "'> ]]></description>\n";
|
||||||
|
echo " <pubDate>" . date("D, j M Y H:i:s O", filemtime($content[$i])) . "</pubDate>";
|
||||||
|
echo "</item>\n";
|
||||||
}
|
}
|
||||||
echo "</channel></rss>\n";
|
echo "</channel></rss>\n";
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
<?php
|
<?php
|
||||||
ini_set("memory_limit","256M");
|
ini_set("memory_limit", "256M");
|
||||||
$exif = "No";
|
$exif = "No";
|
||||||
$gd = "No";
|
$gd = "No";
|
||||||
$thumbs = "No";
|
$thumbs = "No";
|
||||||
if (function_exists('exif_read_data')) $exif = "Yes";
|
if (function_exists('exif_read_data')) {
|
||||||
if (extension_loaded('gd') && function_exists('gd_info')) $gd = "Yes";
|
$exif = "Yes";
|
||||||
if (is_dir('thumbs') && is_writable('thumbs')) $thumbs = "Yes";
|
}
|
||||||
|
|
||||||
|
if (extension_loaded('gd') && function_exists('gd_info')) {
|
||||||
|
$gd = "Yes";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_dir('thumbs') && is_writable('thumbs')) {
|
||||||
|
$thumbs = "Yes";
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
@ -61,7 +70,7 @@
|
||||||
display: inline-table;
|
display: inline-table;
|
||||||
background-color: #eaf1ea;
|
background-color: #eaf1ea;
|
||||||
padding: 2px;
|
padding: 2px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -69,8 +78,13 @@
|
||||||
<div class="left">
|
<div class="left">
|
||||||
PHP Version
|
PHP Version
|
||||||
</div>
|
</div>
|
||||||
<div class="<?php if(version_compare(phpversion(), "4.0", '>')) echo 'middle-yes'; else echo 'middle-no' ?>">
|
<div class="<?php if (version_compare(phpversion(), "4.0", '>')) {
|
||||||
<?php echo phpversion(); ?>
|
echo 'middle-yes';
|
||||||
|
} else {
|
||||||
|
echo 'middle-no';
|
||||||
|
}
|
||||||
|
?>">
|
||||||
|
<?php echo phpversion();?>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<a href="http://www.php.net/" target="_blank">PHP</a> scripting language version 4.0 or greater is needed.
|
<a href="http://www.php.net/" target="_blank">PHP</a> scripting language version 4.0 or greater is needed.
|
||||||
|
@ -80,8 +94,13 @@
|
||||||
<div class="left">
|
<div class="left">
|
||||||
GD library support
|
GD library support
|
||||||
</div>
|
</div>
|
||||||
<div class="<?php if($gd == "Yes") echo 'middle-yes'; else echo 'middle-no' ?>">
|
<div class="<?php if ($gd == "Yes") {
|
||||||
<?php echo $gd; ?>
|
echo 'middle-yes';
|
||||||
|
} else {
|
||||||
|
echo 'middle-no';
|
||||||
|
}
|
||||||
|
?>">
|
||||||
|
<?php echo $gd;?>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<a href="http://www.boutell.com/gd/" target="_blank">GD image manipulation</a> library is used to create thumbnails. Bundled since PHP 4.3.
|
<a href="http://www.boutell.com/gd/" target="_blank">GD image manipulation</a> library is used to create thumbnails. Bundled since PHP 4.3.
|
||||||
|
@ -91,8 +110,13 @@
|
||||||
<div class="left">
|
<div class="left">
|
||||||
EXIF support
|
EXIF support
|
||||||
</div>
|
</div>
|
||||||
<div class="<?php if($exif == "Yes") echo 'middle-yes'; else echo 'middle-neutral' ?>">
|
<div class="<?php if ($exif == "Yes") {
|
||||||
<?php echo $exif; ?>
|
echo 'middle-yes';
|
||||||
|
} else {
|
||||||
|
echo 'middle-neutral';
|
||||||
|
}
|
||||||
|
?>">
|
||||||
|
<?php echo $exif;?>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
Ability to extract and display <a href="http://en.wikipedia.org/wiki/Exif" target="_blank">EXIF information</a>. The script will work without it, but not display image information.
|
Ability to extract and display <a href="http://en.wikipedia.org/wiki/Exif" target="_blank">EXIF information</a>. The script will work without it, but not display image information.
|
||||||
|
@ -102,8 +126,13 @@
|
||||||
<div class="left">
|
<div class="left">
|
||||||
Thumbnails caching
|
Thumbnails caching
|
||||||
</div>
|
</div>
|
||||||
<div class="<?php if($thumbs == "Yes") echo 'middle-yes'; else echo 'middle-neutral' ?>">
|
<div class="<?php if ($thumbs == "Yes") {
|
||||||
<?php echo $thumbs; ?>
|
echo 'middle-yes';
|
||||||
|
} else {
|
||||||
|
echo 'middle-neutral';
|
||||||
|
}
|
||||||
|
?>">
|
||||||
|
<?php echo $thumbs;?>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
You should let php create and use the 'thumbs" directory. MiniGal will be <b>much</b> faster.
|
You should let php create and use the 'thumbs" directory. MiniGal will be <b>much</b> faster.
|
||||||
|
@ -114,13 +143,11 @@
|
||||||
PHP memory limit
|
PHP memory limit
|
||||||
</div>
|
</div>
|
||||||
<div class="middle-neutral">
|
<div class="middle-neutral">
|
||||||
<?php echo ini_get("memory_limit"); ?>
|
<?php echo ini_get("memory_limit");?>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
Memory is needed to create thumbnails. Bigger images uses more memory.
|
Memory is needed to create thumbnails. Bigger images uses more memory.
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<footer role="contentinfo">
|
<footer role="contentinfo">
|
||||||
<a href="https://github.com/sebsauvage/MinigalNano" title="Powered by MiniGal Nano" target="_blank">
|
<a href="https://github.com/sebsauvage/MinigalNano" title="Powered by MiniGal Nano" target="_blank">
|
||||||
|
|
Loading…
Reference in a new issue