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).
--- /dev/null
+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.
+
$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?";
return $currdir;
}
+function make_mod_upload_directory($courseid) {
+ global $CFG;
+
+ 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 ) {
+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 ) ) {
- $fullfile = $rootdir."/".$file;
- if ($file != "." and $file != "..") {
+ while ($file = readdir($dir)) {
+ if ($file != "." and $file != ".." and $file != $excludefile) {
+ $fullfile = $rootdir."/".$file;
if (filetype($fullfile) == "dir") {
$subdirs = get_directory_list($fullfile);
foreach ($subdirs as $subdir) {
$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)
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) {
// 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("
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;
}