diff --git a/question/engine/bank.php b/question/engine/bank.php index 5ccc2c19d20..ad4e4930ae1 100644 --- a/question/engine/bank.php +++ b/question/engine/bank.php @@ -42,6 +42,8 @@ require_once(dirname(__FILE__) . '/../type/questiontypebase.php'); * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ abstract class question_bank { + const MAX_SUMMARY_LENGTH = 65000; + /** @var array question type name => question_type subclass. */ private static $questiontypes = array(); diff --git a/question/engine/datalib.php b/question/engine/datalib.php index 2f41b12d7ff..9d94731f57a 100644 --- a/question/engine/datalib.php +++ b/question/engine/datalib.php @@ -89,6 +89,11 @@ class question_engine_data_mapper { $record->minfraction = $qa->get_min_fraction(); $record->flagged = $qa->is_flagged(); $record->questionsummary = $qa->get_question_summary(); + if (textlib::strlen($record->questionsummary) > question_bank::MAX_SUMMARY_LENGTH) { + // It seems some people write very long quesions! MDL-30760 + $record->questionsummary = textlib::substr($record->questionsummary, + 0, question_bank::MAX_SUMMARY_LENGTH - 3) . '...'; + } $record->rightanswer = $qa->get_right_answer_summary(); $record->responsesummary = $qa->get_response_summary(); $record->timemodified = time(); diff --git a/question/engine/upgrade/upgradelib.php b/question/engine/upgrade/upgradelib.php index 6f0aac88c08..7e682f0ed9c 100644 --- a/question/engine/upgrade/upgradelib.php +++ b/question/engine/upgrade/upgradelib.php @@ -245,6 +245,11 @@ class question_engine_attempt_upgrader { $qa = $qas[$questionid]; $qa->questionusageid = $attempt->uniqueid; $qa->slot = $i; + if (textlib::strlen($qa->questionsummary) > question_bank::MAX_SUMMARY_LENGTH) { + // It seems some people write very long quesions! MDL-30760 + $qa->questionsummary = textlib::substr($qa->questionsummary, + 0, question_bank::MAX_SUMMARY_LENGTH - 3) . '...'; + } $this->insert_record('question_attempts', $qa); $layout[$questionkeys[$questionid]] = $qa->slot; diff --git a/question/type/multianswer/questiontype.php b/question/type/multianswer/questiontype.php index 32f36c1ee77..c9cb5df8363 100644 --- a/question/type/multianswer/questiontype.php +++ b/question/type/multianswer/questiontype.php @@ -404,7 +404,7 @@ function qtype_multianswer_extract_question($text) { && preg_match('~'.NUMERICAL_ALTERNATIVE_REGEX.'~', $altregs[ANSWER_ALTERNATIVE_REGEX_ANSWER], $numregs)) { $wrapped->answer[] = $numregs[NUMERICAL_CORRECT_ANSWER]; - if ($numregs[NUMERICAL_ABS_ERROR_MARGIN]) { + if (array_key_exists(NUMERICAL_ABS_ERROR_MARGIN, $numregs)) { $wrapped->tolerance["$answerindex"] = $numregs[NUMERICAL_ABS_ERROR_MARGIN]; } else {