MDL-55231 core_course: Partial course cache rebuild

This commit is contained in:
Dongsheng Cai 2021-07-16 13:49:35 +10:00
parent e5894c0455
commit 9a900492bc
15 changed files with 406 additions and 177 deletions

View file

@ -2833,14 +2833,23 @@ function lti_update_type($type, $config) {
}
require_once($CFG->libdir.'/modinfolib.php');
if ($clearcache) {
$sql = "SELECT DISTINCT course
FROM {lti}
WHERE typeid = ?";
$sql = "SELECT cm.id, cm.course
FROM {course_modules} cm
JOIN {modules} m ON cm.module = m.id
JOIN {lti} l ON l.course = cm.course
WHERE m.name = :name AND l.typeid = :typeid";
$courses = $DB->get_fieldset_sql($sql, array($type->id));
$rs = $DB->get_recordset_sql($sql, ['name' => 'lti', 'typeid' => $type->id]);
foreach ($courses as $courseid) {
rebuild_course_cache($courseid, true);
$courseids = [];
foreach ($rs as $record) {
$courseids[] = $record->course;
course_purge_module_cache($record);
}
$rs->close();
$courseids = array_unique($courseids);
foreach ($courseids as $courseid) {
rebuild_course_cache($courseid, false, true);
}
}
}