Moved uploaded assignment files into a subdirectory called moddata,

where data from other modules can also live later on.

Also added a README for that directory to warn teachers not to mess
with it, version code to perform the upgrade, tweaks to assignment/lib.php
and a tweak to reading module so that assignment files aren't listed
in the list of possible readings (could get messy).
This commit is contained in:
martin 2002-08-28 13:07:10 +00:00
parent 4ea53d802f
commit ca4f8eb868
6 changed files with 71 additions and 6 deletions

View File

@ -0,0 +1,15 @@
ABOUT THIS DIRECTORY
--------------------
DO NOT CHANGE, RENAME OR MOVE ANY OF THE FILES IN THIS DIRECTORY
unless you really know what you are doing.
Changing these files could mess up your course.
This directory contains files uploaded to your course within
particular modules (mostly by students), such as assignment
submissions and forum attachments.
The names of the directories and files within this directory
are very specific and automatically maintained by Moodle.

View File

@ -294,6 +294,7 @@ $string[phone] = "Phone";
$string[preview] = "Preview";
$string[previeworchoose] = "Preview or choose a theme";
$string[question] = "Question";
$string[readme] = "README"; // This is a file name
$string[recentactivity] = "Recent activity";
$string[resources] = "Resources";
$string[returningtosite] = "Returning to this web site?";

View File

@ -1323,18 +1323,36 @@ function make_upload_directory($directory) {
return $currdir;
}
function make_mod_upload_directory($courseid) {
global $CFG;
function get_directory_list( $rootdir ) {
if (! $moddata = make_upload_directory("$courseid/$CFG->moddata")) {
return false;
}
$strreadme = get_string("readme");
if (file_exists("$CFG->dirroot/lang/$CFG->lang/docs/module_files.txt")) {
copy("$CFG->dirroot/lang/$CFG->lang/docs/module_files.txt", "$moddata/$strreadme.txt");
} else {
copy("$CFG->dirroot/lang/en/docs/module_files.txt", "$moddata/$strreadme.txt");
}
return $moddata;
}
function get_directory_list($rootdir, $excludefile="") {
// Returns an array with all the filenames in
// all subdirectories, relative to the given rootdir.
// If excludefile is defined, then that file/directory is ignored
$dirs = array();
$dir = opendir( $rootdir );
while ($file = readdir($dir)) {
if ($file != "." and $file != ".." and $file != $excludefile) {
$fullfile = $rootdir."/".$file;
if ($file != "." and $file != "..") {
if (filetype($fullfile) == "dir") {
$subdirs = get_directory_list($fullfile);
foreach ($subdirs as $subdir) {

View File

@ -50,6 +50,7 @@
$CFG->stylesheet = "$CFG->wwwroot/theme/$CFG->theme/styles.css";
$CFG->header = "$CFG->dirroot/theme/$CFG->theme/header.html";
$CFG->footer = "$CFG->dirroot/theme/$CFG->theme/footer.html";
$CFG->moddata = "moddata";
// Load up theme variables (colours etc)

View File

@ -189,7 +189,9 @@ function assignment_cron () {
function assignment_file_area_name($assignment, $user) {
// Creates a directory file name, suitable for make_upload_directory()
return "$assignment->course/assignment/$assignment->id/$user->id";
global $CFG;
return "$assignment->course/$CFG->moddata/assignment/$assignment->id/$user->id";
}
function assignment_file_area($assignment, $user) {

View File

@ -5,13 +5,15 @@
// This fragment is called by /admin/index.php
////////////////////////////////////////////////////////////////////////////////
$module->version = 2002082000;
$module->version = 2002082805;
$module->cron = 60;
function assignment_upgrade($oldversion) {
// This function does anything necessary to upgrade
// older versions to match current functionality
global $CFG;
if ($oldversion < 2002080500) {
execute_sql("
@ -57,6 +59,32 @@ function assignment_upgrade($oldversion) {
execute_sql(" ALTER TABLE `assignment_submissions` CHANGE `id` `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ");
}
if ($oldversion < 2002082805) {
// assignment file area was moved, so rename all the directories in existing courses
$basedir = opendir("$CFG->dataroot");
while ($dir = readdir($basedir)) {
if ($dir == "." || $dir == ".." || $dir == "users") {
continue;
}
if (filetype("$CFG->dataroot/$dir") != "dir") {
continue;
}
$coursedir = "$CFG->dataroot/$dir";
if (! $coursemoddata = make_mod_upload_directory($dir)) {
echo "Error: could not create mod upload directory: $coursemoddata";
continue;
}
if (file_exists("$coursedir/assignment")) {
if (! rename("$coursedir/assignment", "$coursemoddata/assignment")) {
echo "Error: could not move $coursedir/assignment to $coursemoddata/assignment\n";
}
}
}
}
return true;
}