Hi,
i have edited function
can_view_course_info($course, $user = null)
to make a patch, because when you had visible ocurses in hidden categories, there were visible in listings, i maked them invisible, but accssesible, i dont have a time for learning how to apply patch to moodle core, if you will be able for help and aply it.
/course/classes/category.php
public static function can_view_course_info($course, $user = null) {
global $DB;
if ($course->id == SITEID) {
return true;
}
if (!$course->visible) {
$coursecontext = context_course::instance($course->id);
if (!has_capability('moodle/course:viewhiddencourses', $coursecontext, $user)) {
return false;
}
}
if ($course->visible&&isset($course->category) && $DB->get_record('course_categories', array('id' => $course->category))->visible == 0) {
$coursecontext = context_course::instance($course->id);
if (!has_capability('moodle/course:viewhiddencourses', $coursecontext, $user)) {
return false;
}
}
$categorycontext = isset($course->category) ? context_coursecat::instance($course->category) :
context_course::instance($course->id)->get_parent_context();
return has_capability('moodle/category:viewcourselist', $categorycontext, $user);
}