From 01ed53df0fd6692d1bd70afa59b3d418b85bb99d Mon Sep 17 00:00:00 2001 From: Damyon Wiese Date: Thu, 26 Oct 2017 14:21:29 +0800 Subject: [PATCH] MDL-59973 calendar: Only load required fields When loading courses for the course filter on the calendar, we only need the id and shortname. --- calendar/lib.php | 13 ++++++++++--- calendar/renderer.php | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/calendar/lib.php b/calendar/lib.php index 69b7e6cbca6..e9c95d0a67d 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -2138,9 +2138,10 @@ function calendar_delete_event_allowed($event) { * course to display. * * @param int $courseid (optional) If passed, an additional course can be returned for admins (the current course). + * @param string $fields Comma separated list of course fields to return. * @return array $courses Array of courses to display */ -function calendar_get_default_courses($courseid = null) { +function calendar_get_default_courses($courseid = null, $fields = '*') { global $CFG, $DB; if (!isloggedin()) { @@ -2148,9 +2149,15 @@ function calendar_get_default_courses($courseid = null) { } if (has_capability('moodle/calendar:manageentries', context_system::instance()) && !empty($CFG->calendar_adminseesall)) { - $courses = get_courses('all', 'c.shortname', 'c.*'); + // Add a c. prefix to every field as expected by get_courses function. + $fieldlist = explode(',', $fields); + + $prefixedfields = array_map(function($value) { + return 'c.' . trim($value); + }, $fieldlist); + $courses = get_courses('all', 'c.shortname', implode(',', $prefixedfields)); } else { - $courses = enrol_get_my_courses(); + $courses = enrol_get_my_courses($fields); } if ($courseid && $courseid != SITEID) { diff --git a/calendar/renderer.php b/calendar/renderer.php index b5d36b7e5cc..767e83744f3 100644 --- a/calendar/renderer.php +++ b/calendar/renderer.php @@ -247,7 +247,7 @@ class core_calendar_renderer extends plugin_renderer_base { return ''; } - $courses = calendar_get_default_courses($courseid); + $courses = calendar_get_default_courses($courseid, 'id, shortname'); unset($courses[SITEID]);