Revert "MDL-39876 update_course_record function to update global COURSE"
authorSam Hemelryk <sam@moodle.com>
Wed, 21 Aug 2013 03:11:59 +0000 (15:11 +1200)
committerSam Hemelryk <sam@moodle.com>
Wed, 21 Aug 2013 03:21:06 +0000 (15:21 +1200)
This reverts commit c290ac5510ca06b3eae557c2165c2f106dde46aa.

Conflicts:
course/lib.php

backup/moodle2/restore_stepslib.php
course/externallib.php
course/lib.php
course/manage.php
lib/adminlib.php
lib/datalib.php
lib/modinfolib.php
lib/moodlelib.php
lib/tests/accesslib_test.php

index eba8870..84f6b23 100644 (file)
@@ -1422,7 +1422,7 @@ class restore_course_structure_step extends restore_structure_step {
         }
 
         // Course record ready, update it
-        update_course_record($data);
+        $DB->update_record('course', $data);
 
         course_get_format($data)->update_course_format_options($data);
 
index 31d7f73..65881ea 100644 (file)
@@ -1083,7 +1083,7 @@ class core_course_external extends external_api {
         $course->visible = $params['visible'];
 
         // Set shortname and fullname back.
-        update_course_record($course);
+        $DB->update_record('course', $course);
 
         if (empty($CFG->keeptempdirectoriesonbackup)) {
             fulldelete($backupbasepath);
index 2c77775..6f846f3 100644 (file)
@@ -2052,7 +2052,7 @@ function move_courses($courseids, $categoryid) {
                 $course->visible = 0;
             }
 
-            update_course_record($course);
+            $DB->update_record('course', $course);
 
             // Store the context.
             $context = context_course::instance($course->id);
@@ -2383,7 +2383,7 @@ function update_course($data, $editoroptions = NULL) {
     }
 
     // Update with the new data
-    update_course_record($data);
+    $DB->update_record('course', $data);
     // make sure the modinfo cache is reset
     rebuild_course_cache($data->id);
 
index 1a66a73..ae94e07 100644 (file)
@@ -247,7 +247,7 @@ if ((!empty($hide) or !empty($show)) && confirm_sesskey()) {
     require_capability('moodle/course:visibility', $coursecontext);
     // Set the visibility of the course. we set the old flag when user manually changes visibility of course.
     $params = array('id' => $course->id, 'visible' => $visible, 'visibleold' => $visible, 'timemodified' => time());
-    update_course_record((object)$params);
+    $DB->update_record('course', $params);
     cache_helper::purge_by_event('changesincourse');
 
     // Update the course object we pass to the event class.
index dc3035b..5d209bd 100644 (file)
@@ -3578,7 +3578,7 @@ class admin_setting_sitesetselect extends admin_setting_configselect {
      * @return string empty or error message
      */
     public function write_setting($data) {
-        global $SITE, $COURSE;
+        global $DB, $SITE, $COURSE;
         if (!in_array($data, array_keys($this->choices))) {
             return get_string('errorsetting', 'admin');
         }
@@ -3589,16 +3589,17 @@ class admin_setting_sitesetselect extends admin_setting_configselect {
         $record->timemodified = time();
 
         course_get_format($SITE)->update_course_format_options($record);
-        update_course_record($record);
+        $DB->update_record('course', $record);
 
         // Reset caches.
-        $SITE = get_course($SITE->id);
+        $SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
         if ($SITE->id == $COURSE->id) {
             $COURSE = $SITE;
         }
         format_base::reset_course_cache($SITE->id);
 
         return '';
+
     }
 }
 
@@ -3780,21 +3781,22 @@ class admin_setting_sitesetcheckbox extends admin_setting_configcheckbox {
      * @return string empty string or error message
      */
     public function write_setting($data) {
-        global $SITE, $COURSE;
+        global $DB, $SITE, $COURSE;
         $record = new stdClass();
         $record->id            = $SITE->id;
         $record->{$this->name} = ($data == '1' ? 1 : 0);
         $record->timemodified  = time();
 
         course_get_format($SITE)->update_course_format_options($record);
-        update_course_record($record);
+        $DB->update_record('course', $record);
 
         // Reset caches.
-        $SITE = get_course($SITE->id);
+        $SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
         if ($SITE->id == $COURSE->id) {
             $COURSE = $SITE;
         }
         format_base::reset_course_cache($SITE->id);
+
         return '';
     }
 }
@@ -3841,7 +3843,7 @@ class admin_setting_sitesettext extends admin_setting_configtext {
      * @return string empty or error message
      */
     public function write_setting($data) {
-        global $SITE, $COURSE;
+        global $DB, $SITE, $COURSE;
         $data = trim($data);
         $validated = $this->validate($data);
         if ($validated !== true) {
@@ -3854,14 +3856,15 @@ class admin_setting_sitesettext extends admin_setting_configtext {
         $record->timemodified  = time();
 
         course_get_format($SITE)->update_course_format_options($record);
-        update_course_record($record);
+        $DB->update_record('course', $record);
 
         // Reset caches.
-        $SITE = get_course($SITE->id);
+        $SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
         if ($SITE->id == $COURSE->id) {
             $COURSE = $SITE;
         }
         format_base::reset_course_cache($SITE->id);
+
         return '';
     }
 }
@@ -3904,7 +3907,7 @@ class admin_setting_special_frontpagedesc extends admin_setting {
         $record->timemodified  = time();
 
         course_get_format($SITE)->update_course_format_options($record);
-        update_course_record($record);
+        $DB->update_record('course', $record);
 
         // Reset caches.
         $SITE = $DB->get_record('course', array('id'=>$SITE->id), '*', MUST_EXIST);
index 20fab6f..c7ef03c 100644 (file)
@@ -584,27 +584,6 @@ function get_course($courseid, $clone = true) {
     }
 }
 
-/**
- * Updates a course record in database. If the update affects the global $COURSE
- * or $SITE, then these variables are also changed.
- *
- * @param stdClass $courserec Course record
- * @throws dml_exception If error updating database
- */
-function update_course_record($courserec) {
-    global $DB, $COURSE, $SITE;
-    $DB->update_record('course', $courserec);
-    if (!empty($COURSE->id) && $COURSE->id == $courserec->id) {
-        foreach ((array)$courserec as $name => $value) {
-            $COURSE->{$name} = $value;
-        }
-    } else if (!empty($SITE->id) && $SITE->id == $courserec->id) {
-        foreach ((array)$courserec as $name => $value) {
-            $SITE->{$name} = $value;
-        }
-    }
-}
-
 /**
  * Returns list of courses, for whole site, or category
  *
index 21fbfe6..34c94cc 100644 (file)
@@ -1468,16 +1468,19 @@ function rebuild_course_cache($courseid=0, $clearonly=false) {
     if ($clearonly) {
         if (empty($courseid)) {
             $DB->execute('UPDATE {course} set modinfo = ?, sectioncache = ?', array(null, null));
-            // Clear the cached globals too.
+        } else {
+            // Clear both fields in one update
+            $resetobj = (object)array('id' => $courseid, 'modinfo' => null, 'sectioncache' => null);
+            $DB->update_record('course', $resetobj);
+        }
+        // update cached global COURSE too ;-)
+        if ($courseid == $COURSE->id or empty($courseid)) {
             $COURSE->modinfo = null;
             $COURSE->sectioncache = null;
+        }
+        if ($courseid == $SITE->id) {
             $SITE->modinfo = null;
             $SITE->sectioncache = null;
-        } else {
-            // Clear both fields in one update
-            $resetobj = (object)array('id' => $courseid, 'modinfo' => null, 'sectioncache' => null);
-            // Update course object including cached globals.
-            update_course_record($resetobj);
         }
         // reset the fast modinfo cache
         get_fast_modinfo($courseid, 0, true);
@@ -1499,9 +1502,16 @@ function rebuild_course_cache($courseid=0, $clearonly=false) {
         $sectioncache = serialize(course_modinfo::build_section_cache($course->id));
         $updateobj = (object)array('id' => $course->id,
                 'modinfo' => $modinfo, 'sectioncache' => $sectioncache);
-
-        // Update course object including cached globals.
-        update_course_record($updateobj);
+        $DB->update_record("course", $updateobj);
+        // update cached global COURSE too ;-)
+        if ($course->id == $COURSE->id) {
+            $COURSE->modinfo = $modinfo;
+            $COURSE->sectioncache = $sectioncache;
+        }
+        if ($course->id == $SITE->id) {
+            $SITE->modinfo = $modinfo;
+            $SITE->sectioncache = $sectioncache;
+        }
     }
     $rs->close();
     // reset the fast modinfo cache
index 59666bc..e2548ac 100644 (file)
@@ -5105,7 +5105,7 @@ function remove_course_contents($courseid, $showfeedback = true, array $options
     if (!empty($options['keep_groups_and_groupings'])) {
         $oldcourse->defaultgroupingid = 0;
     }
-    update_course_record($oldcourse);
+    $DB->update_record('course', $oldcourse);
 
     // Delete course sections and availability options.
     $DB->delete_records_select('course_sections_availability',
index 84db468..5180bf7 100644 (file)
@@ -2433,7 +2433,7 @@ class core_accesslib_testcase extends advanced_testcase {
         $miscid = $DB->get_field_sql("SELECT MIN(id) FROM {course_categories}");
         $categorycontext = context_coursecat::instance($miscid);
         $course->category = $miscid;
-        update_course_record($course);
+        $DB->update_record('course', $course);
         $context->update_moved($categorycontext);
 
         $context = context_course::instance($course->id);
@@ -2672,7 +2672,7 @@ class core_accesslib_testcase extends advanced_testcase {
         $miscid = $DB->get_field_sql("SELECT MIN(id) FROM {course_categories}");
         $categorycontext = context_coursecat::instance($miscid);
         $course->category = $miscid;
-        update_course_record($course);
+        $DB->update_record('course', $course);
         context_moved($context, $categorycontext);
         $this->assertDebuggingCalled('context_moved() is deprecated, please use context::update_moved() instead.', DEBUG_DEVELOPER);
         $context = context_course::instance($course->id);