MDL-58087 core_calendar: Event mapper learned to map to stdClass and array
Part of MDL-55611 epic.
This commit is contained in:
committed by
Damyon Wiese
parent
4477520e5a
commit
6d82ef49ea
@@ -85,7 +85,21 @@ class event_mapper implements event_mapper_interface {
|
||||
$action = ($event instanceof action_event_interface) ? $event->get_action() : null;
|
||||
$timeduration = $event->get_times()->get_end_time()->getTimestamp() - $event->get_times()->get_start_time()->getTimestamp();
|
||||
|
||||
return new event((object) [
|
||||
return new event($this->from_event_to_stdclass($event));
|
||||
}
|
||||
|
||||
public function from_event_to_stdclass(event_interface $event) {
|
||||
$action = ($event instanceof action_event_interface) ? $event->get_action() : null;
|
||||
$timeduration = $event->get_times()->get_end_time()->getTimestamp() - $event->get_times()->get_start_time()->getTimestamp();
|
||||
|
||||
return (object)$this->from_event_to_assoc_array($event);
|
||||
}
|
||||
|
||||
public function from_event_to_assoc_array(event_interface $event) {
|
||||
$action = ($event instanceof action_event_interface) ? $event->get_action() : null;
|
||||
$timeduration = $event->get_times()->get_end_time()->getTimestamp() - $event->get_times()->get_start_time()->getTimestamp();
|
||||
|
||||
return [
|
||||
'id' => $event->get_id(),
|
||||
'name' => $event->get_name(),
|
||||
'description' => $event->get_description()->get_value(),
|
||||
@@ -94,8 +108,8 @@ class event_mapper implements event_mapper_interface {
|
||||
'groupid' => $event->get_group() ? $event->get_group()->get_id() : null,
|
||||
'userid' => $event->get_user() ? $event->get_user()->get_id() : null,
|
||||
'repeatid' => $event->get_repeats()->get_id(),
|
||||
'modulename' => $event->get_course_module()->get('modname'),
|
||||
'instance' => $event->get_course_module()->get('instance'),
|
||||
'modulename' => $event->get_course_module() ? $event->get_course_module()->get('modname') : null,
|
||||
'instance' => $event->get_course_module() ? $event->get_course_module()->get('instance') : null,
|
||||
'eventtype' => $event->get_type(),
|
||||
'timestart' => $event->get_times()->get_start_time()->getTimestamp(),
|
||||
'timeduration' => $timeduration,
|
||||
@@ -106,7 +120,8 @@ class event_mapper implements event_mapper_interface {
|
||||
'actionname' => $action ? $action->get_name() : null,
|
||||
'actionurl' => $action ? $action->get_url() : null,
|
||||
'actionnum' => $action ? $action->get_item_count() : null,
|
||||
'actionactionable' => $action ? $action->is_actionable() : null
|
||||
]);
|
||||
'actionactionable' => $action ? $action->is_actionable() : null,
|
||||
'sequence' => 1
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,4 +51,20 @@ interface event_mapper_interface {
|
||||
* @return event The mapped legacy event.
|
||||
*/
|
||||
public function from_event_to_legacy_event(event_interface $event);
|
||||
|
||||
/**
|
||||
* Map an event to a stdClass
|
||||
*
|
||||
* @param event_interface $event The legacy event.
|
||||
* @return \stdClass The mapped stdClass.
|
||||
*/
|
||||
public function from_event_to_stdclass(event_interface $event);
|
||||
|
||||
/**
|
||||
* Map an event to an associative array.
|
||||
*
|
||||
* @param event_interface $event The legacy event.
|
||||
* @return array The mapped legacy event array.
|
||||
*/
|
||||
public function from_event_to_assoc_array(event_interface $event);
|
||||
}
|
||||
|
||||
@@ -71,6 +71,42 @@ class core_calendar_event_mapper_testcase extends advanced_testcase {
|
||||
$this->assertInstanceOf(event::class, $legacyevent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test event -> stdClass
|
||||
*/
|
||||
public function test_from_event_to_stdclass() {
|
||||
$this->resetAfterTest(true);
|
||||
$this->setAdminUser();
|
||||
$legacyevent = $this->create_event(['modname' => 'assign', 'instance' => 1]);
|
||||
$event = new event_mapper_test_event($legacyevent);
|
||||
$mapper = new event_mapper(
|
||||
new event_mapper_test_event_factory()
|
||||
);
|
||||
$obj = $mapper->from_event_to_stdclass($event);
|
||||
$this->assertInstanceOf(\stdClass::class, $obj);
|
||||
$this->assertEquals($obj->name, $event->get_name());
|
||||
$this->assertEquals($obj->eventtype, $event->get_type());
|
||||
$this->assertEquals($obj->timestart, $event->get_times()->get_start_time()->getTimestamp());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test event -> array
|
||||
*/
|
||||
public function test_from_event_to_assoc_array() {
|
||||
$this->resetAfterTest(true);
|
||||
$this->setAdminUser();
|
||||
$legacyevent = $this->create_event(['modname' => 'assign', 'instance' => 1]);
|
||||
$event = new event_mapper_test_event($legacyevent);
|
||||
$mapper = new event_mapper(
|
||||
new event_mapper_test_event_factory()
|
||||
);
|
||||
$arr = $mapper->from_event_to_assoc_array($event);
|
||||
$this->assertTrue(is_array($arr));
|
||||
$this->assertEquals($arr['name'], $event->get_name());
|
||||
$this->assertEquals($arr['eventtype'], $event->get_type());
|
||||
$this->assertEquals($arr['timestart'], $event->get_times()->get_start_time()->getTimestamp());
|
||||
}
|
||||
|
||||
public function test_from_action_event_to_legacy_event() {
|
||||
$this->resetAfterTest(true);
|
||||
$this->setAdminUser();
|
||||
|
||||
Reference in New Issue
Block a user