diff --git a/course/view.php b/course/view.php index 384b3b8264b..4539d9c633c 100644 --- a/course/view.php +++ b/course/view.php @@ -48,7 +48,7 @@ role_switch($switchrole, $context); } - require_login($course->id); + require_login($course); // Switchrole - sanity check in cost-order... if ($switchrole > 0 && confirm_sesskey() && @@ -186,8 +186,16 @@ // Course wrapper start. echo '
'; - $modinfo =& get_fast_modinfo($course); + $modinfo =& get_fast_modinfo($COURSE); get_all_mods($course->id, $mods, $modnames, $modnamesplural, $modnamesused); + foreach($mods as $modid=>$unused) { + if (!isset($modinfo->cms[$modid])) { + rebuild_course_cache($course->id); + $modinfo =& get_fast_modinfo($COURSE); + debugging('Rebuilding course cache', DEBUG_DEVELOPER); + break; + } + } if (! $sections = get_all_sections($course->id)) { // No sections found // Double-check to be extra sure