mirror of
https://github.com/moodle/moodle.git
synced 2025-03-13 20:26:32 +01:00
mod-lesson MDL-25632 Fixed bug whereby excess answers were being created when creating a page and then when updating it
This commit is contained in:
parent
1c510e2ee1
commit
981debb706
@ -2135,13 +2135,17 @@ abstract class lesson_page extends lesson_base {
|
||||
$this->answers[$i]->pageid = $this->id;
|
||||
$this->answers[$i]->timecreated = $this->timecreated;
|
||||
}
|
||||
if (!empty($properties->answer_editor[$i])) {
|
||||
|
||||
if (!empty($properties->answer_editor[$i]) && is_array($properties->answer_editor[$i])) {
|
||||
$this->answers[$i]->answer = $properties->answer_editor[$i]['text'];
|
||||
$this->answers[$i]->answerformat = $properties->answer_editor[$i]['format'];
|
||||
if (isset($properties->response_editor[$i])) {
|
||||
$this->answers[$i]->response = $properties->response_editor[$i]['text'];
|
||||
$this->answers[$i]->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
}
|
||||
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||
$this->answers[$i]->response = $properties->response_editor[$i]['text'];
|
||||
$this->answers[$i]->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
|
||||
if (!empty($this->answers[$i]->answer)) {
|
||||
if (isset($properties->jumpto[$i])) {
|
||||
$this->answers[$i]->jumpto = $properties->jumpto[$i];
|
||||
}
|
||||
@ -2154,8 +2158,9 @@ abstract class lesson_page extends lesson_base {
|
||||
$DB->update_record("lesson_answers", $this->answers[$i]->properties());
|
||||
}
|
||||
|
||||
} else {
|
||||
break;
|
||||
} else if (isset($this->answers[$i]->id)) {
|
||||
$DB->delete_records('lesson_answers', array('id'=>$this->answers[$i]->id));
|
||||
unset($this->answers[$i]);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -2223,13 +2228,17 @@ abstract class lesson_page extends lesson_base {
|
||||
|
||||
for ($i = 0; $i < $this->lesson->maxanswers; $i++) {
|
||||
$answer = clone($newanswer);
|
||||
if (!empty($properties->answer_editor[$i])) {
|
||||
|
||||
if (!empty($properties->answer_editor[$i]) && is_array($properties->answer_editor[$i])) {
|
||||
$answer->answer = $properties->answer_editor[$i]['text'];
|
||||
$answer->answerformat = $properties->answer_editor[$i]['format'];
|
||||
if (isset($properties->response_editor[$i])) {
|
||||
$answer->response = $properties->response_editor[$i]['text'];
|
||||
$answer->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
}
|
||||
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||
$answer->response = $properties->response_editor[$i]['text'];
|
||||
$answer->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
|
||||
if (!empty($answer->answer)) {
|
||||
if (isset($properties->jumpto[$i])) {
|
||||
$answer->jumpto = $properties->jumpto[$i];
|
||||
}
|
||||
|
@ -105,13 +105,16 @@ class lesson_page_type_matching extends lesson_page {
|
||||
$this->lesson->maxanswers = $this->lesson->maxanswers + 2;
|
||||
for ($i = 0; $i < $this->lesson->maxanswers; $i++) {
|
||||
$answer = clone($newanswer);
|
||||
if (!empty($properties->answer_editor[$i])) {
|
||||
if (!empty($properties->answer_editor[$i]) && is_array($properties->answer_editor[$i])) {
|
||||
$answer->answer = $properties->answer_editor[$i]['text'];
|
||||
$answer->answerformat = $properties->answer_editor[$i]['format'];
|
||||
if (isset($properties->response_editor[$i])) {
|
||||
$answer->response = $properties->response_editor[$i]['text'];
|
||||
$answer->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
}
|
||||
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||
$answer->response = $properties->response_editor[$i]['text'];
|
||||
$answer->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
|
||||
if (!empty($answer->answer)) {
|
||||
if (isset($properties->jumpto[$i])) {
|
||||
$answer->jumpto = $properties->jumpto[$i];
|
||||
}
|
||||
@ -276,6 +279,14 @@ class lesson_page_type_matching extends lesson_page {
|
||||
}
|
||||
return $table;
|
||||
}
|
||||
/**
|
||||
* Updates the page and its answers
|
||||
*
|
||||
* @global moodle_database $DB
|
||||
* @global moodle_page $PAGE
|
||||
* @param stdClass $properties
|
||||
* @return bool
|
||||
*/
|
||||
public function update($properties) {
|
||||
global $DB, $PAGE;
|
||||
$answers = $this->get_answers();
|
||||
@ -293,13 +304,17 @@ class lesson_page_type_matching extends lesson_page {
|
||||
$this->answers[$i]->pageid = $this->id;
|
||||
$this->answers[$i]->timecreated = $this->timecreated;
|
||||
}
|
||||
if (!empty($properties->answer_editor[$i])) {
|
||||
|
||||
if (!empty($properties->answer_editor[$i]) && is_array($properties->answer_editor[$i])) {
|
||||
$this->answers[$i]->answer = $properties->answer_editor[$i]['text'];
|
||||
$this->answers[$i]->answerformat = $properties->answer_editor[$i]['format'];
|
||||
if (isset($properties->response_editor[$i])) {
|
||||
$this->answers[$i]->response = $properties->response_editor[$i]['text'];
|
||||
$this->answers[$i]->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
}
|
||||
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||
$this->answers[$i]->response = $properties->response_editor[$i]['text'];
|
||||
$this->answers[$i]->responseformat = $properties->response_editor[$i]['format'];
|
||||
}
|
||||
|
||||
if (!empty($this->answers[$i]->answer)) {
|
||||
if (isset($properties->jumpto[$i])) {
|
||||
$this->answers[$i]->jumpto = $properties->jumpto[$i];
|
||||
}
|
||||
@ -319,8 +334,9 @@ class lesson_page_type_matching extends lesson_page {
|
||||
$DB->update_record("lesson_answers", $this->answers[$i]->properties());
|
||||
}
|
||||
|
||||
} else {
|
||||
break;
|
||||
} else if (isset($this->answers[$i]->id)) {
|
||||
$DB->delete_records('lesson_answers', array('id'=>$this->answers[$i]->id));
|
||||
unset($this->answers[$i]);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@ -383,7 +399,11 @@ class lesson_page_type_matching extends lesson_page {
|
||||
$data = "<select disabled=\"disabled\"><option selected=\"selected\">".strip_tags(format_string($answer->answer))."</option></select>";
|
||||
if ($useranswer != NULL) {
|
||||
$userresponse = explode(",", $useranswer->useranswer);
|
||||
$data .= "<select disabled=\"disabled\"><option selected=\"selected\">".strip_tags(format_string($answers[$userresponse[$i]]->response))."</option></select>";
|
||||
$data .= "<select disabled=\"disabled\"><option selected=\"selected\">";
|
||||
if (array_key_exists($i, $userresponse)) {
|
||||
$data .= strip_tags(format_string($answers[$userresponse[$i]]->response));
|
||||
}
|
||||
$data .= "</option></select>";
|
||||
} else {
|
||||
$data .= "<select disabled=\"disabled\"><option selected=\"selected\">".strip_tags(format_string($answer->response))."</option></select>";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user