PHP Classes

File: syn_class.php

Recommend this page to a friend!
  Classes of Olafur Waage   synDirectory   syn_class.php   Download  
File: syn_class.php
Role: Class source
Content type: text/plain
Description: synDirectory's main class
Class: synDirectory
Retrieve and sort the current directory files
Author: By
Last change: Removed the icon files from displaying like they should have if you are using
the same location for them as the directory.
Date: 16 years ago
Size: 14,810 bytes
 

Contents

Class file image Download
<?php /** * @name SYN Directory Listing (Simple Yet Nifty) * @desc Directory Listing Class * * With this file and the original index.php that came with the package you can make * a nice simple listing of what is in that directory. * * You can also sort by name, filesize and filetype (both ascending and descending) * by clicking on the Topmost icon, "Filename" or "Size" * * @author Olafur Waage, sinai@simnet.is * @date 14.June 2007 * @credits, Icons made by Mark James ( http://www.famfamfam.com/lab/icons/silk/ ) * * Copyright © 2007 Ólafur Waage * Distributed under the terms of the GNU General Public License */ /** * Includes the language file, since its in the same directory as this file */ include("lang.php"); class synDirectory { /** * Outputs the main directory table, this can be customized if you know php a little. * * This function needs the array that the function synDir makes if you are going to call it. * Look at index.php for an example on how its done. * * @param array $array * @return HTML table */ function mainTable($array) { global $dSize, $fCount, $dCount, $lang, $config; /** * Prints out the directory name, i.e. "Index of /downloads/sources/" * So this would be the header */ if($config["show_header"] == true) { echo "<b class='synHeader'>",$lang[$config["lang"]]["index_of"]," ",$this->getDirName(),"</b>"; echo "<br /><br />"; } /** * This section of code is the first two lines of the table, the header and the "Parent Directory" line. */ ?> <table class="synTable" cellspacing="5"> <tr class="synTopTr"> <td class="synTopTd"><a href="?sort=filetype&in=<?php if($_GET["sort"] == "filetype" && $_GET["in"] == "asc" || !$_GET){ echo "desc"; }else{ echo "asc"; } ?>"><b>T</b></a></td> <td class="synTopTd"><a href="?sort=filename&in=<?php if($_GET["sort"] == "filename" && $_GET["in"] == "asc" || !$_GET){ echo "desc"; }else{ echo "asc"; } ?>"><b><?php echo $lang[$config["lang"]]["filename"]; ?></b></a></td> <td class="synTopTd" align="right"><a href="?sort=modified&in=<?php if($_GET["sort"] == "modified" && $_GET["in"] == "asc" || !$_GET){ echo "desc"; }else{ echo "asc"; } ?>"><b><?=$lang[$config["lang"]]["last_modified"]?></b></a></td> <td class="synTopTd" width="10"></td> <td class="synTopTd" align="right"><a href="?sort=size&in=<?php if($_GET["sort"] == "size" && $_GET["in"] == "asc" || !$_GET){ echo "desc"; }else{ echo "asc"; } ?>"><b><?=$lang[$config["lang"]]["size"]?></b></a></td> </tr> <?php if($config["show_parent_dir"] == true) { ?> <tr class="synParentTr"> <td class="synParentTd"> <?php if($config["show_icons"] == true) { ?> <img src="<?=$config["class_root"]?>folder_go.png" /> <?php } ?> </td> <td class="synParentTd"> <a href=".."><?=$lang[$config["lang"]]["parent_dir"]?></a> </td> <td class="synParentTd" align="right"> - </td> <td class="synParentTd" width="10"></td> <td class="synParentTd" align="right"> - </td> </tr> <?php } /** * This section of code loops through all the directories that are found within this one. */ if( is_array($array[0]) && $config["show_dir"] == true ) { foreach($array[0] as $dirData) { ?> <tr class="synFolderTr"> <td class="synFolderTd"> <?php if($config["show_icons"] == true) { ?> <img src="<?=$config["class_root"]."folder.png"?>" /> <?php } ?> </td> <td class="synFolderTd"> <a href="<?php echo $dirData; ?>"><?php echo $dirData; ?></a> </td> <td class="synFolderTd" align="right"> <?php echo date("d-M-Y H:i.s", filemtime($dirData)); ?> </td> <td class="synFolderTd" width="10"></td> <td class="synFolderTd" align="right"> - </td> </tr> <?php $dCount = $dCount + 1; } } /** * This section of code loops through all the files that are found within this directory. */ if( is_array($array[1]) && $config["show_files"] == true ) { foreach($array[1] as $fileKey => $fileData) { ?> <tr class="synFileTr"> <td class="synFileTd"> <?php if($config["show_icons"] == true) { ?> <img src="<?php echo $this->iconImage($fileData); ?>" /> <?php } ?> </td> <td class="synFileTd"> <a href="<?php echo $fileData; ?>"><?php echo $this->showFileExtension($fileData); ?></a> </td> <td class="synFileTd" align="right"> <?php echo date("d-M-Y H:i.s", filemtime($fileData)); ?> </td> <td class="synFileTd" width="10"></td> <td class="synFileTd" align="right"> <?php echo $this->fileSizeCalc($fileData); ?> </td> </tr> <?php $dSize += filesize($fileData); $fCount = $fCount + 1; } } /** * Misc statistics about the directory */ ?> <tr class="synFooterTr"> <td class="synFooterTd" colspan="2"><?=($dCount + 0)." ".$lang[$config["lang"]]["directories"].", ".($fCount + 0)." ".$lang[$config["lang"]]["files"]?></td> <td class="synFooterTd" colspan="3" align="right"><?=($fCount > 0 ? $this->byteConvert($dSize) : "")?></td> </tr> </table> <?php /** * Prints out misc server info, i.e. "Apache/1.3.33 Server at server.com Port 80" */ if($config["show_server_info"]) { echo '<br /><small>'.$_SERVER['SERVER_SIGNATURE'].'</small>'; } } /* ################################################# */ /** * Edit only the functions below if you are knowledgeable in php */ /* ################################################# */ /** * Converts bytes into human readable form * * @param int $bytes * @return parsed string */ function byteConvert($bytes) { $s = array('B', 'Kb', 'MB', 'GB', 'TB', 'PB'); $e = floor(log($bytes)/log(1024)); if($bytes == 0) { return "0 B"; } else { return sprintf('%.2f '.$s[$e], ($bytes/pow(1024, floor($e)))); } } /** * @desc File size calculator and parser * * @return string, Returns the filesize in a human readable form */ function fileSizeCalc($filename) { $filesize = filesize($filename); return $this->byteConvert($filesize); } function getDirName() { $self = substr(strrchr($_SERVER['SCRIPT_NAME'],'/'), 1); $strpos = strrpos($_SERVER['SCRIPT_NAME'], $self); $cuttofmark = strlen($_SERVER['SCRIPT_NAME']) - $strpos; $cuttofminus = '-'.$cuttofmark; return substr($_SERVER['SCRIPT_NAME'], 0, intval($cuttofminus)); } /** * If the config file is set for this, it will * display the filename without the extension. Else it will * display the full name */ function showFileExtension($filename) { global $config; /* modifies the $entry so only the filename appears */ if($config["show_file_extensions"] == true) { return $filename; } else { return substr($filename, 0, strpos($filename, ".")); } } /** * @desc Directory Array Generator * * @return array, Based on what is selected with $_GET or if $_GET is selected at all * The array returned includes the files that are in the directory */ function synDir() { global $config; $dir = dir(getcwd()); // Reads the directory and outputs into a simple array what we have in it. // Excluding the items in the first if sentance. $i = 0; while (false !== ($entry = $dir->read())) { if($entry == ".." || $entry == "." || $entry == "index.php" || $entry == "config.php" || $entry == "syn_class.php" || $entry == "lang.php" || $entry == "avi.png" || $entry == "control_repeat.png" || $entry == "doc.png" || $entry == "exe.png" || $entry == "folder.png" || $entry == "folder_go.png" || $entry == "gpl.txt" || $entry == "html.png" || $entry == "jpg.png" || $entry == "mp3.png" || $entry == "page_white.png" || $entry == "pdf.png" || $entry == "php.png" || $entry == "ppt.png" || $entry == "txt.png" || $entry == "xls.png" || $entry == "zip.png") { echo ""; } else { if( is_dir($entry) ) { if($_GET["sort"] == "modified") { $dirs[filemtime($entry).".0".$i] = $entry; } else { $dirs[] .= $entry; } } else { /* goes through all files and only displays the ones*/ /* selected in the $config show only array */ if(is_array($config["show_only"])) { $check = substr(strrchr($entry, "."), 1); if(in_array($check,$config["show_only"])) { if($_GET["sort"] == "size") { $files[filesize($entry).".0".$i] .= $entry; } elseif($_GET["sort"] == "filetype") { $fileExtension = substr(strrchr($entry, "."), 1); $fileExtension = strtolower($fileExtension); $files[$fileExtension.$entry] .= $entry; } elseif($_GET["sort"] == "modified") { $files[filemtime($entry).".0".$i] = $entry; } else { $files[] .= $entry; } } } else { if($_GET["sort"] == "size") { $files[filesize($entry).".0".$i] .= $entry; } elseif($_GET["sort"] == "filetype") { $fileExtension = substr(strrchr($entry, "."), 1); $fileExtension = strtolower($fileExtension); $files[$fileExtension.$entry] .= $entry; } elseif($_GET["sort"] == "modified") { $files[filemtime($entry).".0".$i] = $entry; } else { $files[] .= $entry; } } } } $i++; } $dir->close(); if( !is_array($dirs) && !is_array($files)) return FALSE; // Returns an array with filenames and directory names and file sizes // Sorted by filename if($_GET["sort"] == "filename" || !$_GET) { if($_GET["in"] == "asc" || !$_GET) { if( is_array($files) ) asort($files, SORT_STRING); if( is_array($dirs) ) asort($dirs, SORT_STRING); } if($_GET["in"] == "desc") { if( is_array($files) ) arsort($files, SORT_STRING); if( is_array($dirs) ) arsort($dirs, SORT_STRING); } return array($dirs, $files); } // Returns an array with filenames and directory names and file sizes // Sorted by filesize if($_GET["sort"] == "size") { if($_GET["sort"] == "size" && $_GET["in"] == "asc") { if( is_array($files) ) ksort($files, SORT_NUMERIC); if( is_array($dirs) ) asort($dirs, SORT_STRING); } if($_GET["sort"] == "size" && $_GET["in"] == "desc") { if( is_array($files) ) krsort($files, SORT_NUMERIC); if( is_array($dirs) ) asort($dirs, SORT_STRING); } return array($dirs, $files); } // Returns an array with filenames and directory names and file sizes // Sorted by filetype if($_GET["sort"] == "filetype") { if($_GET["sort"] == "filetype" && $_GET["in"] == "asc") { if( is_array($files) ) ksort($files, SORT_STRING); if( is_array($dirs) ) asort($dirs, SORT_STRING); } if($_GET["sort"] == "filetype" && $_GET["in"] == "desc") { if( is_array($files) ) krsort($files, SORT_STRING); if( is_array($dirs) ) asort($dirs, SORT_STRING); } return array($dirs, $files); } // Returns an array with filenames and directory names and file sizes // Sorted by file last modified unixtime if($_GET["sort"] == "modified") { if($_GET["sort"] == "modified" && $_GET["in"] == "asc") { if( is_array($files) ) ksort($files, SORT_NUMERIC); if( is_array($dirs) ) ksort($dirs, SORT_NUMERIC); } if($_GET["sort"] == "modified" && $_GET["in"] == "desc") { if( is_array($files) ) krsort($files, SORT_NUMERIC); if( is_array($dirs) ) krsort($dirs, SORT_NUMERIC); } return array($dirs, $files); } } /** * @desc Image File extension * @param $filename, string. The filename to be checked out what image to use based on its extension * * @return string, Returns the image filename corresponding to the filename parameter */ function iconImage($filename) { global $config; $fileExtension = substr($filename, -4, 4); $fileExtension = strtolower($fileExtension); switch($fileExtension) { case ".mp3": case ".wav": $fileImage = "mp3.png"; break; case ".jpg": case "jpeg": case ".gif": case ".png": case ".bmp": $fileImage = "jpg.png"; break; case ".zip": case ".rar": $fileImage = "zip.png"; break; case ".avi": case ".mpg": case "mpeg": case ".wmv": case "divx": case ".mov": case ".swf": $fileImage = "avi.png"; break; case ".exe": case ".bat": $fileImage = "exe.png"; break; case ".pdf": $fileImage = "pdf.png"; break; case ".htm": case "html": $fileImage = "html.png"; break; case ".txt": $fileImage = "txt.png"; break; case ".php": $fileImage = "php.png"; break; case ".doc": $fileImage = "doc.png"; break; case ".xls": $fileImage = "xls.png"; break; case ".ppt": $fileImage = "ppt.png"; break; default: $fileImage = "page_white.png"; } return $config["class_root"].$fileImage; } } ?>