mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02: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
2 changed files with 54 additions and 25 deletions
|
@ -2135,13 +2135,17 @@ abstract class lesson_page extends lesson_base {
|
||||||
$this->answers[$i]->pageid = $this->id;
|
$this->answers[$i]->pageid = $this->id;
|
||||||
$this->answers[$i]->timecreated = $this->timecreated;
|
$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]->answer = $properties->answer_editor[$i]['text'];
|
||||||
$this->answers[$i]->answerformat = $properties->answer_editor[$i]['format'];
|
$this->answers[$i]->answerformat = $properties->answer_editor[$i]['format'];
|
||||||
if (isset($properties->response_editor[$i])) {
|
}
|
||||||
$this->answers[$i]->response = $properties->response_editor[$i]['text'];
|
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||||
$this->answers[$i]->responseformat = $properties->response_editor[$i]['format'];
|
$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])) {
|
if (isset($properties->jumpto[$i])) {
|
||||||
$this->answers[$i]->jumpto = $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());
|
$DB->update_record("lesson_answers", $this->answers[$i]->properties());
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else if (isset($this->answers[$i]->id)) {
|
||||||
break;
|
$DB->delete_records('lesson_answers', array('id'=>$this->answers[$i]->id));
|
||||||
|
unset($this->answers[$i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -2223,13 +2228,17 @@ abstract class lesson_page extends lesson_base {
|
||||||
|
|
||||||
for ($i = 0; $i < $this->lesson->maxanswers; $i++) {
|
for ($i = 0; $i < $this->lesson->maxanswers; $i++) {
|
||||||
$answer = clone($newanswer);
|
$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->answer = $properties->answer_editor[$i]['text'];
|
||||||
$answer->answerformat = $properties->answer_editor[$i]['format'];
|
$answer->answerformat = $properties->answer_editor[$i]['format'];
|
||||||
if (isset($properties->response_editor[$i])) {
|
}
|
||||||
$answer->response = $properties->response_editor[$i]['text'];
|
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||||
$answer->responseformat = $properties->response_editor[$i]['format'];
|
$answer->response = $properties->response_editor[$i]['text'];
|
||||||
}
|
$answer->responseformat = $properties->response_editor[$i]['format'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($answer->answer)) {
|
||||||
if (isset($properties->jumpto[$i])) {
|
if (isset($properties->jumpto[$i])) {
|
||||||
$answer->jumpto = $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;
|
$this->lesson->maxanswers = $this->lesson->maxanswers + 2;
|
||||||
for ($i = 0; $i < $this->lesson->maxanswers; $i++) {
|
for ($i = 0; $i < $this->lesson->maxanswers; $i++) {
|
||||||
$answer = clone($newanswer);
|
$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->answer = $properties->answer_editor[$i]['text'];
|
||||||
$answer->answerformat = $properties->answer_editor[$i]['format'];
|
$answer->answerformat = $properties->answer_editor[$i]['format'];
|
||||||
if (isset($properties->response_editor[$i])) {
|
}
|
||||||
$answer->response = $properties->response_editor[$i]['text'];
|
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||||
$answer->responseformat = $properties->response_editor[$i]['format'];
|
$answer->response = $properties->response_editor[$i]['text'];
|
||||||
}
|
$answer->responseformat = $properties->response_editor[$i]['format'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($answer->answer)) {
|
||||||
if (isset($properties->jumpto[$i])) {
|
if (isset($properties->jumpto[$i])) {
|
||||||
$answer->jumpto = $properties->jumpto[$i];
|
$answer->jumpto = $properties->jumpto[$i];
|
||||||
}
|
}
|
||||||
|
@ -276,6 +279,14 @@ class lesson_page_type_matching extends lesson_page {
|
||||||
}
|
}
|
||||||
return $table;
|
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) {
|
public function update($properties) {
|
||||||
global $DB, $PAGE;
|
global $DB, $PAGE;
|
||||||
$answers = $this->get_answers();
|
$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]->pageid = $this->id;
|
||||||
$this->answers[$i]->timecreated = $this->timecreated;
|
$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]->answer = $properties->answer_editor[$i]['text'];
|
||||||
$this->answers[$i]->answerformat = $properties->answer_editor[$i]['format'];
|
$this->answers[$i]->answerformat = $properties->answer_editor[$i]['format'];
|
||||||
if (isset($properties->response_editor[$i])) {
|
}
|
||||||
$this->answers[$i]->response = $properties->response_editor[$i]['text'];
|
if (!empty($properties->response_editor[$i]) && is_array($properties->response_editor[$i])) {
|
||||||
$this->answers[$i]->responseformat = $properties->response_editor[$i]['format'];
|
$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])) {
|
if (isset($properties->jumpto[$i])) {
|
||||||
$this->answers[$i]->jumpto = $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());
|
$DB->update_record("lesson_answers", $this->answers[$i]->properties());
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else if (isset($this->answers[$i]->id)) {
|
||||||
break;
|
$DB->delete_records('lesson_answers', array('id'=>$this->answers[$i]->id));
|
||||||
|
unset($this->answers[$i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
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>";
|
$data = "<select disabled=\"disabled\"><option selected=\"selected\">".strip_tags(format_string($answer->answer))."</option></select>";
|
||||||
if ($useranswer != NULL) {
|
if ($useranswer != NULL) {
|
||||||
$userresponse = explode(",", $useranswer->useranswer);
|
$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 {
|
} else {
|
||||||
$data .= "<select disabled=\"disabled\"><option selected=\"selected\">".strip_tags(format_string($answer->response))."</option></select>";
|
$data .= "<select disabled=\"disabled\"><option selected=\"selected\">".strip_tags(format_string($answer->response))."</option></select>";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue