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";
 | 
						|
	
 | 
						|
 | 
						|
}
 | 
						|
//------------------------------------------------------------------------------
 | 
						|
?>
 |