moodle/files/index.php

825 lines
33 KiB
PHP
Raw Normal View History

<?php // $Id$
2001-11-22 06:23:56 +00:00
// Manage all uploaded files in a course file area
// All the Moodle-specific stuff is in this top section
// Configuration and access control occurs here.
// Must define: USER, basedir, baseweb, html_header and html_footer
// USER is a persistent variable using sessions
require("../config.php");
$id = required_param('id', PARAM_INT);
$file = optional_param('file', '');
$wdir = optional_param('wdir', '');
$action = optional_param('action', '');
2001-11-22 06:23:56 +00:00
if (! $course = get_record("course", "id", $id) ) {
error("That's an invalid course id");
}
2001-11-22 06:23:56 +00:00
require_login($course->id);
2001-11-22 06:23:56 +00:00
if (! isteacheredit($course->id) ) {
error("You need to be a teacher with editing privileges");
2001-11-22 06:23:56 +00:00
}
function html_footer() {
global $course;
echo "</td></tr></table></body></html>";
print_footer($course);
}
function html_header($course, $wdir, $formfield=""){
global $CFG;
if ($course->id == SITEID) {
$strfiles = get_string("sitefiles");
} else {
$strfiles = get_string("files");
}
2001-11-22 06:23:56 +00:00
if ($wdir == "/") {
$fullnav = "$strfiles";
} else {
$dirs = explode("/", $wdir);
$numdirs = count($dirs);
$link = "";
$navigation = "";
for ($i=1; $i<$numdirs-1; $i++) {
$navigation .= " -> ";
$link .= "/".urlencode($dirs[$i]);
$navigation .= "<a href=\"index.php?id=$course->id&amp;wdir=$link\">".$dirs[$i]."</a>";
}
$fullnav = "<a href=\"index.php?id=$course->id&amp;wdir=/\">$strfiles</a> $navigation -> ".$dirs[$numdirs-1];
}
if ($course->id == SITEID) {
print_header("$course->shortname: $strfiles", "$course->fullname",
"<a href=\"../$CFG->admin/index.php\">".get_string("administration").
"</a> -> $fullnav", $formfield);
print_heading(get_string("publicsitefileswarning"), "center", 2);
} else {
print_header("$course->shortname: $strfiles", "$course->fullname",
"<a href=\"../course/view.php?id=$course->id\">$course->shortname".
"</a> -> $fullnav", $formfield);
}
2004-09-12 21:43:59 +00:00
echo "<table border=\"0\" align=\"center\" cellspacing=\"3\" cellpadding=\"3\" width=\"640\">";
2001-11-22 06:23:56 +00:00
echo "<tr>";
echo "<td colspan=\"2\">";
}
if (! $basedir = make_upload_directory("$course->id")) {
error("The site administrator needs to fix the file permissions");
2001-11-22 06:23:56 +00:00
}
$baseweb = $CFG->wwwroot;
// End of configuration and access control
require("mimetypes.php");
if (!$wdir) {
$wdir="/";
}
if (($wdir != '/' and detect_munged_arguments($wdir, 0))
or ($file != '' and detect_munged_arguments($file, 0))) {
2001-11-22 06:23:56 +00:00
$message = "Error: Directories can not contain \"..\"";
$wdir = "/";
$action = "";
}
if ($wdir == "/backupdata") {
if (! make_upload_directory("$course->id/backupdata")) { // Backup folder
error("Could not create backupdata folder. The site administrator needs to fix the file permissions");
}
}
2001-11-22 06:23:56 +00:00
switch ($action) {
case "upload":
html_header($course, $wdir);
require_once($CFG->dirroot.'/lib/uploadlib.php');
if (!empty($save)) {
$um = new upload_manager('userfile',false,false,$course,false,0);
$dir = "$basedir$wdir";
if ($um->process_file_uploads($dir)) {
notify(get_string('uploadedfile'));
2001-11-22 06:23:56 +00:00
}
// um will take care of error reporting.
2001-11-22 06:23:56 +00:00
displaydir($wdir);
} else {
$upload_max_filesize = get_max_upload_file_size($CFG->maxbytes); // Restricted by site setting
$filesize = display_size($upload_max_filesize);
$struploadafile = get_string("uploadafile");
$struploadthisfile = get_string("uploadthisfile");
$strmaxsize = get_string("maxsize", "", $filesize);
$strcancel = get_string("cancel");
2004-09-12 21:43:59 +00:00
echo "<p>$struploadafile ($strmaxsize) --> <b>$wdir</b>";
echo "<table><tr><td colspan=\"2\">";
echo "<form enctype=\"multipart/form-data\" method=\"post\" action=\"index.php\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"upload\" />";
upload_print_form_fragment(1,array('userfile'),null,false,null,$course->maxbytes,0,false);
2004-09-12 21:43:59 +00:00
echo " </td><tr><td width=\"10\">";
echo " <input type=\"submit\" name=\"save\" value=\"$struploadthisfile\" />";
echo "</form>";
echo "</td><td width=\"100%\">";
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
echo " <input type=\"submit\" value=\"$strcancel\" />";
echo "</form>";
echo "</td></tr></table>";
2001-11-22 06:23:56 +00:00
}
html_footer();
break;
case "delete":
2003-01-02 13:08:20 +00:00
if (!empty($confirm)) {
html_header($course, $wdir);
2001-11-22 06:23:56 +00:00
foreach ($USER->filelist as $file) {
$fullfile = $basedir.$file;
if (! fulldelete($fullfile)) {
2004-09-12 21:43:59 +00:00
echo "<br />Error: Could not delete: $fullfile";
2001-11-22 06:23:56 +00:00
}
}
clearfilelist();
displaydir($wdir);
html_footer();
} else {
html_header($course, $wdir);
if (setfilelist($_POST)) {
2004-09-12 21:43:59 +00:00
echo "<p align=\"center\">".get_string("deletecheckwarning").":</p>";
2001-11-22 06:23:56 +00:00
print_simple_box_start("center");
printfilelist($USER->filelist);
print_simple_box_end();
2003-08-05 03:25:16 +00:00
echo "<br />";
notice_yesno (get_string("deletecheckfiles"),
"index.php?id=$id&amp;wdir=$wdir&amp;action=delete&amp;confirm=1",
"index.php?id=$id&amp;wdir=$wdir&amp;action=cancel");
2001-11-22 06:23:56 +00:00
} else {
displaydir($wdir);
}
html_footer();
}
break;
case "move":
html_header($course, $wdir);
if ($count = setfilelist($_POST)) {
2001-11-22 06:23:56 +00:00
$USER->fileop = $action;
$USER->filesource = $wdir;
2004-09-12 21:43:59 +00:00
echo "<p align=\"center\">";
2003-08-05 03:25:16 +00:00
print_string("selectednowmove", "moodle", $count);
echo "</p>";
2001-11-22 06:23:56 +00:00
}
displaydir($wdir);
html_footer();
break;
case "paste":
html_header($course, $wdir);
2003-01-02 13:08:20 +00:00
if (isset($USER->fileop) and $USER->fileop == "move") {
2001-11-22 06:23:56 +00:00
foreach ($USER->filelist as $file) {
$shortfile = basename($file);
$oldfile = $basedir.$file;
$newfile = $basedir.$wdir."/".$shortfile;
if (!rename($oldfile, $newfile)) {
2004-09-12 21:43:59 +00:00
echo "<p>Error: $shortfile not moved";
2001-11-22 06:23:56 +00:00
}
}
}
clearfilelist();
displaydir($wdir);
html_footer();
break;
case "rename":
2003-01-02 13:08:20 +00:00
if (!empty($name)) {
html_header($course, $wdir);
$name = clean_filename($name);
$oldname = clean_filename($oldname);
2001-11-22 06:23:56 +00:00
if (file_exists($basedir.$wdir."/".$name)) {
echo "Error: $name already exists!";
} else if (!rename($basedir.$wdir."/".$oldname, $basedir.$wdir."/".$name)) {
echo "Error: could not rename $oldname to $name";
}
displaydir($wdir);
} else {
$strrename = get_string("rename");
$strcancel = get_string("cancel");
$strrenamefileto = get_string("renamefileto", "moodle", $file);
html_header($course, $wdir, "form.name");
2004-09-12 21:43:59 +00:00
echo "<p>$strrenamefileto:";
echo "<table><tr><td>";
echo "<form action=\"index.php\" method=\"post\" name=\"form\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"rename\" />";
echo " <input type=\"hidden\" name=\"oldname\" value=\"$file\" />";
echo " <input type=\"text\" name=\"name\" size=\"35\" value=\"$file\" />";
echo " <input type=\"submit\" value=\"$strrename\" />";
echo "</form>";
echo "</td><td>";
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
echo " <input type=\"submit\" value=\"$strcancel\" />";
echo "</form>";
echo "</td></tr></table>";
2001-11-22 06:23:56 +00:00
}
html_footer();
break;
case "mkdir":
2003-01-02 13:08:20 +00:00
if (!empty($name)) {
html_header($course, $wdir);
2001-11-22 06:23:56 +00:00
$name = clean_filename($name);
if (file_exists("$basedir$wdir/$name")) {
2001-11-22 06:23:56 +00:00
echo "Error: $name already exists!";
} else if (! make_upload_directory("$course->id/$wdir/$name")) {
2001-11-22 06:23:56 +00:00
echo "Error: could not create $name";
}
displaydir($wdir);
} else {
$strcreate = get_string("create");
$strcancel = get_string("cancel");
$strcreatefolder = get_string("createfolder", "moodle", $wdir);
html_header($course, $wdir, "form.name");
2004-09-12 21:43:59 +00:00
echo "<p>$strcreatefolder:";
echo "<table><tr><td>";
echo "<form action=\"index.php\" method=\"post\" name=\"form\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"mkdir\" />";
echo " <input type=\"text\" name=\"name\" size=\"35\" />";
echo " <input type=\"submit\" value=\"$strcreate\" />";
echo "</form>";
echo "</td><td>";
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
echo " <input type=\"submit\" value=\"$strcancel\" />";
echo "</form>";
echo "</td></tr></table>";
2001-11-22 06:23:56 +00:00
}
html_footer();
break;
case "edit":
html_header($course, $wdir);
2001-11-22 06:23:56 +00:00
if (isset($text)) {
$fileptr = fopen($basedir.$file,"w");
fputs($fileptr, stripslashes($text));
fclose($fileptr);
displaydir($wdir);
} else {
2004-09-12 21:43:59 +00:00
$streditfile = get_string("edit", "", "<b>$file</b>");
2001-11-22 06:23:56 +00:00
$fileptr = fopen($basedir.$file, "r");
$contents = fread($fileptr, filesize($basedir.$file));
fclose($fileptr);
2002-12-26 16:26:55 +00:00
if (mimeinfo("type", $file) == "text/html") {
$usehtmleditor = can_use_html_editor();
2002-12-26 16:26:55 +00:00
} else {
$usehtmleditor = false;
}
2004-08-30 08:44:00 +00:00
$usehtmleditor = false; // Always keep it off for now
2002-12-26 16:26:55 +00:00
print_heading("$streditfile");
2004-09-12 21:43:59 +00:00
echo "<table><tr><td colspan=\"2\">";
echo "<form action=\"index.php\" method=\"post\" name=\"form\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"file\" value=\"$file\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"edit\" />";
print_textarea($usehtmleditor, 25, 80, 680, 400, "text", $contents);
2004-09-12 21:43:59 +00:00
echo "</td></tr><tr><td>";
echo " <input type=\"submit\" value=\"".get_string("savechanges")."\" />";
echo "</form>";
echo "</td><td>";
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
echo " <input type=\"submit\" value=\"".get_string("cancel")."\" />";
echo "</form>";
echo "</td></tr></table>";
2002-12-26 16:26:55 +00:00
if ($usehtmleditor) {
use_html_editor();
2002-12-26 16:26:55 +00:00
}
2001-11-22 06:23:56 +00:00
}
html_footer();
break;
case "zip":
2003-01-02 13:08:20 +00:00
if (!empty($name)) {
html_header($course, $wdir);
2001-11-22 06:23:56 +00:00
$name = clean_filename($name);
if (empty($CFG->zip)) { // Use built-in php-based zip function
$files = array();
foreach ($USER->filelist as $file) {
$files[] = cleardoubleslashes("$basedir/$file"); // no doubleslashes!
}
include_once("$CFG->libdir/pclzip/pclzip.lib.php");
$archive = new PclZip(cleardoubleslashes("$basedir/$wdir/$name"));
if (($list = $archive->create($files, PCLZIP_OPT_REMOVE_PATH,
rtrim(cleardoubleslashes("$basedir/$wdir"), "/"))) == 0) { // no double slashes and trailing slash!
error($archive->errorInfo(true));
}
} else { // Use external zip program
$files = "";
foreach ($USER->filelist as $file) {
$files .= basename($file);
$files .= " ";
}
$command = "cd $basedir/$wdir ; $CFG->zip -r $name $files";
Exec($command);
2001-11-22 06:23:56 +00:00
}
clearfilelist();
displaydir($wdir);
} else {
html_header($course, $wdir, "form.name");
if (setfilelist($_POST)) {
2004-09-12 21:43:59 +00:00
echo "<p align=\"center\">".get_string("youareabouttocreatezip").":</p>";
2001-11-22 06:23:56 +00:00
print_simple_box_start("center");
printfilelist($USER->filelist);
print_simple_box_end();
2004-09-12 21:43:59 +00:00
echo "<br />";
echo "<p align=\"center\">".get_string("whattocallzip");
echo "<table><tr><td>";
echo "<form action=\"index.php\" method=\"post\" name=\"form\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"zip\" />";
echo " <input type=\"text\" name=\"name\" size=\"35\" value=\"new.zip\" />";
echo " <input type=\"submit\" value=\"".get_string("createziparchive")."\" />";
echo "</form>";
echo "</td><td>";
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
echo " <input type=\"submit\" value=\"".get_string("cancel")."\" />";
echo "</form>";
echo "</td></tr></table>";
2001-11-22 06:23:56 +00:00
} else {
displaydir($wdir);
clearfilelist();
}
}
html_footer();
break;
case "unzip":
html_header($course, $wdir);
2003-01-02 13:08:20 +00:00
if (!empty($file)) {
$strname = get_string("name");
$strsize = get_string("size");
$strmodified = get_string("modified");
$strstatus = get_string("status");
$strok = get_string("ok");
$strunpacking = get_string("unpacking", "", $file);
2004-09-12 21:43:59 +00:00
echo "<p align=\"center\">$strunpacking:</p>";
2001-11-22 06:23:56 +00:00
$file = basename($file);
if (empty($CFG->unzip)) { // Use built-in php-based unzip function
include_once("$CFG->libdir/pclzip/pclzip.lib.php");
$archive = new PclZip(cleardoubleslashes("$basedir/$wdir/$file"));
if (!$list = $archive->extract(PCLZIP_OPT_PATH, cleardoubleslashes("$basedir/$wdir"),
PCLZIP_CB_PRE_EXTRACT, 'approvefile')) {
error($archive->errorInfo(true));
} else { // print some output
2004-09-12 21:43:59 +00:00
echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=\"640\">";
echo "<tr><th align=\"left\">$strname</th>";
echo "<th align=\"right\">$strsize</th>";
echo "<th align=\"right\">$strmodified</th>";
echo "<th align=\"right\">$strstatus</th></tr>";
foreach ($list as $item) {
echo "<tr>";
$item['filename'] = str_replace(cleardoubleslashes("$basedir/$wdir/"), "", $item['filename']);
print_cell("left", $item['filename']);
if (! $item['folder']) {
print_cell("right", display_size($item['size']));
} else {
echo "<td>&nbsp;</td>";
}
$filedate = userdate($item['mtime'], get_string("strftimedatetime"));
print_cell("right", $filedate);
print_cell("right", $item['status']);
echo "</tr>";
}
echo "</table>";
}
} else { // Use external unzip program
print_simple_box_start("center");
2004-09-12 21:43:59 +00:00
echo "<pre>";
$command = "cd $basedir/$wdir ; $CFG->unzip -o $file 2>&1";
passthru($command);
2004-09-12 21:43:59 +00:00
echo "</pre>";
print_simple_box_end();
}
2004-09-12 21:43:59 +00:00
echo "<center><form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
echo " <input type=\"submit\" value=\"$strok\" />";
echo "</form>";
echo "</center>";
2001-11-22 06:23:56 +00:00
} else {
displaydir($wdir);
}
html_footer();
break;
case "listzip":
html_header($course, $wdir);
if (!empty($file)) {
$strname = get_string("name");
$strsize = get_string("size");
$strmodified = get_string("modified");
$strok = get_string("ok");
$strlistfiles = get_string("listfiles", "", $file);
2004-09-12 21:43:59 +00:00
echo "<p align=\"center\">$strlistfiles:</p>";
$file = basename($file);
include_once("$CFG->libdir/pclzip/pclzip.lib.php");
$archive = new PclZip(cleardoubleslashes("$basedir/$wdir/$file"));
if (!$list = $archive->listContent(cleardoubleslashes("$basedir/$wdir"))) {
notify($archive->errorInfo(true));
} else {
2004-09-12 21:43:59 +00:00
echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=\"640\">";
echo "<tr><th align=\"left\">$strname</th><th align=\"right\">$strsize</th><th align=\"right\">$strmodified</th></tr>";
foreach ($list as $item) {
echo "<tr>";
print_cell("left", $item['filename']);
if (! $item['folder']) {
print_cell("right", display_size($item['size']));
} else {
echo "<td>&nbsp;</td>";
}
$filedate = userdate($item['mtime'], get_string("strftimedatetime"));
print_cell("right", $filedate);
echo "</tr>";
}
echo "</table>";
}
2004-09-12 21:43:59 +00:00
echo "<br /><center><form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"cancel\" />";
echo " <input type=\"submit\" value=\"$strok\" />";
echo "</form>";
echo "</center>";
} else {
displaydir($wdir);
}
html_footer();
break;
case "restore":
html_header($course, $wdir);
if (!empty($file)) {
2004-09-12 21:43:59 +00:00
echo "<p align=\"center\">".get_string("youaregoingtorestorefrom").":</p>";
print_simple_box_start("center");
echo $file;
print_simple_box_end();
echo "<br />";
echo "<p align=center>".get_string("areyousuretorestorethisinfo")."</p>";
$restore_path = "$CFG->wwwroot/backup/restore.php";
notice_yesno (get_string("areyousuretorestorethis"),
$restore_path."?id=".$id."&file=".cleardoubleslashes($id.$wdir."/".$file),
"index.php?id=$id&wdir=$wdir&action=cancel");
} else {
displaydir($wdir);
}
html_footer();
break;
2001-11-22 06:23:56 +00:00
case "cancel";
clearfilelist();
default:
html_header($course, $wdir);
2001-11-22 06:23:56 +00:00
displaydir($wdir);
html_footer();
break;
}
/// FILE FUNCTIONS ///////////////////////////////////////////////////////////
function approvefile($p_event, &$p_header){
if (detect_munged_arguments($p_header['filename'], 0)) {
return 0; // do not extract file!!
} else {
return 1;
}
}
2001-11-22 06:23:56 +00:00
function fulldelete($location) {
if (is_dir($location)) {
$currdir = opendir($location);
while ($file = readdir($currdir)) {
if ($file <> ".." && $file <> ".") {
$fullfile = $location."/".$file;
if (is_dir($fullfile)) {
if (!fulldelete($fullfile)) {
return false;
}
} else {
if (!unlink($fullfile)) {
return false;
}
}
}
}
closedir($currdir);
if (! rmdir($location)) {
return false;
}
} else {
if (!unlink($location)) {
return false;
}
}
return true;
}
function setfilelist($VARS) {
global $USER;
$USER->filelist = array ();
$USER->fileop = "";
$count = 0;
foreach ($VARS as $key => $val) {
if (substr($key,0,4) == "file") {
$count++;
$val = rawurldecode($val);
if (!detect_munged_arguments($val, 0)) {
$USER->filelist[] = rawurldecode($val);
}
2001-11-22 06:23:56 +00:00
}
}
return $count;
}
function clearfilelist() {
global $USER;
$USER->filelist = array ();
$USER->fileop = "";
}
function printfilelist($filelist) {
global $CFG, $basedir;
2001-11-22 06:23:56 +00:00
foreach ($filelist as $file) {
if (is_dir($basedir.$file)) {
echo "<img src=\"$CFG->pixpath/f/folder.gif\" height=\"16\" width=\"16\" alt=\"\" /> $file<br />";
2001-11-22 06:23:56 +00:00
$subfilelist = array();
$currdir = opendir($basedir.$file);
while ($subfile = readdir($currdir)) {
if ($subfile <> ".." && $subfile <> ".") {
$subfilelist[] = $file."/".$subfile;
}
}
printfilelist($subfilelist);
} else {
$icon = mimeinfo("icon", $file);
echo "<img src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" alt=\"\" /> $file<br />";
2001-11-22 06:23:56 +00:00
}
}
}
function print_cell($alignment="center", $text="&nbsp;") {
2004-09-12 21:43:59 +00:00
echo "<td align=\"$alignment\" nowrap=\"nowrap\">";
echo "<font size=\"-1\" face=\"Arial, Helvetica\">";
2001-11-22 06:23:56 +00:00
echo "$text";
2004-09-12 21:43:59 +00:00
echo "</font>";
echo "</td>\n";
2001-11-22 06:23:56 +00:00
}
function displaydir ($wdir) {
// $wdir == / or /a or /a/b/c/d etc
global $basedir;
global $id;
global $USER, $CFG;
2001-11-22 06:23:56 +00:00
$fullpath = $basedir.$wdir;
$directory = opendir($fullpath); // Find all files
while ($file = readdir($directory)) {
if ($file == "." || $file == "..") {
2001-11-22 06:23:56 +00:00
continue;
}
if (is_dir($fullpath."/".$file)) {
$dirlist[] = $file;
} else {
$filelist[] = $file;
}
}
closedir($directory);
$strname = get_string("name");
$strsize = get_string("size");
$strmodified = get_string("modified");
$straction = get_string("action");
$strmakeafolder = get_string("makeafolder");
$struploadafile = get_string("uploadafile");
$strwithchosenfiles = get_string("withchosenfiles");
$strmovetoanotherfolder = get_string("movetoanotherfolder");
$strmovefilestohere = get_string("movefilestohere");
$strdeletecompletely = get_string("deletecompletely");
$strcreateziparchive = get_string("createziparchive");
$strrename = get_string("rename");
$stredit = get_string("edit");
$strunzip = get_string("unzip");
$strlist = get_string("list");
$strrestore= get_string("restore");
2001-11-22 06:23:56 +00:00
2004-09-12 21:43:59 +00:00
echo "<form action=\"index.php\" method=\"post\" name=\"dirform\">";
echo "<hr width=\"640\" align=\"center\" noshade=\"noshade\" size=\"1\" />";
echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\" width=\"640\">";
echo "<tr>";
echo "<th width=\"5\"></th>";
echo "<th align=\"left\">$strname</th>";
echo "<th align=\"right\">$strsize</th>";
echo "<th align=\"right\">$strmodified</th>";
echo "<th align=\"right\">$straction</th>";
echo "</tr>\n";
2001-11-22 06:23:56 +00:00
if ($wdir == "/") {
$wdir = "";
}
$count = 0;
2003-01-02 13:08:20 +00:00
if (!empty($dirlist)) {
2001-11-22 06:23:56 +00:00
asort($dirlist);
foreach ($dirlist as $dir) {
$count++;
$filename = $fullpath."/".$dir;
$fileurl = rawurlencode($wdir."/".$dir);
$filesafe = rawurlencode($dir);
$filesize = display_size(get_directory_size("$fullpath/$dir"));
2003-12-08 13:31:14 +00:00
$filedate = userdate(filemtime($filename), "%d %b %Y, %I:%M %p");
2001-11-22 06:23:56 +00:00
2004-09-12 21:43:59 +00:00
echo "<tr>";
2001-11-22 06:23:56 +00:00
2004-09-12 21:43:59 +00:00
print_cell("center", "<input type=\"checkbox\" name=\"file$count\" value=\"$fileurl\" />");
print_cell("left", "<a href=\"index.php?id=$id&amp;wdir=$fileurl\"><img src=\"$CFG->pixpath/f/folder.gif\" height=\"16\" width=\"16\" border=\"0\" alt=\"Folder\" /></a> <a href=\"index.php?id=$id&amp;wdir=$fileurl\">".htmlspecialchars($dir)."</a>");
print_cell("right", "<b>$filesize</b>");
2001-11-22 06:23:56 +00:00
print_cell("right", $filedate);
print_cell("right", "<a href=\"index.php?id=$id&amp;wdir=$wdir&amp;file=$filesafe&amp;action=rename\">$strrename</a>");
2001-11-22 06:23:56 +00:00
2004-09-12 21:43:59 +00:00
echo "</tr>";
2001-11-22 06:23:56 +00:00
}
}
2003-01-02 13:08:20 +00:00
if (!empty($filelist)) {
2001-11-22 06:23:56 +00:00
asort($filelist);
foreach ($filelist as $file) {
$icon = mimeinfo("icon", $file);
$count++;
$filename = $fullpath."/".$file;
$fileurl = "$wdir/$file";
$filesafe = rawurlencode($file);
$fileurlsafe = rawurlencode($fileurl);
2003-12-08 13:31:14 +00:00
$filedate = userdate(filemtime($filename), "%d %b %Y, %I:%M %p");
2001-11-22 06:23:56 +00:00
echo "<tr>";
2001-11-22 06:23:56 +00:00
2004-09-12 21:43:59 +00:00
print_cell("center", "<input type=\"checkbox\" name=\"file$count\" value=\"$fileurl\" />");
echo "<td align=\"left\" nowrap=\"nowrap\">";
if ($CFG->slasharguments) {
$ffurl = "/file.php/$id$fileurl";
} else {
$ffurl = "/file.php?file=/$id$fileurl";
}
link_to_popup_window ($ffurl, "display",
"<img src=\"$CFG->pixpath/f/$icon\" height=\"16\" width=\"16\" border=\"0\" alt=\"File\" />",
2001-11-22 06:23:56 +00:00
480, 640);
echo "<font size=\"-1\" face=\"Arial, Helvetica\">";
link_to_popup_window ($ffurl, "display",
2001-11-22 06:23:56 +00:00
htmlspecialchars($file),
480, 640);
echo "</font></td>";
2001-11-22 06:23:56 +00:00
$file_size = filesize($filename);
print_cell("right", display_size($file_size));
2001-11-22 06:23:56 +00:00
print_cell("right", $filedate);
if ($icon == "text.gif" || $icon == "html.gif") {
$edittext = "<a href=\"index.php?id=$id&amp;wdir=$wdir&amp;file=$fileurl&amp;action=edit\">$stredit</a>";
2001-11-22 06:23:56 +00:00
} else if ($icon == "zip.gif") {
$edittext = "<a href=\"index.php?id=$id&amp;wdir=$wdir&amp;file=$fileurl&amp;action=unzip\">$strunzip</a>&nbsp;";
$edittext .= "<a href=\"index.php?id=$id&amp;wdir=$wdir&amp;file=$fileurl&amp;action=listzip\">$strlist</a> ";
if (!empty($CFG->backup_version) and isteacheredit($id)) {
$edittext .= "<a href=\"index.php?id=$id&amp;wdir=$wdir&amp;file=$filesafe&amp;action=restore\">$strrestore</a> ";
}
2001-11-22 06:23:56 +00:00
} else {
$edittext = "";
}
print_cell("right", "$edittext <a href=\"index.php?id=$id&amp;wdir=$wdir&amp;file=$filesafe&amp;action=rename\">$strrename</a>");
2001-11-22 06:23:56 +00:00
2004-09-12 21:43:59 +00:00
echo "</tr>";
2001-11-22 06:23:56 +00:00
}
}
2004-09-12 21:43:59 +00:00
echo "</table>";
echo "<hr width=\"640\" align=\"center\" noshade=\"noshade\" size=\"1\" />";
2001-11-22 06:23:56 +00:00
2003-01-02 13:08:20 +00:00
if (empty($wdir)) {
2001-11-22 06:23:56 +00:00
$wdir = "/";
}
2004-09-12 21:43:59 +00:00
echo "<table border=\"0\" cellspacing=\"2\" cellpadding=\"2\" width=\"640\">";
echo "<tr><td>";
echo "<input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo "<input type=\"hidden\" name=\"wdir\" value=\"$wdir\" /> ";
2001-11-22 06:23:56 +00:00
$options = array (
"move" => "$strmovetoanotherfolder",
"delete" => "$strdeletecompletely",
"zip" => "$strcreateziparchive"
2001-11-22 06:23:56 +00:00
);
2003-01-02 13:08:20 +00:00
if (!empty($count)) {
choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()");
2001-11-22 06:23:56 +00:00
}
2004-09-12 21:43:59 +00:00
echo "</form>";
echo "<td align=\"center\">";
if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) {
2004-09-12 21:43:59 +00:00
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"paste\" />";
echo " <input type=\"submit\" value=\"$strmovefilestohere\" />";
echo "</form>";
2001-11-22 06:23:56 +00:00
}
2004-09-12 21:43:59 +00:00
echo "<td align=\"right\">";
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"mkdir\" />";
echo " <input type=\"submit\" value=\"$strmakeafolder\" />";
echo "</form>";
echo "</td>";
echo "<td align=\"right\">";
echo "<form action=\"index.php\" method=\"get\">";
echo " <input type=\"hidden\" name=\"id\" value=\"$id\" />";
echo " <input type=\"hidden\" name=\"wdir\" value=\"$wdir\" />";
echo " <input type=\"hidden\" name=\"action\" value=\"upload\" />";
echo " <input type=\"submit\" value=\"$struploadafile\" />";
echo "</form>";
echo "</td></tr>";
echo "</table>";
echo "<hr width=\"640\" align=\"center\" noshade=\"noshade\" size=\"1\" />";
2001-11-22 06:23:56 +00:00
}
?>