printTable();
*/
/* an other sample:
$thumbnails->thumbnailsDirectory = "small";
$thumbnails->printString();
*/
// -----------------------------------------------
// print a debug string (hidden in the browser)
if (! function_exists("debug"))
{
function debug($debugString)
{ print("\n");
}
}
function directoryBefore($a, $b)
{ if (is_dir($a) && is_dir($b))
{ return strcmp($a,$b);
} else if (!is_dir($a) && !is_dir($b))
{ return strcmp($a,$b);
}
return !is_dir($a);
}
class Thumbnails
{
// Default values - You can modify
var $thumbnailsDirectory = "_thumbnails";
var $numberOfColumns = 5;
var $pathForDirectory = "/images/folder-open.png";
var $tagForTD = "
";
var $tagForTR = " | ";
var $tagForTABLE = "";
var $hiddenFiles = array(".", "index.php", ".xvpics");
// file-types icons - You can modify
var $fileTypesIcons = array(
"eps" => "/my_icons/document-icons/gnome/gnome-application-x-encapsuled_postscript.png",
"pdf" => "/my_icons/document-icons/gnome/gnome-application-pdf.png",
"ps" => "/my_icons/document-icons/gnome/gnome-application-postscript.png",
"rtf" => "/my_icons/document-icons/gnome/gnome-application-rtf.png",
"bz2" => "/my_icons/document-icons/gnome/gnome-application-x-bzip.png",
"tar" => "/my_icons/document-icons/gnome/gnome-application-x-bzip.png",
"gz" => "/my_icons/document-icons/gnome/gnome-application-x-bzip.png",
"h" => "/my_icons/document-icons/gnome/gnome-application-x-c-header.png",
"c" => "/my_icons/document-icons/gnome/gnome-application-x-c-source.png",
"cc" => "/my_icons/document-icons/gnome/gnome-application-x-cc-source.png",
"z" => "/my_icons/document-icons/gnome/gnome-application-x-compress.png",
"gnum" => "/my_icons/document-icons/gnome/gnome-application-x-gnumeric.png",
"gnumeric" => "/my_icons/document-icons/gnome/gnome-application-x-gnumeric.png",
"java" => "/my_icons/document-icons/gnome/gnome-application-x-java-source.png",
"php" => "/my_icons/document-icons/gnome/gnome-application-x-php.png",
"mp3" => "/my_icons/document-icons/gnome/gnome-audio-mpeg.png",
"bmp" => "/my_icons/document-icons/gnome/gnome-image-bmp.png",
"gif" => "/my_icons/document-icons/gnome/gnome-image-gif.png",
"jpg" => "/my_icons/document-icons/gnome/gnome-image-jpeg.png",
"jpeg" => "/my_icons/document-icons/gnome/gnome-image-jpeg.png",
"png" => "/my_icons/document-icons/gnome/gnome-image-png.png",
"svg" => "/my_icons/document-icons/gnome/gnome-image-svg.png",
"tga" => "/my_icons/document-icons/gnome/gnome-image-tga.png",
"tif" => "/my_icons/document-icons/gnome/gnome-image-tiff.png",
"tiff" => "/my_icons/document-icons/gnome/gnome-image-tiff.png",
"xpm" => "/my_icons/document-icons/gnome/gnome-image-xpm.png",
"deb" => "/my_icons/document-icons/gnome/gnome-pack-deb.png",
"rpm" => "/my_icons/document-icons/gnome/gnome-pack-rpm.png",
"tex" => "/my_icons/document-icons/gnome/gnome-tex.png",
"htm" => "/my_icons/document-icons/gnome/gnome-text-html.png",
"html" => "/my_icons/document-icons/gnome/gnome-text-html.png",
"pl" => "/my_icons/document-icons/gnome/gnome-text-x-perl.png",
"xml" => "/my_icons/document-icons/gnome/gnome-text-xml.png",
"txt" => "/my_icons/document-icons/gnome/gnome-textfile.png",
"mpg" => "/my_icons/document-icons/gnome/gnome-video-mpeg.png",
"mpeg" => "/my_icons/document-icons/gnome/gnome-video-mpeg.png",
"mov" => "/my_icons/document-icons/gnome/gnome-video-quicktime.png",
"asf" => "/my_icons/document-icons/gnome/gnome-video-x-ms-asf.png",
"avi" => "/my_icons/document-icons/gnome/gnome-video-x-msvideo.png",
"" => "/my_icons/document-icons/gnome/gnome-file.png"
);
// instance variables - do NOT modify
var $files;
var $images;
// -----------------------------------------------
// Return the image to display for the reference
function imageForReference($reference)
{
// for directory, display a special image.
if (is_dir($reference))
{ return $this->pathForDirectory;
}
// extract the extension of the file (look at the last index of the character '.').
$indexOfDot = strpos($reference,".");
$extension = substr($reference,$indexOfDot+1,strlen($reference));
$indexOfDot = strpos($extension,".");
while ($indexOfDot != 0)
{ $extension = substr($extension,$indexOfDot+1,strlen($extension));
$indexOfDot = strpos($extension,".");
}
switch($extension)
{ case "png":
case "jpg":
case "gif":
case "jpeg":
// if the reference has a thumbnail, display it.
if (in_array($reference, $this->images))
{ return ($this->thumbnailsDirectory . "/" . $reference);
} else
{ $sizeOfImage = getimagesize($reference);
// if the size of the image is not too wide, display it. Else, display the icon of the file-type.
if (($sizeOfImage[0] < 128) && ($sizeOfImage[1] < 128))
{ return $reference;
} else
{ return $this->fileTypesIcons[$extension];
}
}
default:
// for others files, display the icon of the file-type.
if (in_array($extension,array_keys($this->fileTypesIcons)))
{ return $this->fileTypesIcons[$extension];
} else
{ return $this->fileTypesIcons[""];
}
}
}
// -----------------------------------------------
// print the link of the reference
function linkForReference($reference)
{
$link = " ".
$this->tagForTD ."" .
"
imageForReference($reference) . "\">
".
$reference . "\n";
return $link;
}
function printLink($reference)
{
print($this->linkForReference($reference));
}
// -----------------------------------------------
// retreive files of directory
function getFilesOfCurrentDirectory()
{
$this->files = array();
$myDirectory = opendir(".");
while($entryName = readdir($myDirectory))
{
if(! in_array($entryName,$this->hiddenFiles))
{ $this->files[] = $entryName;
}
}
closedir($myDirectory);
sort($this->files);
usort($this->files,"directoryBefore");
}
// -----------------------------------------------
// retreive files of directory
function getThumbnailsImages()
{
$this->images = array();
if (! file_exists($this->thumbnailsDirectory))
{ return;
}
$myDirectory = opendir($this->thumbnailsDirectory);
while($entryName = readdir($myDirectory))
{
if($entryName != ".")
{ $this->images[] = $entryName;
}
}
closedir($myDirectory);
}
function thumbnailTable()
{
$this->hiddenFiles[] = $this->thumbnailsDirectory;
$this->getFilesOfCurrentDirectory();
$this->getThumbnailsImages();
$currentColumnNumber = 1;
$thumbnailTable = $this->tagForTABLE ."\n ". $this->tagForTR ."\n";
for ($index=0;$indexfiles);$index++)
{ $fileName = $this->files[$index];
$thumbnailTable = $thumbnailTable . $this->linkForReference($fileName,$this->imageForReference($fileName));
// $this->printLink($fileName,$this->imageForReference($fileName));
if ($currentColumnNumber == $this->numberOfColumns)
{ $currentColumnNumber = 1;
$thumbnailTable = $thumbnailTable . " \n ". $this->tagForTR ."\n";
} else
{ $currentColumnNumber = $currentColumnNumber + 1;
}
}
if ($currentColumnNumber > 1)
{
for (;$currentColumnNumber <= $this->numberOfColumns;$currentColumnNumber++)
{ $thumbnailTable = $thumbnailTable . " ". $this->tagForTD ."\n";
}
}
$thumbnailTable = $thumbnailTable . " \n
\n";
return $thumbnailTable;
}
function printTable()
{
print($this->thumbnailTable());
/*
$this->hiddenFiles[] = $this->thumbnailsDirectory;
$this->getFilesOfCurrentDirectory();
$this->getThumbnailsImages();
// debug("Begin of thumbnails on " . $this->thumbnailsDirectory);
$currentColumnNumber = 1;
print($this->tagForTABLE ."\n ". $this->tagForTR ."\n");
for ($index=0;$indexfiles);$index++)
{ $fileName = $this->files[$index];
$this->printLink($fileName,$this->imageForReference($fileName));
if ($currentColumnNumber == $this->numberOfColumns)
{ $currentColumnNumber = 1;
print("
\n ". $this->tagForTR ."\n");
} else
{ $currentColumnNumber = $currentColumnNumber + 1;
}
}
if ($currentColumnNumber > 1)
{
for (;$currentColumnNumber <= $this->numberOfColumns;$currentColumnNumber++)
{ print(" ". $this->tagForTD ."\n");
}
}
print(" \n\n");
// debug("End of thumbnails on " . $this->thumbnailsDirectory);
*/
}
}
// Get a new instance
$thumbnails = new Thumbnails;
?>