芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/public_html/cepali/question/type/shortanswer/question.php
. /** * Short answer question definition class. * * @package qtype * @subpackage shortanswer * @copyright 2009 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); require_once($CFG->dirroot . '/question/type/questionbase.php'); /** * Represents a short answer question. * * @copyright 2009 The Open University * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class qtype_shortanswer_question extends question_graded_by_strategy implements question_response_answer_comparer { /** @var boolean whether answers should be graded case-sensitively. */ public $usecase; /** @var array of question_answer. */ public $answers = array(); public function __construct() { parent::__construct(new question_first_matching_answer_grading_strategy($this)); } public function get_expected_data() { return array('answer' => PARAM_RAW_TRIMMED); } public function summarise_response(array $response) { if (isset($response['answer'])) { return $response['answer']; } else { return null; } } public function un_summarise_response(string $summary) { if (!empty($summary)) { return ['answer' => $summary]; } else { return []; } } public function is_complete_response(array $response) { return array_key_exists('answer', $response) && ($response['answer'] || $response['answer'] === '0'); } public function get_validation_error(array $response) { if ($this->is_gradable_response($response)) { return ''; } return get_string('pleaseenterananswer', 'qtype_shortanswer'); } public function is_same_response(array $prevresponse, array $newresponse) { return question_utils::arrays_same_at_key_missing_is_blank( $prevresponse, $newresponse, 'answer'); } public function get_answers() { return $this->answers; } public function compare_response_with_answer(array $response, question_answer $answer) { if (!array_key_exists('answer', $response) || is_null($response['answer'])) { return false; } return self::compare_string_with_wildcard( $response['answer'], $answer->answer, !$this->usecase); } public static function compare_string_with_wildcard($string, $pattern, $ignorecase) { // Normalise any non-canonical UTF-8 characters before we start. $pattern = self::safe_normalize($pattern); $string = self::safe_normalize($string); // Break the string on non-escaped runs of asterisks. // ** is equivalent to *, but people were doing that, and with many *s it breaks preg. $bits = preg_split('/(?clean_response($response['answer']); } return $response; } public function clean_response($answer) { // Break the string on non-escaped asterisks. $bits = preg_split('/(?get_last_qt_var('answer'); $answer = $this->get_matching_answer(array('answer' => $currentanswer)); $answerid = reset($args); // Itemid is answer id. return $options->feedback && $answer && $answerid == $answer->id; } else if ($component == 'question' && $filearea == 'hint') { return $this->check_hint_file_access($qa, $options, $args); } else { return parent::check_file_access($qa, $options, $component, $filearea, $args, $forcedownload); } } }