}
list($answerpages, $userstats) = lesson_get_user_detailed_report_data($lesson, $userid, $params['lessonattempt']);
+ // Convert page object to page record.
+ foreach ($answerpages as $answerp) {
+ $answerp->page = self::get_page_fields($answerp->page);
+ }
$result = array(
'answerpages' => $answerpages,
'answerpages' => new external_multiple_structure(
new external_single_structure(
array(
+ 'page' => self::get_page_structure(VALUE_OPTIONAL),
'title' => new external_value(PARAM_RAW, 'Page title.'),
'contents' => new external_value(PARAM_RAW, 'Page contents.'),
'qtype' => new external_value(PARAM_TEXT, 'Identifies the page type of this page.'),
while ($pageid != 0) { // EOL
$page = $lessonpages[$pageid];
$answerpage = new stdClass;
+ // Keep the original page object.
+ $answerpage->page = $page;
$data ='';
$answerdata = new stdClass;
$this->assertEquals(1, $result['userstats']['gradeinfo']['total']); // Total correct answers.
$this->assertEquals(100, $result['userstats']['gradeinfo']['grade']); // Correct answer.
+ // Check page object contains the lesson pages answered.
+ $pagesanswered = array();
+ foreach ($result['answerpages'] as $answerp) {
+ $pagesanswered[] = $answerp['page']['id'];
+ }
+ sort($pagesanswered);
+ $this->assertEquals(array($this->page1->id, $this->page2->id), $pagesanswered);
+
// Test second attempt unfinished.
$result = mod_lesson_external::get_user_attempt($this->lesson->id, $this->student->id, 1);
$result = external_api::clean_returnvalue(mod_lesson_external::get_user_attempt_returns(), $result);
This files describes API changes in the lesson code.
+=== 3.4 ===
+
+* External function mod_lesson_external::get_user_attempt() now returns the full page object inside each answerpages.
+
=== 3.3 ===
* lesson::callback_on_view() has an additional optional parameter $redirect default to true.