Ich hab da mal ein Download Modul erstellt (bzw. das Original Script ein wenig angepasst) welches ein frei wählbares Verzeichnis ausliest und das Resultat in Tabellenform ausgibt. Es gibt viele Einstellungsmöglichkeiten. Danke an Darki für die Idee ein Modul zu erstellen und Dank auch an Bernhard Mitterer für das coole Original...
Hinweis: Sollen weitere Dateitypen angeboten werden, ist diese Zeile anzupassen:
Code: Alles auswählen
$showFiles = '*.zip,*.rar,*.pdf';
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname : download
* Author : Michael Busslinger
* Created : 15-09-2005
************************************************/
echo "<table width='100%' border='0'>
<tr>
<td>Download Verzeichnis</td>
<td><input type='text' name='CMS_VAR[1]' value='";
if ("CMS_VALUE[1]" == "") {
echo "../download";
}
echo "CMS_VALUE[1]"."'></td>
</tr>
<tr>
<td>Statistik Anzeigen (true / False)</td>
<td><input type='text' name='CMS_VAR[2]' value='CMS_VALUE[2]'></td>
</tr>
<tr>
<td>Icon anzeigen (true / false)</td>
<td><input type='text' name='CMS_VAR[3]' value='CMS_VALUE[3]'></td>
</tr>
<tr>
<td>Spaltenbezeichnung Filename </td>
<td><input name='CMS_VAR[4]' type='text' value='CMS_VALUE[4]'></td>
</tr>
<tr>
<td>Spaltenbezeichnung File Grösse </td>
<td><input name='CMS_VAR[5]' type='text' value='CMS_VALUE[5]'></td>
</tr>
<tr>
<td>Spaltenbezeichnung File Last Modified </td>
<td><input name='CMS_VAR[6]' type='text' value='CMS_VALUE[6]'></td>
</tr>
</table>";
Modul OUTPUT:
Code: Alles auswählen
<?php
/*****************************************************************************\
* myExplorer
* http://www.bmitt.com/files/webauthoring/php/
* -------------------------------------------------------------------------
* written by : Bernhard Mitterer @: admin@bmitt.com
* last modified : 2004-11-25
*****************************************************************************
/*****************************************************************************\
* Configuration (adapt this section to your needs) *
\*****************************************************************************/
$su = false;
# paths
$rootDir = 'CMS_VALUE[1]';
/*if ($idcat == 22)
$indexDir = 'office';
if ($idcat == 23)
$indexDir = 'screensaver';
if ($idcat == 24)
$indexDir = 'wallpaper';
*/
$printCwd = false;
$printStat = CMS_VALUE[2];
# labels for tableheader
$hPic = ' ';
$hName = 'CMS_VALUE[4]';
$hSize = 'CMS_VALUE[5]';
$hType = 'Typ';
$hLastMod = 'CMS_VALUE[6]';
# show attributes
$showPic = CMS_VALUE[3];
$showName = true; # must always be 'true'
$showSize = true;
$showType = false;
$showLastMod = true;
# pic-names
$picUp = 'images/folderup.gif';
$picFolder = 'images/folder.gif';
$picFile = true;
# filter
$showFiles = '*.zip,*.rar,*.pdf';
$hideFiles = '.*,index*,*.php';
$showFolders = '*';
$hideFolders = '.*';
# mode
$xAction = 0;
# filetypes
$picIcons = array(
'.*' => 'cms/images/file.gif',
'.bz2' => 'cms/images/rarfile.gif',
'.c' => 'cms/images/cfile.gif',
'.cpp' => 'cms/images/cppfile.gif',
'.doc' => 'cms/images/docfile.gif',
'.exe' => 'cms/images/exefile.gif',
'.h' => 'cms/images/hfile.gif',
'.htm' => 'cms/images/htmfile.gif',
'.html' => 'cms/images/htmfile.gif',
'.gif' => 'cms/images/imgfile.gif',
'.gz' => 'cms/images/zipfile.gif',
'.jpg' => 'cms/images/imgfile.gif',
'.js' => 'cms/images/jsfile.gif',
'.m' => 'cms/images/mfile.gif',
'.mp3' => 'cms/images/mpgfile.gif',
'.mpg' => 'cms/images/mpgfile.gif',
'.pdf' => 'cms/images/pdffile.gif',
'.png' => 'cms/images/imgfile.gif',
'.ppt' => 'cms/images/pptfile.gif',
'.rar' => 'cms/images/rarfile.gif',
'.swf' => 'cms/images/swffile.gif',
'.txt' => 'cms/images/txtfile.gif',
'.xls' => 'cms/images/xlsfile.gif',
'.zip' => 'cms/images/zipfile.gif',
);
/*****************************************************************************\
* prepare variables *
\*****************************************************************************/
// Check Path Formats ---------------------------------------------------------
$rootDir = formatDir($rootDir,true,true);
$indexDir = formatDir($indexDir);
$referer = addLinker($referer);
// ----------------------------------------------------------------------------
// Handle (given) Directory ---------------------------------------------------
# initialize
$dir = $indexDir;
# make lokal variable from HTTP_GET_VARS
if(isset($_GET['dir']))
$dir = formatDir(rawParam('dir'));
# check given directory if it is valid/allowed
if( !isValidDir("$rootDir$dir") )
$dir = $indexDir;
# real path ($dir is just fake [relative to $rootDir] for display)
$ldir = formatDir("$rootDir$dir",true);
// ----------------------------------------------------------------------------
// Get Directory Content ------------------------------------------------------
$files = array();
$folders = array();
# unfiltered directory content
getDirContent( $ldir );
# filter (and sort) arrays
$files = filterArray( $files, $showFiles, $hideFiles );
$folders = filterArray( $folders, $showFolders, '.,..,'.$hideFolders );
// ----------------------------------------------------------------------------
/*****************************************************************************\
* Output (print table) *
\*****************************************************************************/
echo '<table cellspacing="3" class="expl" summary="Content of /'.htmlentities($dir).'">',"\n";
// print current directory ----------------------------------------------------
if($printCwd)
{
echo ' <tr class="path">',"\n";
echo ' <td colspan="'.($showPic+$showName+$showSize+$showType+$showLastMod).'"><em>/'.htmlentities($dir).'</em></td>',"\n";
echo ' </tr>',"\n";
}
// ----------------------------------------------------------------------------
// draw tableheader -----------------------------------------------------------
echo ' <tr class="hExpl">',"\n";
if($showPic)
echo ' <td class="hPic"> '.$hPic.' </td>',"\n";
if($showName)
echo ' <td class="hName"> '.$hName.' </td>',"\n";
if($showSize)
echo ' <td class="hSize"> '.$hSize.' </td>',"\n";
if($showType)
echo ' <td class="hType"> '.$hType.' </td>',"\n";
if($showLastMod)
echo ' <td class="hLastMod"> '.$hLastMod.' </td>',"\n";
echo ' </tr>',"\n";
// ----------------------------------------------------------------------------
// handle up-button -----------------------------------------------------------
if( $su && (!$dir || (substr($dir,-2)=='..')) )
$up = formatDir($dir,true).'..';
else
$up = substr($dir,0,strrpos($dir,'/'));
#if( $su || ($dir && ($up!==false)) )
#{
# echo ' <tr class="folder">',"\n";
# if($showPic)
# echo ' <td class="pic"><a href="'.$referer.'dir='.$up.'"><img src="'.$picUp.'" alt="up" /></a></td>',"\n";
# if($showName)
# echo ' <td class="name"><a href="'.$referer.'dir='.$up.'"><em>..</em></a></td>',"\n";
# if($showSize)
# echo ' <td class="size"> - </td>',"\n";
# if($showType)
# echo ' <td class="type"> dir </td>',"\n";
# if($showLastMod)
# echo ' <td class="lastmod"> - </td>',"\n";
# echo ' </tr>',"\n";
#}
// ----------------------------------------------------------------------------
// print directories ----------------------------------------------------------
foreach ($folders as $folder)
{
echo ' <tr class="folder">',"\n";
if($showPic)
echo ' <td class="pic"><a href="'.$referer.'dir='.formatDir($dir,true).$folder.'"><img src="'.$picFolder.'" alt="'.htmlentities($folder).'" /></a></td>',"\n";
if($showName)
echo ' <td class="name"><a href="'.$referer.'dir='.formatDir($dir,true).$folder.'"><em>'.htmlentities($folder).'</em></a></td>',"\n";
if($showSize)
echo ' <td class="size"> - </td>',"\n";
if($showType)
echo ' <td class="type"> '.filetype("$ldir$folder").' </td>',"\n";
if($showLastMod)
echo ' <td class="lastmod"> - </td>',"\n";
echo ' </tr>',"\n";
}
// ----------------------------------------------------------------------------
// print files ----------------------------------------------------------------
foreach ($files as $file)
{
$type = filetype("$ldir$file"); // get 'type of file'
$modDate = filemtime("$ldir$file"); // get 'last modified date' of file
#$modDate = date('Y-m-d',$modDate); // format date in ISO-Style
$modDate = date('d.m.Y',$modDate); // format date in ISO-Style
$size = filesize("$ldir$file"); // get 'size of file' in bytes
$dirsize += $size; // total filesize in current dir
$size = ceil($size/1024); // convert from byte to kilobyte
$size = "$size kb"; // add unit
echo ' <tr class="file">',"\n";
if($showPic)
echo ' <td class="pic"><a href="'.makeLink("$ldir$file").'"><img src="'.getIcon($file).'" alt="'.htmlentities($file).'" /></a></td>',"\n";
if($showName)
echo ' <td class="name"><a href="'.makeLink("$ldir$file").'">'.htmlentities($file).'</a></td>',"\n";
if($showSize)
echo ' <td class="size"> '.$size.' </td>',"\n";
if($showType)
echo ' <td class="type"> '.$type.' </td>',"\n";
if($showLastMod)
echo ' <td class="lastmod"> '.$modDate.' </td>',"\n";
echo ' </tr>',"\n";
}
// ----------------------------------------------------------------------------
// print statistics -----------------------------------------------------------
if($printStat)
{
echo ' <tr class="stats">',"\n";
echo ' <td colspan="'.($showPic+$showName+$showSize+$showType+$showLastMod).'"> <em>'.count($folders).' directories | '.count($files).' file(s) | '.ceil($dirsize/1024).' kByte total</em> </td>',"\n";
echo ' </tr>',"\n";
}
// ----------------------------------------------------------------------------
echo '</table>',"\n";
/*****************************************************************************\
* Functions *
\*****************************************************************************/
// ----------------------------------------------------------------------------
// getDirContent() fills, filter and sort Arrays of files and folders
function getDirContent($dir)
{
global $files, $folders;
# fill arrays
$handle = @opendir($dir);
while( $file = readdir($handle) ) {
if( is_dir("$dir/$file") )
$folders[] = $file;
elseif( is_file("$dir/$file") )
$files[] = $file;
}
@closedir($handle);
}
// ----------------------------------------------------------------------------
// addLinker() adds '?' or '&' to the referer
function addLinker($referer)
{
// assume that last char is not '?' or '&'
return strchr($referer,'?') ? "$referer&" : "$referer?";
}
// ----------------------------------------------------------------------------
// formatDir() skip trailing and leading "/" in given $dir-string
// add
function formatDir($dir, $trailing=false, $leading=false)
{
$dir = trim($dir,' /');
if( $trailing && $dir )
$dir = "$dir/";
if( $leading ) #&& ($dir[0]!='/') )
$dir = "./$dir";
return $dir;
}
// ----------------------------------------------------------------------------
// filterArray() make regular expression from $filter-string
function filterArray( $array, $allow, $hide )
{
$allow = makeRegex($allow);
$hide = makeRegex($hide);
$tmp = array();
foreach( $array as $val )
if( ereg($allow,$val) && !ereg($hide,$val) )
$tmp[] = $val;
natcasesort( $tmp );
return $tmp;
}
// ----------------------------------------------------------------------------
// makeRegex() make regular expression from $filter-string
function makeRegex( $filter )
{
$regex = str_replace('.', '\.', $filter);
$regex = str_replace('*', '.+', $regex);
$regex = str_replace(',', '$|^', $regex);
return "^$regex$";
}
// ----------------------------------------------------------------------------
// isValidDir() return true if directory is valid/allowed
function isValidDir($dir)
{
global $su;
$strErr = "<p>Requested Directory Not Found</p>\n";
$strErr .= "\n</body>\n</html>"; #close open tags
// check if folder exists (when manipulated manually)
is_dir($dir) or die($strErr);
// prevent cd with relative path '../'
return $su ? true : !(strpos($dir,'..')!==false);
}
// ----------------------------------------------------------------------------
// rawParam()
function rawParam( $param )
{
return ini_get('magic_quotes_gpc') ? stripslashes($_GET[$param]) : $_GET[$param];
}
// ----------------------------------------------------------------------------
// makeLink() return target of click
function makeLink( $target )
{
global $xAction, $xFilename;
$target = str_replace('%2F', '/', rawurlencode($target));
return $xAction ? "$xFilename?file=$target" : $target;
}
// ----------------------------------------------------------------------------
// getIcon() return icon-image based on filename extension
function getIcon( $filename )
{
global $picIcons, $picFile;
// extract filename extension
$ext = strtolower( strrchr( $filename, '.' ) );
// return default image if $picFile = false
// or extension is unknown
if( !$picFile || !array_key_exists($ext,$picIcons) )
return $picIcons['.*'];
// return matching image
return $picIcons[$ext];
}
?>
Viel Spass damit.