Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 3.11.x will end 14 Nov 2022 (12 months plus 6 months extension).
  • Bug fixes for security issues in 3.11.x will end 13 Nov 2023 (18 months plus 12 months extension).
  • PHP version: minimum PHP 7.3.0 Note: minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is supported too.
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Defines the editing form for the shortanswer question type.
 *
 * @package    qtype
 * @subpackage shortanswer
 * @copyright  2007 Jamie Pratt
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */


defined('MOODLE_INTERNAL') || die();


/**
 * Short answer question editing form definition.
 *
 * @copyright  2007 Jamie Pratt
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class qtype_shortanswer_edit_form extends question_edit_form {

    protected function definition_inner($mform) {
< $menu = array(
> $menu = [
get_string('caseno', 'qtype_shortanswer'), get_string('caseyes', 'qtype_shortanswer')
< );
> ];
$mform->addElement('select', 'usecase', get_string('casesensitive', 'qtype_shortanswer'), $menu);
> $mform->setDefault('usecase', $this->get_default_value('usecase', $menu[0]));
$mform->addElement('static', 'answersinstruct', get_string('correctanswers', 'qtype_shortanswer'), get_string('filloutoneanswer', 'qtype_shortanswer')); $mform->closeHeaderBefore('answersinstruct'); $this->add_per_answer_fields($mform, get_string('answerno', 'qtype_shortanswer', '{no}'), question_bank::fraction_options()); $this->add_interactive_settings(); } protected function get_more_choices_string() { return get_string('addmoreanswerblanks', 'qtype_shortanswer'); } protected function data_preprocessing($question) { $question = parent::data_preprocessing($question); $question = $this->data_preprocessing_answers($question); $question = $this->data_preprocessing_hints($question); return $question; } public function validation($data, $files) { $errors = parent::validation($data, $files); $answers = $data['answer']; $answercount = 0; $maxgrade = false; foreach ($answers as $key => $answer) { $trimmedanswer = trim($answer); if ($trimmedanswer !== '') { $answercount++; if ($data['fraction'][$key] == 1) { $maxgrade = true; } } else if ($data['fraction'][$key] != 0 || !html_is_blank($data['feedback'][$key]['text'])) { $errors["answeroptions[{$key}]"] = get_string('answermustbegiven', 'qtype_shortanswer'); $answercount++; } } if ($answercount==0) { $errors['answeroptions[0]'] = get_string('notenoughanswers', 'qtype_shortanswer', 1); } if ($maxgrade == false) { $errors['answeroptions[0]'] = get_string('fractionsnomax', 'question'); } return $errors; } public function qtype() { return 'shortanswer'; } }