$params['options']['timeend'] = PHP_INT_MAX;
}
+ // Event list does not check visibility and permissions, we'll check that later.
$eventlist = calendar_get_events($params['options']['timestart'], $params['options']['timeend'], $funcparam['users'], $funcparam['groups'],
$funcparam['courses'], true, $params['options']['ignorehidden']);
+
// WS expects arrays.
$events = array();
- foreach ($eventlist as $id => $event) {
- $events[$id] = (array) $event;
- }
// We need to get events asked for eventids.
- $eventsbyid = calendar_get_events_by_id($params['events']['eventids']);
- foreach ($eventsbyid as $eventid => $eventobj) {
+ if ($eventsbyid = calendar_get_events_by_id($params['events']['eventids'])) {
+ $eventlist += $eventsbyid;
+ }
+
+ foreach ($eventlist as $eventid => $eventobj) {
$event = (array) $eventobj;
- if (isset($events[$eventid])) {
- continue;
- }
+
if ($hassystemcap) {
// User can see everything, no further check is needed.
$events[$eventid] = $event;
$events = external_api::clean_returnvalue(core_calendar_external::get_calendar_events_returns(), $events);
$this->assertEquals(1, count($events['events']));
$this->assertEquals(0, count($events['warnings']));
+
+ // Now, create an activity event.
+ $this->setAdminUser();
+ $nexttime = time() + DAYSECS;
+ $assign = $this->getDataGenerator()->create_module('assign', array('course' => $course->id, 'duedate' => $nexttime));
+
+ $this->setUser($user);
+ $paramevents = array ('courseids' => array($course->id));
+ $options = array ('siteevents' => true, 'userevents' => true, 'timeend' => time() + WEEKSECS);
+ $events = core_calendar_external::get_calendar_events($paramevents, $options);
+ $events = external_api::clean_returnvalue(core_calendar_external::get_calendar_events_returns(), $events);
+
+ $this->assertCount(5, $events['events']);
+
+ // Hide the assignment.
+ set_coursemodule_visible($assign->cmid, 0);
+ // Empty all the caches that may be affected by this change.
+ accesslib_clear_all_caches_for_unit_testing();
+ course_modinfo::clear_instance_cache();
+
+ $events = core_calendar_external::get_calendar_events($paramevents, $options);
+ $events = external_api::clean_returnvalue(core_calendar_external::get_calendar_events_returns(), $events);
+ // Expect one less.
+ $this->assertCount(4, $events['events']);
}
/**