From d84389391cd5616b231d13796ce0e12645f6cfb9 Mon Sep 17 00:00:00 2001 From: Matt Porritt Date: Fri, 4 Aug 2023 13:01:18 +1000 Subject: [PATCH] MDL-78860 qtype_calculatedmulti: PHP 8.2 compatibility PHP 8.2 has deprecated setting properties on objects dynamically. The qtype_calculatedmulti question type had two properties being set this way($correctanswerlength and$correctanswerformat). This patch extends the question_answer class to add the properties when the object is instantiated. --- .../classes/qtype_calculatedmulti_answer.php | 38 +++++++++++++++++++ .../type/calculatedmulti/questiontype.php | 4 +- 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 question/type/calculatedmulti/classes/qtype_calculatedmulti_answer.php diff --git a/question/type/calculatedmulti/classes/qtype_calculatedmulti_answer.php b/question/type/calculatedmulti/classes/qtype_calculatedmulti_answer.php new file mode 100644 index 00000000000..14d46e981c9 --- /dev/null +++ b/question/type/calculatedmulti/classes/qtype_calculatedmulti_answer.php @@ -0,0 +1,38 @@ +. + +declare(strict_types=1); + +namespace qtype_calculatedmulti; + +defined('MOODLE_INTERNAL') || die(); + +require_once($CFG->dirroot . '/question/type/questionbase.php'); + +/** + * Class to represent a calculated question answer. + * + * @package qtype_calculatedmulti + * @copyright 2023 Matt Porritt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class qtype_calculatedmulti_answer extends \question_answer { + /** @var int The length of the correct answer. */ + public $correctanswerlength; + + /** @var int The format of the correct answer. */ + public $correctanswerformat; +} diff --git a/question/type/calculatedmulti/questiontype.php b/question/type/calculatedmulti/questiontype.php index 5715f3e2624..f831204c5ef 100644 --- a/question/type/calculatedmulti/questiontype.php +++ b/question/type/calculatedmulti/questiontype.php @@ -23,6 +23,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ +use qtype_calculatedmulti\qtype_calculatedmulti_answer; defined('MOODLE_INTERNAL') || die(); @@ -212,7 +213,8 @@ class qtype_calculatedmulti extends qtype_calculated { * @return question_answer */ public function make_answer($answer) { - return parent::make_answer($answer); + return new qtype_calculatedmulti_answer($answer->id, $answer->answer, + $answer->fraction, $answer->feedback, $answer->feedbackformat); } protected function make_hint($hint) {