OpenVPN_Management_GUI/Modules/Downloads/include/fun_list.php

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=\"\">&nbsp;";
$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";
}
//------------------------------------------------------------------------------
?>