Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions edit_mtf_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -224,13 +224,13 @@ protected function definition_inner($mform) {
if (isset($this->question->options->rows) && count($this->question->options->rows) > 0) {
$this->numberofrows = count($this->question->options->rows);
} else {
$this->numberofrows = 4;
$this->numberofrows = QTYPE_MTF_NUMBER_OF_OPTIONS;
}

if (isset($this->question->options->columns) && count($this->question->options->columns) > 0) {
$this->numberofcolumns = count($this->question->options->columns);
} else {
$this->numberofcolumns = 2;
$this->numberofcolumns = QTYPE_MTF_NUMBER_OF_RESPONSES;
}

$this->editoroptions['changeformat'] = 1;
Expand Down
79 changes: 47 additions & 32 deletions questiontype.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,49 +89,44 @@ public function adjust_display_options(question_display_options $options) {
class qtype_mtf extends question_type {

/**
* Sets the default options for the question.
* (non-PHPdoc)
* @see question_type::set_default_options()
* @param object $question
* Returns the default options for the MTF question type.
* @param stdClass $options
* @return stdClass
*/
public function set_default_options($question) {
protected function get_default_mtf_options(stdClass $options): stdClass {
$mtfconfig = get_config('qtype_mtf');

if (!isset($question->options)) {
$question->options = new stdClass();
if (!isset($options->numberofrows)) {
$options->numberofrows = QTYPE_MTF_NUMBER_OF_OPTIONS;
}
if (!isset($question->options->numberofrows)) {
$question->options->numberofrows = QTYPE_MTF_NUMBER_OF_OPTIONS;
if (!isset($options->numberofcolumns)) {
$options->numberofcolumns = QTYPE_MTF_NUMBER_OF_RESPONSES;
}
if (!isset($question->options->numberofcolumns)) {
$question->options->numberofcolumns = QTYPE_MTF_NUMBER_OF_RESPONSES;
if (!isset($options->shuffleanswers)) {
$options->shuffleanswers = $mtfconfig->shuffleanswers;
}
if (!isset($question->options->shuffleanswers)) {
$question->options->shuffleanswers = $mtfconfig->shuffleanswers;
}
if (!isset($question->options->deduction)) {
$question->options->deduction = 0.0;
if (!isset($options->deduction)) {
$options->deduction = 0.0;
}
if (!isset($question->options->scoringmethod)) {
$question->options->scoringmethod = $mtfconfig->scoringmethod;
if (!isset($options->scoringmethod)) {
$options->scoringmethod = $mtfconfig->scoringmethod;
}
if (!isset($question->options->rows)) {
$rows = array();
for ($i = 1; $i <= $question->options->numberofrows; ++$i) {
if (!isset($options->rows)) {
$options->rows = [];
for ($i = 1; $i <= $options->numberofrows; ++$i) {
$row = new stdClass();
$row->number = $i;
$row->optiontext = '';
$row->optiontextformat = FORMAT_HTML;
$row->optionfeedback = '';
$row->optionfeedbackformat = FORMAT_HTML;
$rows[] = $row;
$options->rows[] = $row;
}
$question->options->rows = $rows;
}

if (!isset($question->options->columns)) {
$columns = array();
for ($i = 1; $i <= $question->options->numberofcolumns; ++$i) {
if (!isset($options->columns)) {
$options->columns = [];
for ($i = 1; $i <= $options->numberofcolumns; ++$i) {
$column = new stdClass();
$column->number = $i;

Expand All @@ -142,10 +137,24 @@ public function set_default_options($question) {
}
$column->responsetext = $responsetextcol;
$column->responsetextformat = FORMAT_MOODLE;
$columns[] = $column;
$options->columns[] = $column;
}
$question->options->columns = $columns;
}

return $options;
}

/**
* Sets the default options for the question.
* (non-PHPdoc)
* @see question_type::set_default_options()
* @param object $question
*/
public function set_default_options($question) {
if (!isset($question->options)) {
$question->options = new stdClass();
}
$question->options = $this->get_default_mtf_options($question->options);
}

/**
Expand All @@ -160,8 +169,14 @@ public function get_question_options($question) {
parent::get_question_options($question);

// Retrieve the question options.
$question->options = $DB->get_record('qtype_mtf_options',
array('questionid' => $question->id));
$mtfoptions = $DB->get_record('qtype_mtf_options',
['questionid' => $question->id]);
if (!$mtfoptions) {
$mtfoptions = $this->get_default_mtf_options($question->options);
}
foreach($mtfoptions as $property => $value) {
$question->options->$property = $value;
}

// Retrieve the question rows (mtf options).
$question->options->rows = $DB->get_records('qtype_mtf_rows',
Expand All @@ -177,7 +192,7 @@ public function get_question_options($question) {
array('questionid' => $question->id),
'rownumber ASC, columnnumber ASC');

foreach ($question->options->rows as $key => $row) {
foreach ($question->options->rows as $row) {

$indexcounter = $row->number - 1;

Expand All @@ -187,7 +202,7 @@ public function get_question_options($question) {
$question->feedback[$indexcounter]['format'] = $row->optionfeedbackformat;
}

foreach ($question->options->columns as $key => $column) {
foreach ($question->options->columns as $column) {
$question->{'responsetext_' . $column->number} = $column->responsetext;
}

Expand Down