$field = NULL; foreach ($datarecord as $name => $value) { if (!in_array($name, $ignorenames)) { $namearr = explode('_', $name); // Second one is the field id if (empty($field->field) || $namearr[1] != $field->field->id) { // Try to reuse classes $field = data_get_field_from_id($namearr[1], $data); } if ($field) { $field->update_content($rid, $value, $name); } } } // Trigger an event for updating this record. $event = \mod_data\event\record_updated::create(array('objectid' => $rid, 'context' => $context, 'courseid' => $course->id, 'other' => array('dataid' => $data->id))); $event->add_record_snapshot('data', $data); $event->trigger(); redirect($CFG->wwwroot . '/mod/data/view.php?d=' . $data->id . '&rid=' . $rid); } else { /// Add some new records ///Empty form checking - you can't submit an empty form! $emptyform = true; // assume the worst foreach ($datarecord as $name => $value) { if (!in_array($name, $ignorenames)) { $namearr = explode('_', $name); // Second one is the field id if (empty($field->field) || $namearr[1] != $field->field->id) { // Try to reuse classes $field = data_get_field_from_id($namearr[1], $data);
/** * Test the record updated event. * * There is no external API for updating a record, so the unit test will simply create * and trigger the event and ensure the legacy log data is returned as expected. */ public function test_record_updated() { // Create a course we are going to add a data module to. $course = $this->getDataGenerator()->create_course(); // The generator used to create a data module. $generator = $this->getDataGenerator()->get_plugin_generator('mod_data'); // Create a data module. $data = $generator->create_instance(array('course' => $course->id)); // Trigger an event for updating this record. $event = \mod_data\event\record_updated::create(array('objectid' => 1, 'context' => context_module::instance($data->cmid), 'courseid' => $course->id, 'other' => array('dataid' => $data->id))); // Trigger and capture the event for updating the data record. $sink = $this->redirectEvents(); $event->trigger(); $events = $sink->get_events(); $event = reset($events); // Check that the event data is valid. $this->assertInstanceOf('\\mod_data\\event\\record_updated', $event); $this->assertEquals(context_module::instance($data->cmid), $event->get_context()); $expected = array($course->id, 'data', 'update', 'view.php?d=' . $data->id . '&rid=1', $data->id, $data->cmid); $this->assertEventLegacyLogData($expected, $event); $this->assertEventContextNotUsed($event); $url = new moodle_url('/mod/data/view.php', array('d' => $data->id, 'rid' => $event->objectid)); $this->assertEquals($url, $event->get_url()); }