mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
Merge branch 'w20_MDL-32659_m23_navcourses' of git://github.com/skodak/moodle
This commit is contained in:
commit
f98a3833b9
1 changed files with 32 additions and 11 deletions
|
@ -1577,21 +1577,29 @@ class global_navigation extends navigation_node {
|
|||
// First up fetch all of the courses in categories where we know that we are going to
|
||||
// need the majority of courses.
|
||||
list($ccselect, $ccjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
|
||||
list($courseids, $courseparams) = $DB->get_in_or_equal(array_keys($this->addedcourses) + array($SITE->id), SQL_PARAMS_NAMED, 'lcourse', false);
|
||||
list($categoryids, $categoryparams) = $DB->get_in_or_equal($fullfetch, SQL_PARAMS_NAMED, 'lcategory');
|
||||
$sql = "SELECT c.id, c.sortorder, c.visible, c.fullname, c.shortname, c.category $ccselect
|
||||
FROM {course} c
|
||||
$ccjoin
|
||||
WHERE c.category {$categoryids} AND
|
||||
c.id {$courseids}
|
||||
WHERE c.category {$categoryids}
|
||||
ORDER BY c.sortorder ASC";
|
||||
$coursesrs = $DB->get_recordset_sql($sql, $courseparams + $categoryparams);
|
||||
$coursesrs = $DB->get_recordset_sql($sql, $categoryparams);
|
||||
foreach ($coursesrs as $course) {
|
||||
if ($course->id == $SITE->id) {
|
||||
// This should not be necessary, frontpage is not in any category.
|
||||
continue;
|
||||
}
|
||||
if (array_key_exists($course->id, $this->addedcourses)) {
|
||||
// It is probably better to not include the already loaded courses
|
||||
// directly in SQL because inequalities may confuse query optimisers
|
||||
// and may interfere with query caching.
|
||||
continue;
|
||||
}
|
||||
if (!$this->can_add_more_courses_to_category($course->category)) {
|
||||
continue;
|
||||
}
|
||||
context_instance_preload($course);
|
||||
if ($course->id != $SITE->id && !$course->visible && !is_role_switched($course->id) && !has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $course->id))) {
|
||||
if (!$course->visible && !is_role_switched($course->id) && !has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $course->id))) {
|
||||
continue;
|
||||
}
|
||||
$coursenodes[$course->id] = $this->add_course($course);
|
||||
|
@ -1604,21 +1612,30 @@ class global_navigation extends navigation_node {
|
|||
// proportion of the courses.
|
||||
foreach ($partfetch as $categoryid) {
|
||||
list($ccselect, $ccjoin) = context_instance_preload_sql('c.id', CONTEXT_COURSE, 'ctx');
|
||||
list($courseids, $courseparams) = $DB->get_in_or_equal(array_keys($this->addedcourses) + array($SITE->id), SQL_PARAMS_NAMED, 'lcourse', false);
|
||||
$sql = "SELECT c.id, c.sortorder, c.visible, c.fullname, c.shortname, c.category $ccselect
|
||||
FROM {course} c
|
||||
$ccjoin
|
||||
WHERE c.category = :categoryid AND
|
||||
c.id {$courseids}
|
||||
WHERE c.category = :categoryid
|
||||
ORDER BY c.sortorder ASC";
|
||||
$courseparams['categoryid'] = $categoryid;
|
||||
$courseparams = array('categoryid' => $categoryid);
|
||||
$coursesrs = $DB->get_recordset_sql($sql, $courseparams, 0, $limit * 5);
|
||||
foreach ($coursesrs as $course) {
|
||||
if ($course->id == $SITE->id) {
|
||||
// This should not be necessary, frontpage is not in any category.
|
||||
continue;
|
||||
}
|
||||
if (array_key_exists($course->id, $this->addedcourses)) {
|
||||
// It is probably better to not include the already loaded courses
|
||||
// directly in SQL because inequalities may confuse query optimisers
|
||||
// and may interfere with query caching.
|
||||
// This also helps to respect expected $limit on repeated executions.
|
||||
continue;
|
||||
}
|
||||
if (!$this->can_add_more_courses_to_category($course->category)) {
|
||||
break;
|
||||
}
|
||||
context_instance_preload($course);
|
||||
if ($course->id != $SITE->id && !$course->visible && !is_role_switched($course->id) && !has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $course->id))) {
|
||||
if (!$course->visible && !is_role_switched($course->id) && !has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $course->id))) {
|
||||
continue;
|
||||
}
|
||||
$coursenodes[$course->id] = $this->add_course($course);
|
||||
|
@ -1637,8 +1654,12 @@ class global_navigation extends navigation_node {
|
|||
ORDER BY c.sortorder ASC";
|
||||
$coursesrs = $DB->get_recordset_sql($sql, $courseparams);
|
||||
foreach ($coursesrs as $course) {
|
||||
if ($course->id == $SITE->id) {
|
||||
// frotpage is not wanted here
|
||||
continue;
|
||||
}
|
||||
context_instance_preload($course);
|
||||
if ($course->id != $SITE->id && !$course->visible && !is_role_switched($course->id) && !has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $course->id))) {
|
||||
if (!$course->visible && !is_role_switched($course->id) && !has_capability('moodle/course:viewhiddencourses', get_context_instance(CONTEXT_COURSE, $course->id))) {
|
||||
continue;
|
||||
}
|
||||
$coursenodes[$course->id] = $this->add_course($course);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue