MDL-22547 course->legacyfiles switch implemented
authorPetr Skoda <skodak@moodle.org>
Sat, 22 May 2010 13:10:05 +0000 (13:10 +0000)
committerPetr Skoda <skodak@moodle.org>
Sat, 22 May 2010 13:10:05 +0000 (13:10 +0000)
course/edit_form.php
file.php
lang/en/moodle.php
lib/db/install.xml
lib/db/upgrade.php
lib/file/file_browser.php
lib/file/file_info_course.php
lib/navigationlib.php
version.php

index 4d8ce16..b3ee3e2 100644 (file)
@@ -159,6 +159,12 @@ class course_edit_form extends moodleform {
         $mform->addHelpButton('maxbytes', 'maximumupload');
         $mform->setDefault('maxbytes', $courseconfig->maxbytes);
 
+        if (!empty($course->legacyfiles)) {
+            $choices = array('1'=>get_string('no'), '2'=>get_string('yes'));
+            $mform->addElement('select', 'legacyfiles', get_string('courselegacyfiles'), $choices);
+            $mform->addHelpButton('legacyfiles', 'courselegacyfiles');
+        }
+
         if (!empty($CFG->allowcoursethemes)) {
             $themeobjects = get_list_of_themes();
             $themes=array();
index ddbdfd2..8c29f48 100644 (file)
--- a/file.php
+++ b/file.php
@@ -16,7 +16,8 @@
 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 
 /**
- * This script fetches legacy files from the course files in dataroot directory
+ * This script fetches legacy course files in dataroot directory, it is enabled
+ * only if course->legacyfiles == 2.
  *
  * You should use the get_file_url() function, available in lib/filelib.php, to link to file.php.
  * This ensures proper formatting and offers useful options.
@@ -64,8 +65,11 @@ $courseid = (int)array_shift($args);
 $relativepath = '/'.implode('/', $args);
 
 // security: limit access to existing course subdirectories
-if (!$course = $DB->get_record('course', array('id'=>$courseid))) {
-    print_error('invalidcourseid');
+$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
+
+if ($course->legacyfiles != 2) {
+    // course files disabled
+    send_file_not_found();
 }
 
 if ($course->id != SITEID) {
index 4365194..7efa6e6 100644 (file)
@@ -328,6 +328,8 @@ $string['courseimportnotaught'] = 'You don\'t seem to be an editing teacher in a
 $string['courseinfo'] = 'Course info';
 $string['coursemessage'] = 'Message course users';
 $string['coursenotaccessible'] = 'This course does not allow public access';
+$string['courselegacyfiles'] = 'Legacy course files';
+$string['courselegacyfiles_help'] = 'Files are now stored in separate areas for each activity or specific purposes, the old course files area is not available any more in new courses. This was necessary for real access control implementation, reliable backup/restore, etc.';
 $string['courseoverview'] = 'Course overview';
 $string['courseoverviewgraph'] = 'Course overview graph';
 $string['courseprofiles'] = 'Course profiles';
index 7c59818..f5c2ed4 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<XMLDB PATH="lib/db" VERSION="20100516" COMMENT="XMLDB file for core Moodle tables"
+<XMLDB PATH="lib/db" VERSION="20100522" COMMENT="XMLDB file for core Moodle tables"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="../../lib/xmldb/xmldb.xsd"
 >
@@ -86,8 +86,9 @@
         <FIELD NAME="enrolperiod" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="startdate" NEXT="numsections"/>
         <FIELD NAME="numsections" TYPE="int" LENGTH="5" NOTNULL="true" UNSIGNED="true" DEFAULT="1" SEQUENCE="false" PREVIOUS="enrolperiod" NEXT="marker"/>
         <FIELD NAME="marker" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="numsections" NEXT="maxbytes"/>
-        <FIELD NAME="maxbytes" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="marker" NEXT="showreports"/>
-        <FIELD NAME="showreports" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="maxbytes" NEXT="visible"/>
+        <FIELD NAME="maxbytes" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="marker" NEXT="legacyfiles"/>
+        <FIELD NAME="legacyfiles" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" COMMENT="course files are not necessary any more: 0 no legacy files, 1 legacy files disabled, 2 legacy files enabled" PREVIOUS="maxbytes" NEXT="showreports"/>
+        <FIELD NAME="showreports" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="legacyfiles" NEXT="visible"/>
         <FIELD NAME="visible" TYPE="int" LENGTH="1" NOTNULL="true" UNSIGNED="true" DEFAULT="1" SEQUENCE="false" PREVIOUS="showreports" NEXT="hiddensections"/>
         <FIELD NAME="hiddensections" TYPE="int" LENGTH="2" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="visible" NEXT="groupmode"/>
         <FIELD NAME="groupmode" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="hiddensections" NEXT="groupmodeforce"/>
index 1e475ec..97b3032 100644 (file)
@@ -528,6 +528,20 @@ function xmldb_main_upgrade($oldversion) {
         upgrade_main_savepoint($result, 2008073111);
     }
 
+    if ($result && $oldversion < 2008073112) {
+        // Define field legacyfiles to be added to course
+        $table = new xmldb_table('course');
+        $field = new xmldb_field('legacyfiles', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'maxbytes');
+
+        // Launch add field legacyfiles
+        $dbman->add_field($table, $field);
+        // enable legacy files in all courses
+        $DB->execute("UPDATE {course} SET legacyfiles = 2");
+
+        // Main savepoint reached
+        upgrade_main_savepoint($result, 2008073112);
+    }
+
     if ($result && $oldversion < 2008073113) {
     /// move all course, backup and other files to new filepool based storage
         upgrade_migrate_files_courses();
@@ -4083,6 +4097,22 @@ WHERE gradeitemid IS NOT NULL AND grademax IS NOT NULL");
         upgrade_main_savepoint($result, 2010052100);
     }
 
+    if ($result && $oldversion < 2010052200) {
+        // Define field legacyfiles to be added to course - just in case we are upgrading from PR1
+        $table = new xmldb_table('course');
+        $field = new xmldb_field('legacyfiles', XMLDB_TYPE_INTEGER, '4', XMLDB_UNSIGNED, XMLDB_NOTNULL, null, '0', 'maxbytes');
+
+        // Conditionally launch add field legacyfiles
+        if (!$dbman->field_exists($table, $field)) {
+            $dbman->add_field($table, $field);
+            // enable legacy files in all courses
+            $DB->execute("UPDATE {course} SET legacyfiles = 2");
+        }
+
+        // Main savepoint reached
+        upgrade_main_savepoint($result, 2010052200);
+    }
+
 
     return $result;
 }
index f62fd1f..e0f352e 100644 (file)
@@ -323,6 +323,11 @@ class file_browser {
             $filearea = null;
         }
 
+        if ($filearea === 'course_content' and $course->legacyfiles != 2) {
+            // bad luck, legacy course files not used any more
+            return null;
+        }
+
         $filepath = is_null($filepath) ? '/' : $filepath;
         $filename = is_null($filename) ? '.' : $filename;
 
index 4ec0392..9d6e825 100644 (file)
@@ -92,8 +92,10 @@ class file_info_course extends file_info {
             $children[] = $child;
         }
 
-        if ($child = $this->browser->get_file_info($this->context, 'course_content', 0)) {
-            $children[] = $child;
+        if ($this->course->legacyfiles == 2) {
+            if ($child = $this->browser->get_file_info($this->context, 'course_content', 0)) {
+                $children[] = $child;
+            }
         }
 
         $modinfo = get_fast_modinfo($this->course);
index b343831..4541542 100644 (file)
@@ -2772,7 +2772,7 @@ class settings_navigation extends navigation_node {
         }
 
         // Manage files
-        if (has_capability('moodle/course:managefiles', $coursecontext)) {
+        if ($course->legacyfiles == 2 and has_capability('moodle/course:managefiles', $coursecontext)) {
             $url = new moodle_url('/files/index.php', array('contextid'=>$coursecontext->id, 'itemid'=>0, 'filearea'=>'course_content'));
             $coursenode->add(get_string('files'), $url, self::TYPE_SETTING, null, 'coursefiles', new pix_icon('i/files', ''));
         }
index 9fb0509..f7aeca7 100644 (file)
@@ -6,7 +6,7 @@
 // This is compared against the values stored in the database to determine
 // whether upgrades should be performed (see lib/db/*.php)
 
-    $version = 2010052100;  // YYYYMMDD   = date of the last version bump
+    $version = 2010052200;  // YYYYMMDD   = date of the last version bump
                             //         XX = daily increments
 
     $release = '2.0 Preview 2 (Build: 20100522)';  // Human-friendly version name