From 11dc7c1c3ddf7ac65ff3d27703481a13cca1d03d Mon Sep 17 00:00:00 2001 From: Neill Magill Date: Tue, 20 Oct 2015 10:52:07 +0100 Subject: [PATCH 1/2] MDL-51495 calendar: Unit test to get an individual course event If is user requests a single event on a course via the web service they should be able to retrieve it. --- calendar/tests/externallib_test.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/calendar/tests/externallib_test.php b/calendar/tests/externallib_test.php index f1dec3cfebf02..8a5b444b8237e 100644 --- a/calendar/tests/externallib_test.php +++ b/calendar/tests/externallib_test.php @@ -363,6 +363,13 @@ public function test_get_calendar_events() { $events = external_api::clean_returnvalue(core_calendar_external::get_calendar_events_returns(), $events); $this->assertEquals(1, count($events['events'])); // site. $this->assertEquals(0, count($events['warnings'])); + + // Try getting a course event by its id. + $paramevents = array ('eventids' => array($courseevent->id)); + $events = core_calendar_external::get_calendar_events($paramevents, $options); + $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'])); } /** From f11fdf9c98dd565820586dc7a9ef9c46d0576aeb Mon Sep 17 00:00:00 2001 From: Neill Magill Date: Tue, 20 Oct 2015 10:05:08 +0100 Subject: [PATCH 2/2] MDL-51495 calendar: E_WARNING in core_calendar_get_calendar_events If a user does not have the 'moodle/calendar:manageentries' capability then an E_WARNING can be generated by the core_calendar_external::get_calendar_events() method, that an expected array is null This patch creates an array that is missing when a user does not have the capability. --- calendar/externallib.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/calendar/externallib.php b/calendar/externallib.php index 8fdae9b759d7e..c2053fa9d4813 100644 --- a/calendar/externallib.php +++ b/calendar/externallib.php @@ -173,6 +173,8 @@ public static function get_calendar_events($events = array(), $options = array() // Let us findout courses that we can return events from. if (!$hassystemcap) { + $courses = enrol_get_my_courses('id'); + $courses = array_keys($courses); foreach ($params['events']['courseids'] as $id) { try { $context = context_course::instance($id); @@ -185,7 +187,6 @@ public static function get_calendar_events($events = array(), $options = array() 'warningcode' => 'nopermissions', 'message' => 'No access rights in course context '.$e->getMessage().$e->getTraceAsString() ); - continue; } } } else {