TB then he can afford to pay me to patch this code
// if beyond that is needed.
$sizes = array('B', 'KB', 'MB', 'GB', 'TB');
$prev_s = end($sizes);
foreach ($sizes as $s)
{
if ($size < 1024)
{
break;
}
if ($s != $prev_s)
{
$size /= 1024;
}
}
if ($s == $sizes[0])
{
return sprintf('%01d %s', $size, $s);
}
else
{
return sprintf('%01.2f %s', $size, $s);
}
}
// return html row for file display
function directory_row($file, $show_stats = true)
{
// get information for $file
$is_dir = is_dir($file);
$info = stat($file);
// keep track of row count so we can alternating odd/even styles
static $row_count;
if (!isset($row_count))
{
$row_count = 1;
}
else
{
$row_count++;
}
ob_start();
echo '
';
// identify correct MIME icon to display
echo '';
echo ' == '..')
{
echo 'up';
}
else if ($is_dir)
{
echo 'dir';
}
else
{
$ext = substr($file, strrpos($file, '.') + 1);
if (file_exists('img/' . $ext . '.gif'))
{
echo $ext;
}
else
{
echo 'unknown';
}
}
echo '.gif) | ';
// display file information
echo '' . basename($file) . ' | ';
if ($show_stats)
{
echo '';
if ($is_dir)
{
echo '---';
}
else
{
echo size_human_read($info['size']);
}
echo ' | ';
echo '' . date('m/d/Y', $info['mtime']) . ' | ';
}
else
{
echo ' | | ';
}
echo '
';
$r = ob_get_contents();
ob_end_clean();
return $r;
}
// retrieve list of files
if (!isset($_GET['action'])) return;
switch ($_GET['action'])
{
// return html table of directory contents
case 'list':
// make sure we have all expected parameters
if (!isset($_GET['dir'])) return;
// prevent users from traversing outside the base directory
$directory = realpath(BASEDIR . $_GET['dir']);
if (strpos($directory, BASEDIR) !== 0) return;
$ds = array(); // directories
$fs = array(); // files
if($dir = opendir($directory))
{
while($file = basename(readdir($dir)))
{
if($file == '.' || $file == '..')
{
continue;
}
if (is_dir($directory . '/' . $file))
{
$ds[] = $file;
}
else if(is_file($directory . '/' . $file))
{
$fs[] = $file;
}
}
closedir($dir);
}
natcasesort($ds); // natural case-insensitive sort
natcasesort($fs);
?>