print_error('nocontext');
}
- if (empty($USER->switchrole[$context->id]) &&
- !($COURSE->visible && course_parent_visible($COURSE)) &&
- !has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $COURSE->id)) ){
- print_header_simple();
- notice(get_string('coursehidden'), $CFG->wwwroot .'/');
- }
-
+ if (empty($USER->access['rsw'][$context->path])) {
+ //
+ // Spaghetti logic construct
+ //
+ // - able to view course?
+ // - able to view category?
+ // => if either is missing, course is hidden from this user
+ //
+ // It's carefully ordered so we run the cheap checks first, and the
+ // more costly checks last...
+ //
+ if (! (($COURSE->visible || has_capability('moodle/course:viewhiddencourses',
+ get_context_instance(CONTEXT_COURSE,
+ $COURSE->id)))
+ && (course_parent_visible($COURSE)) || has_capability('moodle/course:viewhiddencourses',
+ get_context_instance(CONTEXT_COURSECAT,
+ $COURSE->category)))) {
+ print_header_simple();
+ notice(get_string('coursehidden'), $CFG->wwwroot .'/');
+ }
+ }
+
/// Non-guests who don't currently have access, check if they can be allowed in as a guest
if ($USER->username != 'guest' and !has_capability('moodle/course:view', $context)) {