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; ?>