242 lines
8.5 KiB
PHP
Executable File
242 lines
8.5 KiB
PHP
Executable File
<?php
|
|
|
|
// HELPER FUNCTIONS (USED BY MAIN FUNCTION 'list_dir', SEE BOTTOM)
|
|
function make_list($_list1, $_list2) { // make list of files
|
|
$list = array();
|
|
|
|
if($GLOBALS["srt"]=="yes") {
|
|
$list1 = $_list1;
|
|
$list2 = $_list2;
|
|
} else {
|
|
$list1 = $_list2;
|
|
$list2 = $_list1;
|
|
}
|
|
|
|
if(is_array($list1)) {
|
|
while (list($key, $val) = each($list1)) {
|
|
$list[$key] = $val;
|
|
}
|
|
}
|
|
|
|
if(is_array($list2)) {
|
|
while (list($key, $val) = each($list2)) {
|
|
$list[$key] = $val;
|
|
}
|
|
}
|
|
|
|
return $list;
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
function make_tables($dir, &$dir_list, &$file_list, &$tot_file_size, &$num_items)
|
|
{ // make table of files in dir
|
|
// make tables & place results in reference-variables passed to function
|
|
// also 'return' total filesize & total number of items
|
|
|
|
$tot_file_size = $num_items = 0;
|
|
|
|
// Open directory
|
|
$handle = @opendir(get_abs_dir($dir));
|
|
if($handle===false) show_error($dir.": ".$GLOBALS["error_msg"]["opendir"]);
|
|
|
|
// Read directory
|
|
while(($new_item = readdir($handle))!==false) {
|
|
$abs_new_item = get_abs_item($dir, $new_item);
|
|
|
|
if(!@file_exists($abs_new_item)) show_error($dir.": ".$GLOBALS["error_msg"]["readdir"]);
|
|
if(!get_show_item($dir, $new_item)) continue;
|
|
|
|
$new_file_size = filesize($abs_new_item);
|
|
$tot_file_size += $new_file_size;
|
|
$num_items++;
|
|
|
|
if(get_is_dir($dir, $new_item)) {
|
|
if($GLOBALS["order"]=="mod") {
|
|
$dir_list[$new_item] =
|
|
@filemtime($abs_new_item);
|
|
} else { // order == "size", "type" or "name"
|
|
$dir_list[$new_item] = $new_item;
|
|
}
|
|
} else {
|
|
if($GLOBALS["order"]=="size") {
|
|
$file_list[$new_item] = $new_file_size;
|
|
} elseif($GLOBALS["order"]=="mod") {
|
|
$file_list[$new_item] =
|
|
@filemtime($abs_new_item);
|
|
} elseif($GLOBALS["order"]=="type") {
|
|
$file_list[$new_item] =
|
|
get_mime_type($dir, $new_item, "type");
|
|
} else { // order == "name"
|
|
$file_list[$new_item] = $new_item;
|
|
}
|
|
}
|
|
}
|
|
closedir($handle);
|
|
|
|
|
|
// sort
|
|
if(is_array($dir_list)) {
|
|
if($GLOBALS["order"]=="mod") {
|
|
if($GLOBALS["srt"]=="yes") arsort($dir_list);
|
|
else asort($dir_list);
|
|
} else { // order == "size", "type" or "name"
|
|
if($GLOBALS["srt"]=="yes") ksort($dir_list);
|
|
else krsort($dir_list);
|
|
}
|
|
}
|
|
|
|
// sort
|
|
if(is_array($file_list)) {
|
|
if($GLOBALS["order"]=="mod") {
|
|
if($GLOBALS["srt"]=="yes") arsort($file_list);
|
|
else asort($file_list);
|
|
} elseif($GLOBALS["order"]=="size" || $GLOBALS["order"]=="type") {
|
|
if($GLOBALS["srt"]=="yes") asort($file_list);
|
|
else arsort($file_list);
|
|
} else { // order == "name"
|
|
if($GLOBALS["srt"]=="yes") ksort($file_list);
|
|
else krsort($file_list);
|
|
}
|
|
}
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
function print_table($dir, $list, $allow) { // print table of files
|
|
if(!is_array($list)) return;
|
|
|
|
while(list($item,) = each($list)){
|
|
// link to dir / file
|
|
$abs_item=get_abs_item($dir,$item);
|
|
$target="";
|
|
//$extra="";
|
|
//if(is_link($abs_item)) $extra=" -> ".@readlink($abs_item);
|
|
if(is_dir($abs_item)) {
|
|
$link = make_link("list",get_rel_item($dir, $item),NULL);
|
|
} else { //if(get_is_editable($dir,$item) || get_is_image($dir,$item)) {
|
|
$link = make_link("download",$dir,$item);
|
|
$target = "_blank";
|
|
} //else $link = "";
|
|
|
|
echo "<TR class=\"rowdata\">\n";
|
|
// Icon + Link
|
|
echo "<TD nowrap>";
|
|
/*if($link!="") */ echo"<A HREF=\"".$link."\">";
|
|
//else echo "<A>";
|
|
echo "<IMG border=\"0\" width=\"16\" height=\"16\" ";
|
|
echo "align=\"ABSMIDDLE\" src=\"/Modules/Downloads/img/".get_mime_type($dir, $item, "img")."\" ALT=\"\"> ";
|
|
$s_item=$item; if(strlen($s_item)>50) $s_item=substr($s_item,0,47)."...";
|
|
echo htmlspecialchars($s_item)."</A></TD>\n"; // ...$extra...
|
|
// Size
|
|
echo "<TD>".parse_file_size(get_file_size($dir,$item))."</TD>\n";
|
|
// Type
|
|
echo "<TD>".get_mime_type($dir, $item, "type")."</TD>\n";
|
|
// Modified
|
|
echo "<TD>".parse_file_date(get_file_date($dir,$item))."</TD>\n";
|
|
// Permissions
|
|
// echo "<TD>";
|
|
|
|
// echo parse_file_type($dir,$item).parse_file_perms(get_file_perms($dir,$item));
|
|
// if($allow) echo "</A>";
|
|
// echo "</TD>\n";
|
|
// Actions
|
|
echo "<TD>\n<TABLE>\n";
|
|
// DOWNLOAD
|
|
if(get_is_file($dir,$item)) {
|
|
if($allow) {
|
|
echo "<TD><A HREF=\"".make_link("download",$dir,$item)."\">";
|
|
echo "<IMG border=\"0\" width=\"16\" height=\"16\" align=\"ABSMIDDLE\" ";
|
|
echo "src=\"/Modules/Downloads/img/_download.gif\" ALT=\"".$GLOBALS["messages"]["downlink"];
|
|
echo "\" TITLE=\"".$GLOBALS["messages"]["downlink"]."\"></A></TD>\n";
|
|
} else if(!$allow) {
|
|
echo "<TD><IMG border=\"0\" width=\"16\" height=\"16\" align=\"ABSMIDDLE\" ";
|
|
echo "src=\"/Modules/Downloads/img/_download_.gif\" ALT=\"".$GLOBALS["messages"]["downlink"];
|
|
echo "\" TITLE=\"".$GLOBALS["messages"]["downlink"]."\"></TD>\n";
|
|
}
|
|
} else {
|
|
echo "<TD><IMG border=\"0\" width=\"16\" height=\"16\" align=\"ABSMIDDLE\" ";
|
|
echo "src=\"/Modules/Downloads/img/_.gif\" ALT=\"\"></TD>\n";
|
|
}
|
|
echo "</TABLE>\n</TD></TR>\n";
|
|
}
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
// MAIN FUNCTION
|
|
function list_dir($dir) { // list directory contents
|
|
$allow=($GLOBALS["permissions"]&01)==01;
|
|
$admin=((($GLOBALS["permissions"]&04)==04) || (($GLOBALS["permissions"]&02)==02));
|
|
|
|
$dir_up = dirname($dir);
|
|
if($dir_up==".") $dir_up = "";
|
|
|
|
if(!get_show_item($dir_up,basename($dir))) show_error($dir." : ".$GLOBALS["error_msg"]["accessdir"]);
|
|
|
|
// make file & dir tables, & get total filesize & number of items
|
|
make_tables($dir, $dir_list, $file_list, $tot_file_size, $num_items);
|
|
|
|
$s_dir=$dir; if(strlen($s_dir)>50) $s_dir="...".substr($s_dir,-47);
|
|
echo "Directory: /".get_rel_item("",$s_dir);
|
|
|
|
// Javascript functions:
|
|
include $_SERVER["DOCUMENT_ROOT"]."/Modules/Downloads/include/javascript.php";
|
|
|
|
|
|
// Toolbar
|
|
echo "<BR><TABLE width=\"95%\"><TR><TD><TABLE><TR>\n";
|
|
|
|
// PARENT DIR
|
|
echo "<TD><A HREF=\"".make_link("list",$dir_up,NULL)."\">";
|
|
echo "<IMG border=\"0\" width=\"16\" height=\"16\" align=\"ABSMIDDLE\" src=\"/Modules/Downloads/img/_up.gif\" ";
|
|
echo "ALT=\"".$GLOBALS["messages"]["uplink"]."\" TITLE=\"".$GLOBALS["messages"]["uplink"]."\"></A></TD>\n";
|
|
// HOME DIR
|
|
echo "<TD><A HREF=\"".make_link("list",NULL,NULL)."\">";
|
|
echo "<IMG border=\"0\" width=\"16\" height=\"16\" align=\"ABSMIDDLE\" src=\"/Modules/Downloads/img/_home.gif\" ";
|
|
echo "ALT=\"".$GLOBALS["messages"]["homelink"]."\" TITLE=\"".$GLOBALS["messages"]["homelink"]."\"></A></TD>\n";
|
|
// RELOAD
|
|
echo "<TD><A HREF=\"javascript:location.reload();\"><IMG border=\"0\" width=\"16\" height=\"16\" ";
|
|
echo "align=\"ABSMIDDLE\" src=\"/Modules/Downloads/img/_refresh.gif\" ALT=\"".$GLOBALS["messages"]["reloadlink"];
|
|
echo "\" TITLE=\"".$GLOBALS["messages"]["reloadlink"]."\"></A></TD>\n";
|
|
|
|
echo "</TR></TABLE></TD>\n";
|
|
|
|
echo "</TR></TABLE>\n";
|
|
|
|
// End Toolbar
|
|
|
|
|
|
// Begin Table + Form for checkboxes
|
|
echo"<TABLE WIDTH=\"95%\"><FORM name=\"selform\" method=\"POST\" action=\"".make_link("post",$dir,NULL)."\">\n";
|
|
|
|
// Table Header
|
|
echo "<TR><TD colspan=\"5\"><HR></TD></TR><TR>\n";
|
|
echo "<TD WIDTH=\"70%\" class=\"header\"><B>\n";
|
|
echo $GLOBALS["messages"]["nameheader"];
|
|
echo "</B></TD>\n<TD WIDTH=\"10%\" class=\"header\"><B>";
|
|
echo $GLOBALS["messages"]["sizeheader"];
|
|
echo "</B></TD>\n<TD WIDTH=\"10%\" class=\"header\"><B>";
|
|
echo $GLOBALS["messages"]["typeheader"];
|
|
echo "</B></TD>\n<TD WIDTH=\"10%\" class=\"header\"><B>";
|
|
echo $GLOBALS["messages"]["modifheader"];
|
|
echo "</B></TD>\n";
|
|
echo "<TD ALIGN=\"right\" WIDTH=\"6%\" class=\"header\"><B>".$GLOBALS["messages"]["actionheader"]."</B></TD></TR>\n";
|
|
echo "<TR><TD colspan=\"5\"><HR></TD></TR>\n";
|
|
|
|
// make & print Table using lists
|
|
print_table($dir, make_list($dir_list, $file_list), $allow);
|
|
|
|
// print number of items & total filesize
|
|
echo "<TR><TD colspan=\"5\"><HR></TD></TR><TR>\n";
|
|
echo "<TD WIDTH=\"70%\" class=\"header\">".$num_items." ".$GLOBALS["messages"]["miscitems"]." (";
|
|
if(function_exists("disk_free_space")) {
|
|
$free=parse_file_size(disk_free_space(get_abs_dir($dir)));
|
|
} elseif(function_exists("diskfreespace")) {
|
|
$free=parse_file_size(diskfreespace(get_abs_dir($dir)));
|
|
} else $free="?";
|
|
// echo "Total: ".parse_file_size(disk_total_space(get_abs_dir($dir))).", ";
|
|
echo $GLOBALS["messages"]["miscfree"].": ".$free.")</TD>\n";
|
|
echo "<TD WIDTH=\"30%\" class=\"header\">".parse_file_size($tot_file_size)."</TD>\n";
|
|
for($i=0;$i<3;++$i) echo"<TD class=\"header\"></TD>";
|
|
echo "</TR>\n<TR><TD colspan=\"5\"><HR></TD></TR></FORM></TABLE>\n";
|
|
|
|
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
?>
|