MDL-64063 core_calendar: events by time considers enrolment status.
authorAdrian Greeve <abgreeve@gmail.com>
Mon, 19 Nov 2018 02:07:39 +0000 (10:07 +0800)
committerAdrian Greeve <abgreeve@gmail.com>
Wed, 21 Nov 2018 01:51:52 +0000 (09:51 +0800)
blocks/timeline/amd/build/calendar_events_repository.min.js
blocks/timeline/amd/src/calendar_events_repository.js
calendar/classes/local/api.php
calendar/classes/local/event/data_access/event_vault.php
calendar/classes/local/event/data_access/event_vault_interface.php
calendar/externallib.php

index 5c6e35a..d9f1640 100644 (file)
Binary files a/blocks/timeline/amd/build/calendar_events_repository.min.js and b/blocks/timeline/amd/build/calendar_events_repository.min.js differ
index ace7909..dfe8c47 100644 (file)
@@ -145,6 +145,8 @@ define(['jquery', 'core/ajax', 'core/notification'], function($, Ajax, Notificat
             args.timesortto = args.endtime;
             delete args.endtime;
         }
             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',
 
         var request = {
             methodname: 'core_calendar_get_action_events_by_timesort',
index ac0f613..c182c55 100644 (file)
@@ -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 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
      */
      * @return array A list of action_event_interface objects
      * @throws \moodle_exception
      */
@@ -125,7 +126,8 @@ class api {
         $timesortfrom = null,
         $timesortto = null,
         $aftereventid = null,
         $timesortfrom = null,
         $timesortto = null,
         $aftereventid = null,
-        $limitnum = 20
+        $limitnum = 20,
+        $limittononsuspendedevents = false
     ) {
         global $USER;
 
     ) {
         global $USER;
 
@@ -144,7 +146,8 @@ class api {
             $afterevent = $event;
         }
 
             $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);
     }
 
     /**
     }
 
     /**
index 121a113..3d59208 100644 (file)
@@ -197,11 +197,12 @@ class event_vault implements event_vault_interface {
         $timesortfrom = null,
         $timesortto = null,
         event_interface $afterevent = null,
         $timesortfrom = null,
         $timesortto = null,
         event_interface $afterevent = null,
-        $limitnum = 20
+        $limitnum = 20,
+        $limittononsuspendedevents = false
     ) {
         $courseids = array_map(function($course) {
             return $course->id;
     ) {
         $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);
 
         $groupids = array_reduce($courseids, function($carry, $courseid) use ($user) {
             $groupings = groups_get_user_groups($courseid, $user->id);
index 15c5a0c..28b9815 100644 (file)
@@ -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 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(
      * @return event_interface
      */
     public function get_action_events_by_timesort(
@@ -100,7 +101,8 @@ interface event_vault_interface {
         $timesortfrom,
         $timesortto,
         event_interface $afterevent,
         $timesortfrom,
         $timesortto,
         event_interface $afterevent,
-        $limitnum
+        $limitnum,
+        $limittononsuspendedevents
     );
 
     /**
     );
 
     /**
index a7d7840..abf2c20 100644 (file)
@@ -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),
                 '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,
      * @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');
         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,
                 'timesortto' => $timesortto,
                 'aftereventid' => $aftereventid,
                 'limitnum' => $limitnum,
+                'limittononsuspendedevents' => $limittononsuspendedevents
             ]
         );
         $context = \context_user::instance($USER->id);
             ]
         );
         $context = \context_user::instance($USER->id);
@@ -447,7 +450,8 @@ class core_calendar_external extends external_api {
             $params['timesortfrom'],
             $params['timesortto'],
             $params['aftereventid'],
             $params['timesortfrom'],
             $params['timesortto'],
             $params['aftereventid'],
-            $params['limitnum']
+            $params['limitnum'],
+            $params['limittononsuspendedevents']
         );
 
         $exportercache = new events_related_objects_cache($events);
         );
 
         $exportercache = new events_related_objects_cache($events);