MDL-35339 call rebuild_course_cache() always (and only) after changing course modules or sections

This commit is contained in:
Marina Glancy
2012-10-15 14:08:14 +08:00
parent 384c3510a9
commit 38b19bbca1
8 changed files with 45 additions and 42 deletions
-1
View File
@@ -583,7 +583,6 @@ class generator {
$this->verbose("A $moduledata->name module was added to section $i (id $module->section) "
."of course $courseid.");
rebuild_course_cache($courseid);
$module_instance = $DB->get_field('course_modules', 'instance', array('id' => $module->coursemodule));
$module_record = $DB->get_record($moduledata->name, array('id' => $module_instance));
+4 -3
View File
@@ -612,14 +612,15 @@ class dndupload_ajax_processor {
}
$DB->set_field('course_modules', 'instance', $instanceid, array('id' => $this->cm->id));
// Rebuild the course cache after update action
rebuild_course_cache($this->course->id, true);
$this->course->modinfo = null; // Otherwise we will just get the old version back again.
$sectionid = course_add_cm_to_section($this->course, $this->cm->id, $this->section);
set_coursemodule_visible($this->cm->id, true);
// Rebuild the course cache and retrieve the final info about this module.
rebuild_course_cache($this->course->id, true);
$this->course->modinfo = null; // Otherwise we will just get the old version back again.
// retrieve the final info about this module.
$info = get_fast_modinfo($this->course);
if (!isset($info->cms[$this->cm->id])) {
// The course module has not been properly created in the course - undo everything.
-1
View File
@@ -132,7 +132,6 @@ if ($editform->is_cancelled()) {
// Save any changes to the files used in the editor
update_course($data, $editoroptions);
}
rebuild_course_cache($course->id);
switch ($returnto) {
case 'category':
+32 -16
View File
@@ -1268,7 +1268,7 @@ function set_section_visible($courseid, $sectionnumber, $visibility) {
set_coursemodule_visible($moduleid, $visibility, true);
}
}
rebuild_course_cache($courseid);
rebuild_course_cache($courseid, true);
// Determine which modules are visible for AJAX update
if (!empty($modules)) {
@@ -2687,7 +2687,9 @@ function add_course_module($mod) {
$mod->added = time();
unset($mod->id);
return $DB->insert_record("course_modules", $mod);
$cmid = $DB->insert_record("course_modules", $mod);
rebuild_course_cache($mod->course, true);
return $cmid;
}
/**
@@ -2774,12 +2776,22 @@ function course_add_cm_to_section($courseorid, $modid, $sectionnum, $beforemod =
function set_coursemodule_groupmode($id, $groupmode) {
global $DB;
return $DB->set_field("course_modules", "groupmode", $groupmode, array("id"=>$id));
$cm = $DB->get_record('course_modules', array('id' => $id), 'id,course,groupmode', MUST_EXIST);
if ($cm->groupmode != $groupmode) {
$DB->set_field('course_modules', 'groupmode', $groupmode, array('id' => $cm->id));
rebuild_course_cache($cm->course, true);
}
return ($cm->groupmode != $groupmode);
}
function set_coursemodule_idnumber($id, $idnumber) {
global $DB;
return $DB->set_field("course_modules", "idnumber", $idnumber, array("id"=>$id));
$cm = $DB->get_record('course_modules', array('id' => $id), 'id,course,idnumber', MUST_EXIST);
if ($cm->idnumber != $idnumber) {
$DB->set_field('course_modules', 'idnumber', $idnumber, array('id' => $cm->id));
rebuild_course_cache($cm->course, true);
}
return ($cm->idnumber != $idnumber);
}
/**
@@ -2823,10 +2835,13 @@ function set_coursemodule_visible($id, $visible, $prevstateoverrides=false) {
$DB->set_field('course_modules', 'visibleold', $cm->visible, array('id'=>$id));
} else {
// Get the previous saved visible states.
return $DB->set_field('course_modules', 'visible', $cm->visibleold, array('id'=>$id));
$DB->set_field('course_modules', 'visible', $cm->visibleold, array('id'=>$id));
}
} else {
$DB->set_field("course_modules", "visible", $visible, array("id"=>$id));
}
return $DB->set_field("course_modules", "visible", $visible, array("id"=>$id));
rebuild_course_cache($cm->course, true);
return true;
}
/**
@@ -2867,7 +2882,9 @@ function delete_course_module($id) {
'criteriatype' => COMPLETION_CRITERIA_TYPE_ACTIVITY));
delete_context(CONTEXT_MODULE, $cm->id);
return $DB->delete_records('course_modules', array('id'=>$cm->id));
$DB->delete_records('course_modules', array('id'=>$cm->id));
rebuild_course_cache($cm->course, true);
return true;
}
function delete_mod_from_section($modid, $sectionid) {
@@ -2880,7 +2897,9 @@ function delete_mod_from_section($modid, $sectionid) {
if ($key = array_keys ($modarray, $modid)) {
array_splice($modarray, $key[0], 1);
$newsequence = implode(",", $modarray);
return $DB->set_field("course_sections", "sequence", $newsequence, array("id"=>$section->id));
$DB->set_field("course_sections", "sequence", $newsequence, array("id"=>$section->id));
rebuild_course_cache($section->course, true);
return true;
} else {
return false;
}
@@ -2902,7 +2921,7 @@ function move_section($course, $section, $move) {
debugging('This function will be removed before 2.5 is released please use move_section_to', DEBUG_DEVELOPER);
/// Moves a whole course section up and down within the course
global $USER, $DB;
global $USER;
if (!$move) {
return true;
@@ -2915,10 +2934,6 @@ function move_section($course, $section, $move) {
}
$retval = move_section_to($course, $section, $sectiondest);
// If section moved, then rebuild course cache.
if ($retval) {
rebuild_course_cache($course->id, true);
}
return $retval;
}
@@ -2977,6 +2992,7 @@ function move_section_to($course, $section, $destination) {
}
$transaction->allow_commit();
rebuild_course_cache($course->id, true);
return true;
}
@@ -3058,7 +3074,7 @@ function reorder_sections($sections, $origin_position, $target_position) {
* All parameters are objects
*/
function moveto_module($mod, $section, $beforemod=NULL) {
global $DB, $OUTPUT;
global $OUTPUT;
/// Remove original module from original section
if (! delete_mod_from_section($mod->id, $mod->section)) {
@@ -3326,8 +3342,6 @@ function course_format_name ($course,$max=100) {
* @return bool whether the current user is allowed to add this type of module to this course.
*/
function course_allowed_module($course, $modname) {
global $DB;
if (is_numeric($modname)) {
throw new coding_exception('Function course_allowed_module no longer
supports numeric module ids. Please update your code to pass the module name.');
@@ -3852,6 +3866,8 @@ function update_course($data, $editoroptions = NULL) {
// Update with the new data
$DB->update_record('course', $data);
// make sure the modinfo cache is reset
rebuild_course_cache($data->id);
$course = $DB->get_record('course', array('id'=>$data->id));
-9
View File
@@ -188,8 +188,6 @@ if (!empty($add)) {
"view.php?id=$cm->course",
"$cm->modname $cm->instance", $cm->id);
rebuild_course_cache($course->id);
redirect($return);
}
@@ -230,8 +228,6 @@ if ((!empty($movetosection) or !empty($moveto)) and confirm_sesskey()) {
unset($USER->activitycopyname);
unset($USER->activitycopysectionreturn);
rebuild_course_cache($section->course);
redirect(course_get_url($course, $section->section, array('sr' => $sectionreturn)));
} else if (!empty($indent) and confirm_sesskey()) {
@@ -268,8 +264,6 @@ if ((!empty($movetosection) or !empty($moveto)) and confirm_sesskey()) {
set_coursemodule_visible($cm->id, 0);
rebuild_course_cache($cm->course);
redirect(course_get_url($course, $cm->sectionnum, array('sr' => $sectionreturn)));
} else if (!empty($show) and confirm_sesskey()) {
@@ -287,7 +281,6 @@ if ((!empty($movetosection) or !empty($moveto)) and confirm_sesskey()) {
if ($module->visible and ($section->visible or (SITEID == $cm->course))) {
set_coursemodule_visible($cm->id, 1);
rebuild_course_cache($cm->course);
}
redirect(course_get_url($course, $section->section, array('sr' => $sectionreturn)));
@@ -305,8 +298,6 @@ if ((!empty($movetosection) or !empty($moveto)) and confirm_sesskey()) {
set_coursemodule_groupmode($cm->id, $groupmode);
rebuild_course_cache($cm->course);
redirect(course_get_url($course, $cm->sectionnum, array('sr' => $sectionreturn)));
} else if (!empty($copy) and confirm_sesskey()) { // value = course module
+2 -4
View File
@@ -97,7 +97,6 @@ switch($requestmethod) {
}
break;
}
rebuild_course_cache($course->id);
break;
case 'resource':
@@ -117,6 +116,7 @@ switch($requestmethod) {
$cm->indent = $value;
if ($cm->indent >= 0) {
$DB->update_record('course_modules', $cm);
rebuild_course_cache($cm->course);
}
break;
@@ -159,6 +159,7 @@ switch($requestmethod) {
if (!empty($module->name)) {
$DB->update_record($cm->modname, $module);
rebuild_course_cache($cm->course);
} else {
$module->name = $cm->name;
}
@@ -169,7 +170,6 @@ switch($requestmethod) {
echo json_encode(array('instancename' => format_string($module->name, true, $stringoptions)));
break;
}
rebuild_course_cache($course->id);
break;
case 'course':
@@ -222,8 +222,6 @@ switch($requestmethod) {
$eventdata->userid = $USER->id;
events_trigger('mod_deleted', $eventdata);
rebuild_course_cache($course->id);
add_to_log($courseid, "course", "delete mod",
"view.php?id=$courseid",
"$cm->modname $cm->instance", $cm->id);
-2
View File
@@ -179,8 +179,6 @@
if (!empty($move) and has_capability('moodle/course:movesections', $context) and confirm_sesskey()) {
$destsection = $section + $move;
if (move_section_to($course, $section, $destsection)) {
// Rebuild course cache, after moving section
rebuild_course_cache($course->id, true);
if ($course->id == SITEID) {
redirect($CFG->wwwroot . '/?redirect=0');
} else {
+7 -6
View File
@@ -208,7 +208,9 @@ class conditionlib_testcase extends advanced_testcase {
foreach($params as $name=>$value) {
$settings->{$name}=$value;
}
return $DB->insert_record('course_modules',$settings);
$cmid = $DB->insert_record('course_modules',$settings);
rebuild_course_cache($courseid, true);
return $cmid;
}
private function make_section($courseid, $cmids, $sectionnum=0, $params=array()) {
@@ -220,7 +222,9 @@ class conditionlib_testcase extends advanced_testcase {
foreach ($params as $name => $value) {
$record->{$name} = $value;
}
return $DB->insert_record('course_sections', $record);
$sectionid = $DB->insert_record('course_sections', $record);
rebuild_course_cache($courseid, true);
return $sectionid;
}
private function make_grouping($courseid, $name) {
@@ -321,6 +325,7 @@ class conditionlib_testcase extends advanced_testcase {
'grademin' => 5.5
));
rebuild_course_cache($courseid, true);
// Okay sweet, now get modinfo
$course = $DB->get_record('course', array('id' => $courseid));
$modinfo = get_fast_modinfo($course);
@@ -476,8 +481,6 @@ class conditionlib_testcase extends advanced_testcase {
// Need to reset modinfo after changing the options
rebuild_course_cache($courseid);
$reset = 'reset';
get_fast_modinfo($reset);
$ci=new condition_info((object)array('id'=>$cmid),CONDITION_MISSING_EVERYTHING);
$ci->add_completion_condition($oldid,COMPLETION_COMPLETE);
@@ -626,8 +629,6 @@ class conditionlib_testcase extends advanced_testcase {
// Completion: Reset modinfo after changing the options
rebuild_course_cache($courseid);
$reset = 'reset';
get_fast_modinfo($reset);
// Completion: Add condition
$ci = new condition_info_section((object)array('id' => $sectionid),