mirror of
https://github.com/moodle/moodle.git
synced 2025-04-22 00:42:54 +02:00
MDL-59671 core_calendar: move logic to calendar event exporter
This commit is contained in:
parent
8146b1f06d
commit
6fb751562a
29
calendar/classes/external/event_exporter.php
vendored
29
calendar/classes/external/event_exporter.php
vendored
@ -26,9 +26,12 @@ namespace core_calendar\external;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
require_once($CFG->dirroot . "/calendar/lib.php");
|
||||
|
||||
use \core\external\exporter;
|
||||
use \core_calendar\local\event\entities\event_interface;
|
||||
use \core_calendar\local\event\entities\action_event_interface;
|
||||
use \core_calendar\local\event\container;
|
||||
use \core_course\external\course_summary_exporter;
|
||||
use \renderer_base;
|
||||
|
||||
@ -164,6 +167,14 @@ class event_exporter extends exporter {
|
||||
'course' => [
|
||||
'type' => course_summary_exporter::read_properties_definition(),
|
||||
'optional' => true,
|
||||
],
|
||||
'canedit' => ['type' => PARAM_BOOL],
|
||||
'displayeventsource' => ['type' => PARAM_BOOL],
|
||||
'subscription' => [
|
||||
'type' => PARAM_RAW,
|
||||
'optional' => true,
|
||||
'default' => null,
|
||||
'null' => NULL_ALLOWED
|
||||
]
|
||||
];
|
||||
}
|
||||
@ -177,6 +188,8 @@ class event_exporter 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');
|
||||
@ -207,7 +220,23 @@ class event_exporter extends exporter {
|
||||
$coursesummaryexporter = new course_summary_exporter($course, ['context' => $context]);
|
||||
$values['course'] = $coursesummaryexporter->export($output);
|
||||
}
|
||||
$values['canedit'] = calendar_edit_event_allowed($legacyevent);
|
||||
|
||||
// Handle event subscription.
|
||||
$values['subscription'] = null;
|
||||
$values['displayeventsource'] = false;
|
||||
if (!empty($legacyevent->subscriptionid)) {
|
||||
$subscription = calendar_get_subscription($legacyevent->subscriptionid);
|
||||
if (!empty($subscription) && $CFG->calendar_showicalsource) {
|
||||
$values['displayeventsource'] = true;
|
||||
$subscriptiondata = new \stdClass();
|
||||
if (!empty($subscription->url)) {
|
||||
$subscriptiondata->url = $subscription->url;
|
||||
}
|
||||
$subscriptiondata->name = $subscription->name;
|
||||
$values['subscription'] = json_encode($subscriptiondata);
|
||||
}
|
||||
}
|
||||
return $values;
|
||||
}
|
||||
|
||||
|
@ -712,37 +712,32 @@ class core_calendar_external extends external_api {
|
||||
* @return array Array of event details
|
||||
*/
|
||||
public static function get_calendar_event_by_id($eventid) {
|
||||
global $CFG;
|
||||
global $CFG, $PAGE, $USER;
|
||||
require_once($CFG->dirroot."/calendar/lib.php");
|
||||
|
||||
// Parameter validation.
|
||||
$params = ['eventid' => $eventid];
|
||||
$params = self::validate_parameters(self::get_calendar_event_by_id_parameters(), $params);
|
||||
self::validate_parameters(self::get_calendar_event_by_id_parameters(), $params);
|
||||
$context = \context_user::instance($USER->id);
|
||||
|
||||
self::validate_context($context);
|
||||
$warnings = array();
|
||||
|
||||
// We need to get events asked for eventids.
|
||||
$event = calendar_get_events_by_id([$eventid]);
|
||||
$eventobj = calendar_event::load($eventid);
|
||||
list($event[$eventid]->description, $event[$eventid]->format) = $eventobj->format_external_text();
|
||||
$event[$eventid]->caneditevent = calendar_edit_event_allowed($eventobj);
|
||||
$legacyevent = calendar_event::load($eventid);
|
||||
$legacyevent->count_repeats();
|
||||
|
||||
$event[$eventid]->subscription = null;
|
||||
$event[$eventid]->displayeventsource = false;
|
||||
if (!empty($event[$eventid]->subscriptionid)) {
|
||||
$subscription = calendar_get_subscription($event[$eventid]->subscriptionid);
|
||||
if (!empty($subscription) && $CFG->calendar_showicalsource) {
|
||||
$event[$eventid]->displayeventsource = true;
|
||||
$subscriptiondata = new stdClass();
|
||||
if (!empty($subscription->url)) {
|
||||
$subscriptiondata->url = $subscription->url;
|
||||
}
|
||||
$subscriptiondata->name = $subscription->name;
|
||||
$event[$eventid]->subscription = json_encode($subscriptiondata);
|
||||
}
|
||||
}
|
||||
$eventmapper = event_container::get_event_mapper();
|
||||
$event = $eventmapper->from_legacy_event_to_event($legacyevent);
|
||||
|
||||
return array('event' => $event[$eventid], 'warnings' => $warnings);
|
||||
$cache = new events_related_objects_cache([$event]);
|
||||
$relatedobjects = [
|
||||
'context' => $cache->get_context($event),
|
||||
'course' => $cache->get_course($event),
|
||||
];
|
||||
|
||||
$exporter = new event_exporter($event, $relatedobjects);
|
||||
$renderer = $PAGE->get_renderer('core_calendar');
|
||||
|
||||
return array('event' => $exporter->export($renderer), 'warnings' => $warnings);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -751,35 +746,10 @@ class core_calendar_external extends external_api {
|
||||
* @return external_description
|
||||
*/
|
||||
public static function get_calendar_event_by_id_returns() {
|
||||
$eventstructure = event_exporter::get_read_structure();
|
||||
|
||||
return new external_single_structure(array(
|
||||
'event' => new external_single_structure(
|
||||
array(
|
||||
'id' => new external_value(PARAM_INT, 'event id'),
|
||||
'name' => new external_value(PARAM_TEXT, 'event name'),
|
||||
'description' => new external_value(PARAM_RAW, 'Description', VALUE_OPTIONAL, null, NULL_ALLOWED),
|
||||
'format' => new external_format_value('description'),
|
||||
'courseid' => new external_value(PARAM_INT, 'course id'),
|
||||
'groupid' => new external_value(PARAM_INT, 'group id'),
|
||||
'userid' => new external_value(PARAM_INT, 'user id'),
|
||||
'repeatid' => new external_value(PARAM_INT, 'repeat id'),
|
||||
'modulename' => new external_value(PARAM_TEXT, 'module name', VALUE_OPTIONAL, null, NULL_ALLOWED),
|
||||
'instance' => new external_value(PARAM_INT, 'instance id'),
|
||||
'eventtype' => new external_value(PARAM_TEXT, 'Event type'),
|
||||
'timestart' => new external_value(PARAM_INT, 'timestart'),
|
||||
'timeduration' => new external_value(PARAM_INT, 'time duration'),
|
||||
'visible' => new external_value(PARAM_INT, 'visible'),
|
||||
'uuid' => new external_value(PARAM_TEXT, 'unique id of ical events', VALUE_OPTIONAL, null, NULL_NOT_ALLOWED),
|
||||
'sequence' => new external_value(PARAM_INT, 'sequence'),
|
||||
'timemodified' => new external_value(PARAM_INT, 'time modified'),
|
||||
'subscriptionid' => new external_value(PARAM_INT, 'Subscription id', VALUE_OPTIONAL, null, NULL_ALLOWED),
|
||||
'subscription' => new external_value(PARAM_RAW, 'Subscription object serialized', VALUE_OPTIONAL,
|
||||
null, NULL_ALLOWED),
|
||||
'caneditevent' => new external_value(PARAM_BOOL, 'Whether the user can edit the event'),
|
||||
'displayeventsource' => new external_value(PARAM_BOOL, 'Whether the source should be displayed'),
|
||||
),
|
||||
'event'
|
||||
),
|
||||
'event' => $eventstructure,
|
||||
'warnings' => new external_warnings()
|
||||
)
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user