From d271925d56f75421aa5df091d9b428cd4850b79f Mon Sep 17 00:00:00 2001 From: Juan Leyva Date: Thu, 29 Feb 2024 15:36:39 +0100 Subject: [PATCH] MDL-81089 calendar: Return if module is branded --- .../classes/external/event_exporter_base.php | 7 ++++ calendar/tests/externallib_test.php | 35 +++++++++++++++++++ calendar/upgrade.txt | 11 ++++++ 3 files changed, 53 insertions(+) diff --git a/calendar/classes/external/event_exporter_base.php b/calendar/classes/external/event_exporter_base.php index dc638cd5b74..1aff3b5e5f5 100644 --- a/calendar/classes/external/event_exporter_base.php +++ b/calendar/classes/external/event_exporter_base.php @@ -293,6 +293,10 @@ class event_exporter_base extends exporter { 'purpose' => [ 'type' => PARAM_TEXT ], + 'branded' => [ + 'type' => PARAM_BOOL, + 'optional' => true, + ], ]; } @@ -335,10 +339,13 @@ class event_exporter_base extends exporter { $values['normalisedeventtypetext'] = $stringexists ? get_string($identifier, 'calendar') : ''; $purpose = 'none'; + $isbranded = false; if ($moduleproxy) { $purpose = plugin_supports('mod', $moduleproxy->get('modname'), FEATURE_MOD_PURPOSE, 'none'); + $isbranded = component_callback('mod_' . $moduleproxy->get('modname'), 'is_branded') !== null ? : false; } $values['purpose'] = $purpose; + $values['branded'] = $isbranded; $values['icon'] = $iconexporter->export($output); diff --git a/calendar/tests/externallib_test.php b/calendar/tests/externallib_test.php index e0921c05db8..054b1329587 100644 --- a/calendar/tests/externallib_test.php +++ b/calendar/tests/externallib_test.php @@ -3257,4 +3257,39 @@ class externallib_test extends externallib_advanced_testcase { $this->assertEquals($expectedtimestamps[$data['key']], $data['timestamp']); } } + + /** + * Test for checking if we receive the correct icon branding. + * + * @covers \core_calendar_external::get_calendar_action_events_by_timesort + */ + public function test_get_calendar_event_branded(): void { + + $this->resetAfterTest(true); + + $user = $this->getDataGenerator()->create_user(); + $course = $this->getDataGenerator()->create_course(); + $this->getDataGenerator()->enrol_user($user->id, $course->id); + + $this->setUser($user); + $generator = $this->getDataGenerator()->get_plugin_generator('mod_assign'); + $assign = $generator->create_instance(['course' => $course->id]); + + $params = [ + 'type' => CALENDAR_EVENT_TYPE_ACTION, + 'instance' => $assign->id, + 'courseid' => $course->id, + 'modulename' => 'assign', + 'timesort' => 1, + ]; + $event1 = $this->create_calendar_event('Event 1', $user->id, 'user', 0, 1, $params); + $result = core_calendar_external::get_calendar_action_events_by_timesort(0); + $result = external_api::clean_returnvalue( + core_calendar_external::get_calendar_action_events_by_timesort_returns(), + $result + ); + + $this->assertCount(1, $result['events']); + $this->assertFalse($result['events'][0]['branded']); + } } diff --git a/calendar/upgrade.txt b/calendar/upgrade.txt index 3076c3fba4e..89855aa4093 100644 --- a/calendar/upgrade.txt +++ b/calendar/upgrade.txt @@ -5,6 +5,17 @@ information provided here is intended especially for developers. * The following previously deprecated methods have been removed and can no longer be used: - `calendar_process_subscription_row` - `calendar_import_icalendar_events` +* The event_exporter_base class now returns a field called "branded" indicating whether the module is branded or not. + All the external functions using the exporter will now return the new field: + - core_calendar_get_action_events_by_course + - core_calendar_get_action_events_by_courses + - core_calendar_get_action_events_by_timesort + - core_calendar_get_calendar_day_view + - core_calendar_get_calendar_event_by_id + - core_calendar_get_calendar_monthly_view + - core_calendar_get_calendar_upcoming_view + - core_calendar_submit_create_update_form + - core_calendar_update_event_start_day === 4.3 === * The `navigation` property has been removed from `\core_calendar\external\day_exporter` as it is not being used by any of the