MDL-35339 call rebuild_course_cache() always (and only) after changing course modules or sections
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
@@ -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));
|
||||
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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),
|
||||
|
||||
Reference in New Issue
Block a user