From 644ffbd332b47f9924f46ffdc4227e2a7e0615e1 Mon Sep 17 00:00:00 2001 From: Adrian Greeve Date: Mon, 19 Nov 2018 10:07:39 +0800 Subject: [PATCH] MDL-64063 core_calendar: events by time considers enrolment status. --- .../build/calendar_events_repository.min.js | Bin 1198 -> 1229 bytes .../amd/src/calendar_events_repository.js | 2 ++ calendar/classes/local/api.php | 7 +++++-- .../local/event/data_access/event_vault.php | 5 +++-- .../data_access/event_vault_interface.php | 4 +++- calendar/externallib.php | 10 +++++++--- 6 files changed, 20 insertions(+), 8 deletions(-) diff --git a/blocks/timeline/amd/build/calendar_events_repository.min.js b/blocks/timeline/amd/build/calendar_events_repository.min.js index 5c6e35a14191bfa582822a4999859c1aa9535a9a..d9f1640c5df1904b61d3dee4d564936696589558 100644 GIT binary patch delta 43 zcmZ3-d6sj-UuJooM7^BM+{}`a{Ji|U;?m-R)V!3`l+?1+ypm#DMT5zInKuFeerXYx delta 15 WcmX@hxsG$gU*^f?jOLSrS*idsSOug2 diff --git a/blocks/timeline/amd/src/calendar_events_repository.js b/blocks/timeline/amd/src/calendar_events_repository.js index ace7909c1d7..dfe8c47bce3 100644 --- a/blocks/timeline/amd/src/calendar_events_repository.js +++ b/blocks/timeline/amd/src/calendar_events_repository.js @@ -145,6 +145,8 @@ define(['jquery', 'core/ajax', 'core/notification'], function($, Ajax, Notificat args.timesortto = args.endtime; delete args.endtime; } + // Don't show events related to courses that the user is suspended in. + args.limittononsuspendedevents = true; var request = { methodname: 'core_calendar_get_action_events_by_timesort', diff --git a/calendar/classes/local/api.php b/calendar/classes/local/api.php index ac0f613b392..c182c55b90b 100644 --- a/calendar/classes/local/api.php +++ b/calendar/classes/local/api.php @@ -118,6 +118,7 @@ class api { * @param int|null $timesortto The end timesort value (inclusive) * @param int|null $aftereventid Only return events after this one * @param int $limitnum Limit results to this amount (between 1 and 50) + * @param bool $lmittononsuspendedevents Limit course events to courses the user is active in (not suspended). * @return array A list of action_event_interface objects * @throws \moodle_exception */ @@ -125,7 +126,8 @@ class api { $timesortfrom = null, $timesortto = null, $aftereventid = null, - $limitnum = 20 + $limitnum = 20, + $limittononsuspendedevents = false ) { global $USER; @@ -144,7 +146,8 @@ class api { $afterevent = $event; } - return $vault->get_action_events_by_timesort($USER, $timesortfrom, $timesortto, $afterevent, $limitnum); + return $vault->get_action_events_by_timesort($USER, $timesortfrom, $timesortto, $afterevent, $limitnum, + $limittononsuspendedevents); } /** diff --git a/calendar/classes/local/event/data_access/event_vault.php b/calendar/classes/local/event/data_access/event_vault.php index 121a113c1bb..3d592088d58 100644 --- a/calendar/classes/local/event/data_access/event_vault.php +++ b/calendar/classes/local/event/data_access/event_vault.php @@ -197,11 +197,12 @@ class event_vault implements event_vault_interface { $timesortfrom = null, $timesortto = null, event_interface $afterevent = null, - $limitnum = 20 + $limitnum = 20, + $limittononsuspendedevents = false ) { $courseids = array_map(function($course) { return $course->id; - }, enrol_get_all_users_courses($user->id)); + }, enrol_get_all_users_courses($user->id, $limittononsuspendedevents)); $groupids = array_reduce($courseids, function($carry, $courseid) use ($user) { $groupings = groups_get_user_groups($courseid, $user->id); diff --git a/calendar/classes/local/event/data_access/event_vault_interface.php b/calendar/classes/local/event/data_access/event_vault_interface.php index 15c5a0cad14..28b98152c65 100644 --- a/calendar/classes/local/event/data_access/event_vault_interface.php +++ b/calendar/classes/local/event/data_access/event_vault_interface.php @@ -93,6 +93,7 @@ interface event_vault_interface { * @param int $timesortto Events with timesort until this value (inclusive) * @param event_interface $afterevent Only return events after this one * @param int $limitnum Return at most this number of events + * @param bool $lmittononsuspendedevents Limit course events to courses the user is active in (not suspended). * @return event_interface */ public function get_action_events_by_timesort( @@ -100,7 +101,8 @@ interface event_vault_interface { $timesortfrom, $timesortto, event_interface $afterevent, - $limitnum + $limitnum, + $limittononsuspendedevents ); /** diff --git a/calendar/externallib.php b/calendar/externallib.php index a7d784000c6..abf2c201089 100644 --- a/calendar/externallib.php +++ b/calendar/externallib.php @@ -404,7 +404,9 @@ class core_calendar_external extends external_api { 'timesortfrom' => new external_value(PARAM_INT, 'Time sort from', VALUE_DEFAULT, 0), 'timesortto' => new external_value(PARAM_INT, 'Time sort to', VALUE_DEFAULT, null), 'aftereventid' => new external_value(PARAM_INT, 'The last seen event id', VALUE_DEFAULT, 0), - 'limitnum' => new external_value(PARAM_INT, 'Limit number', VALUE_DEFAULT, 20) + 'limitnum' => new external_value(PARAM_INT, 'Limit number', VALUE_DEFAULT, 20), + 'limittononsuspendedevents' => new external_value(PARAM_BOOL, + 'Limit the events to courses the user is not suspended in', VALUE_DEFAULT, false) ) ); } @@ -420,7 +422,7 @@ class core_calendar_external extends external_api { * @return array */ public static function get_calendar_action_events_by_timesort($timesortfrom = 0, $timesortto = null, - $aftereventid = 0, $limitnum = 20) { + $aftereventid = 0, $limitnum = 20, $limittononsuspendedevents = false) { global $CFG, $PAGE, $USER; require_once($CFG->dirroot . '/calendar/lib.php'); @@ -433,6 +435,7 @@ class core_calendar_external extends external_api { 'timesortto' => $timesortto, 'aftereventid' => $aftereventid, 'limitnum' => $limitnum, + 'limittononsuspendedevents' => $limittononsuspendedevents ] ); $context = \context_user::instance($USER->id); @@ -447,7 +450,8 @@ class core_calendar_external extends external_api { $params['timesortfrom'], $params['timesortto'], $params['aftereventid'], - $params['limitnum'] + $params['limitnum'], + $params['limittononsuspendedevents'] ); $exportercache = new events_related_objects_cache($events); -- 2.43.0