/** * Rebuilds the cached list of course activities stored in the database * @param int $courseid - id of course to rebuild, empty means all * @param boolean $clearonly - only clear the modinfo fields, gets rebuild automatically on the fly */ function rebuild_course_cache($courseid = 0, $clearonly = false) { global $COURSE, $SITE, $DB, $CFG; // Destroy navigation caches navigation_cache::destroy_volatile_caches(); if (class_exists('format_base')) { // if file containing class is not loaded, there is no cache there anyway format_base::reset_course_cache($courseid); } if ($clearonly) { if (empty($courseid)) { $DB->set_field('course', 'modinfo', null); $DB->set_field('course', 'sectioncache', null); } 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; } // reset the fast modinfo cache get_fast_modinfo($courseid, 0, true); return; } require_once "{$CFG->dirroot}/course/lib.php"; if ($courseid) { $select = array('id' => $courseid); } else { $select = array(); @set_time_limit(0); // this could take a while! MDL-10954 } $rs = $DB->get_recordset("course", $select, '', 'id,fullname'); foreach ($rs as $course) { $modinfo = serialize(get_array_of_activities($course->id)); $sectioncache = serialize(course_modinfo::build_section_cache($course->id)); $updateobj = (object) array('id' => $course->id, 'modinfo' => $modinfo, 'sectioncache' => $sectioncache); $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 get_fast_modinfo($courseid, 0, true); }
/** * Rebuilds the cached list of course activities stored in the database * @param int $courseid - id of course to rebuild, empty means all * @param boolean $clearonly - only clear the modinfo fields, gets rebuild automatically on the fly */ function rebuild_course_cache($courseid=0, $clearonly=false) { global $COURSE, $DB, $CFG; if (!$clearonly && !empty($CFG->upgraderunning)) { debugging('Function rebuild_course_cache() should not be called from upgrade script unless with argument clearonly.', DEBUG_DEVELOPER); $clearonly = true; } // Destroy navigation caches navigation_cache::destroy_volatile_caches(); if ($clearonly) { if (empty($courseid)) { $DB->set_field('course', 'modinfo', null); $DB->set_field('course', 'sectioncache', null); } 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; } // reset the fast modinfo cache $reset = 'reset'; get_fast_modinfo($reset); return; } require_once("$CFG->dirroot/course/lib.php"); if ($courseid) { $select = array('id'=>$courseid); } else { $select = array(); @set_time_limit(0); // this could take a while! MDL-10954 } $rs = $DB->get_recordset("course", $select,'','id,fullname'); foreach ($rs as $course) { $modinfo = serialize(get_array_of_activities($course->id)); $sectioncache = serialize(course_modinfo::build_section_cache($course->id)); $updateobj = (object)array('id' => $course->id, 'modinfo' => $modinfo, 'sectioncache' => $sectioncache); $DB->update_record("course", $updateobj); // update cached global COURSE too ;-) if ($course->id == $COURSE->id) { $COURSE->modinfo = $modinfo; $COURSE->sectioncache = $sectioncache; } } $rs->close(); // reset the fast modinfo cache $reset = 'reset'; get_fast_modinfo($reset); }