diff --git a/calendar/export_execute.php b/calendar/export_execute.php index 7767847aa0b..da5f078e202 100644 --- a/calendar/export_execute.php +++ b/calendar/export_execute.php @@ -60,7 +60,8 @@ if (!empty($generateurl)) { if(!empty($what) && !empty($time)) { if(in_array($what, $allowed_what) && in_array($time, $allowed_time)) { $courses = enrol_get_users_courses($user->id, true, 'id, visible, shortname'); - + // Array of courses that we will pass to calendar_get_events() which is initially set to the list of the user's courses. + $paramcourses = $courses; if ($what == 'all' || $what == 'groups') { $groups = array(); foreach ($courses as $course) { @@ -75,13 +76,14 @@ if(!empty($what) && !empty($time)) { $users = $user->id; $courses[SITEID] = new stdClass; $courses[SITEID]->shortname = get_string('globalevents', 'calendar'); + $paramcourses[SITEID] = $courses[SITEID]; } else if ($what == 'groups') { $users = false; - $courses = array(); + $paramcourses = array(); } else if ($what == 'user') { $users = $user->id; $groups = false; - $courses = array(); + $paramcourses = array(); } else { $users = false; $groups = false; @@ -177,7 +179,7 @@ if(!empty($what) && !empty($time)) { die(); } } -$events = calendar_get_events($timestart, $timeend, $users, $groups, array_keys($courses), false); +$events = calendar_get_events($timestart, $timeend, $users, $groups, array_keys($paramcourses), false); $ical = new iCalendar; $ical->add_property('method', 'PUBLISH'); diff --git a/calendar/tests/behat/export.feature b/calendar/tests/behat/export.feature new file mode 100644 index 00000000000..97d9d73a82c --- /dev/null +++ b/calendar/tests/behat/export.feature @@ -0,0 +1,57 @@ +@core @core_calendar @core_calendar_export +Feature: Export calendar events + In order to be able to use my calendar events outside of Moodle + As a user + I need to export calendar events in iCalendar format + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | student1 | Student | 1 | student1@example.com | + And the following "courses" exist: + | fullname | shortname | format | + | Course 1 | C1 | topics | + And the following "course enrolments" exist: + | user | course | role | + | student1 | C1 | student | + And I log in as "student1" + + Scenario: Viewing calendar export options + Given I follow "This month" + When I click on "Export calendar" "button" + Then I should see "All events" + And I should see "Events related to courses" + And I should see "Events related to groups" + And I should see "My personal events" + + Scenario: Generating calendar URL for all events + Given I follow "This month" + And I click on "Export calendar" "button" + And I set the field "All events" to "1" + And I set the field "This week" to "1" + When I click on "Get calendar URL" "button" + Then I should see "&preset_what=all&" + + Scenario: Generating calendar URL for course events + Given I follow "This month" + And I click on "Export calendar" "button" + And I set the field "Events related to courses" to "1" + And I set the field "This week" to "1" + When I click on "Get calendar URL" "button" + Then I should see "&preset_what=courses&" + + Scenario: Generating calendar URL for group events + Given I follow "This month" + And I click on "Export calendar" "button" + And I set the field "Events related to groups" to "1" + And I set the field "This week" to "1" + When I click on "Get calendar URL" "button" + Then I should see "&preset_what=groups&" + + Scenario: Generating calendar URL for user events + Given I follow "This month" + And I click on "Export calendar" "button" + And I set the field "My personal events" to "1" + And I set the field "This week" to "1" + When I click on "Get calendar URL" "button" + Then I should see "&preset_what=user&"