return $legacyeventdata;
}
+ /**
+ * Return the legacy event log data.
+ *
+ * @return array
+ */
+ protected function get_legacy_logdata() {
+ $attempt = $this->get_record_snapshot('quiz_attempts', $this->objectid);
+
+ return array($this->courseid, 'quiz', 'attempt', 'review.php?attempt=' . $this->objectid,
+ $attempt->quiz, $this->contextinstanceid);
+ }
+
/**
* Custom validation.
*
question_engine::save_questions_usage_by_activity($quba);
$attempt->uniqueid = $quba->get_id();
$attempt->id = $DB->insert_record('quiz_attempts', $attempt);
- // Log the new attempt.
+
+ // Params used by the events below.
+ $params = array(
+ 'objectid' => $attempt->id,
+ 'relateduserid' => $attempt->userid,
+ 'courseid' => $quizobj->get_courseid(),
+ 'context' => $quizobj->get_context()
+ );
+ // Decide which event we are using.
if ($attempt->preview) {
- $params = array(
- 'objectid' => $attempt->id,
- 'relateduserid' => $attempt->userid,
- 'courseid' => $quizobj->get_courseid(),
- 'context' => $quizobj->get_context(),
- 'other' => array(
- 'quizid' => $quizobj->get_quizid()
- )
+ $params['other'] = array(
+ 'quizid' => $quizobj->get_quizid()
);
$event = \mod_quiz\event\attempt_preview_started::create($params);
- $event->add_record_snapshot('quiz', $quizobj->get_quiz());
- $event->trigger();
} else {
- add_to_log($quizobj->get_courseid(), 'quiz', 'attempt', 'review.php?attempt='.$attempt->id,
- $quizobj->get_quizid(), $quizobj->get_cmid());
+ $event = \mod_quiz\event\attempt_started::create($params);
+
}
+
+ // Trigger the event.
+ $event->add_record_snapshot('quiz', $quizobj->get_quiz());
+ $event->trigger();
+
return $attempt;
}
$this->assertEquals('quiz_attempt_started', $event->get_legacy_eventname());
$this->assertEventLegacyData($legacydata, $event);
$this->assertEventContextNotUsed($event);
+
+ // Create another attempt.
+ $attempt = quiz_create_attempt($quizobj, 1, false, time(), false, 2);
+
+ // Trigger and capture the event.
+ $sink = $this->redirectEvents();
+ quiz_attempt_save_started($quizobj, $quba, $attempt);
+ $events = $sink->get_events();
+ $event = reset($events);
+
+ // Check that the event data is valid.
+ $this->assertInstanceOf('\mod_quiz\event\attempt_started', $event);
+ $this->assertEquals(context_module::instance($quizobj->get_cmid()), $event->get_context());
+ $expected = array($quizobj->get_courseid(), 'quiz', 'attempt', 'review.php?attempt=' . $attempt->id,
+ $quizobj->get_quizid(), $quizobj->get_cmid());
+ $this->assertEventLegacyLogData($expected, $event);
}
/**