From 1652934f09135128fcff37d19702950ba2e6b12d Mon Sep 17 00:00:00 2001 From: Ryan Wyllie Date: Thu, 17 Aug 2017 06:22:22 +0000 Subject: [PATCH] MDL-59393 calendar: move candelete and canedit into event_exporter_base --- .../external/calendar_event_exporter.php | 15 +++---- calendar/classes/external/event_exporter.php | 11 +---- .../classes/external/event_exporter_base.php | 40 +++++++------------ 3 files changed, 21 insertions(+), 45 deletions(-) diff --git a/calendar/classes/external/calendar_event_exporter.php b/calendar/classes/external/calendar_event_exporter.php index 31863901b8a..7ba5805ddf5 100644 --- a/calendar/classes/external/calendar_event_exporter.php +++ b/calendar/classes/external/calendar_event_exporter.php @@ -44,16 +44,11 @@ class calendar_event_exporter extends event_exporter_base { * @return array */ protected static function define_other_properties() { - return [ - 'url' => ['type' => PARAM_URL], - 'icon' => [ - 'type' => event_icon_exporter::read_properties_definition(), - ], - 'course' => [ - 'type' => course_summary_exporter::read_properties_definition(), - 'optional' => true, - ] - ]; + + $values = parent::define_other_properties(); + $values['url'] = ['type' => PARAM_URL]; + + return $values; } /** diff --git a/calendar/classes/external/event_exporter.php b/calendar/classes/external/event_exporter.php index 6b34cda8d68..54c63681145 100644 --- a/calendar/classes/external/event_exporter.php +++ b/calendar/classes/external/event_exporter.php @@ -51,7 +51,6 @@ class event_exporter extends event_exporter_base { $values = parent::define_other_properties(); - $values['canedit'] = ['type' => PARAM_BOOL]; $values['displayeventsource'] = ['type' => PARAM_BOOL]; $values['subscription'] = [ 'type' => PARAM_RAW, @@ -60,7 +59,6 @@ class event_exporter extends event_exporter_base { 'null' => NULL_ALLOWED ]; $values['isactionevent'] = ['type' => PARAM_BOOL]; - $values['candelete'] = ['type' => PARAM_BOOL]; $values['url'] = ['type' => PARAM_URL]; $values['action'] = [ 'type' => event_action_exporter::read_properties_definition(), @@ -86,8 +84,6 @@ class event_exporter extends event_exporter_base { $values = parent::get_other_values($output); $event = $this->event; - $legacyevent = container::get_event_mapper()->from_event_to_legacy_event($event); - $context = $this->related['context']; $values['isactionevent'] = false; @@ -125,14 +121,11 @@ class event_exporter extends event_exporter_base { $values['course'] = $coursesummaryexporter->export($output); } - $values['canedit'] = calendar_edit_event_allowed($legacyevent); - $values['candelete'] = calendar_delete_event_allowed($legacyevent); - // Handle event subscription. $values['subscription'] = null; $values['displayeventsource'] = false; - if (!empty($legacyevent->subscriptionid)) { - $subscription = calendar_get_subscription($legacyevent->subscriptionid); + if ($event->get_subscription()) { + $subscription = calendar_get_subscription($event->get_subscription()->get('id')); if (!empty($subscription) && $CFG->calendar_showicalsource) { $values['displayeventsource'] = true; $subscriptiondata = new \stdClass(); diff --git a/calendar/classes/external/event_exporter_base.php b/calendar/classes/external/event_exporter_base.php index bc176d3c1eb..e975c9953d8 100644 --- a/calendar/classes/external/event_exporter_base.php +++ b/calendar/classes/external/event_exporter_base.php @@ -26,7 +26,10 @@ namespace core_calendar\external; defined('MOODLE_INTERNAL') || die(); +require_once($CFG->dirroot . "/calendar/lib.php"); + use \core\external\exporter; +use \core_calendar\local\event\container; use \core_calendar\local\event\entities\event_interface; use \core_calendar\local\event\entities\action_event_interface; use \core_course\external\course_summary_exporter; @@ -153,18 +156,19 @@ class event_exporter_base extends exporter { */ protected static function define_other_properties() { return [ - 'url' => ['type' => PARAM_URL], 'icon' => [ 'type' => event_icon_exporter::read_properties_definition(), ], - 'action' => [ - 'type' => event_action_exporter::read_properties_definition(), - 'optional' => true, - ], 'course' => [ 'type' => course_summary_exporter::read_properties_definition(), 'optional' => true, - ] + ], + 'canedit' => [ + 'type' => PARAM_BOOL + ], + 'candelete' => [ + 'type' => PARAM_BOOL + ], ]; } @@ -177,37 +181,21 @@ class event_exporter_base extends exporter { protected function get_other_values(renderer_base $output) { $values = []; $event = $this->event; + $legacyevent = container::get_event_mapper()->from_event_to_legacy_event($event); $context = $this->related['context']; - if ($moduleproxy = $event->get_course_module()) { - $modulename = $moduleproxy->get('modname'); - $moduleid = $moduleproxy->get('id'); - $url = new \moodle_url(sprintf('/mod/%s/view.php', $modulename), ['id' => $moduleid]); - } else { - // TODO MDL-58866 We do not have any way to find urls for events outside of course modules. - global $CFG; - require_once($CFG->dirroot.'/course/lib.php'); - $url = \course_get_url($this->related['course'] ?: SITEID); - } $timesort = $event->get_times()->get_sort_time()->getTimestamp(); $iconexporter = new event_icon_exporter($event, ['context' => $context]); - $values['url'] = $url->out(false); $values['icon'] = $iconexporter->export($output); - if ($event instanceof action_event_interface) { - $actionrelated = [ - 'context' => $context, - 'event' => $event - ]; - $actionexporter = new event_action_exporter($event->get_action(), $actionrelated); - $values['action'] = $actionexporter->export($output); - } - if ($course = $this->related['course']) { $coursesummaryexporter = new course_summary_exporter($course, ['context' => $context]); $values['course'] = $coursesummaryexporter->export($output); } + $values['canedit'] = calendar_edit_event_allowed($legacyevent); + $values['candelete'] = calendar_delete_event_allowed($legacyevent); + return $values; }