public function save_question($question, $form) { // Make very sure that descriptions can'e be created with a grade of // anything other than 0. $form->defaultmark = 0; return parent::save_question($question, $form); }
public function save_question_options($question) { global $DB; $result = new stdClass(); $context = $question->context; $question->feedbackperconditions = rtrim(str_replace("\r\n", "\n", $question->feedbackperconditions), "\n"); $question->conditions = rtrim(str_replace("\r\n", "\n", $question->conditions), "\n"); $parentresult = parent::save_question_options($question); if ($parentresult !== null) { // Parent function returns null if all is OK return $parentresult; } $this->save_hints($question); return $parentresult; }
function export_to_xml($question, qformat_xml $format, $extra = null) { global $COURSE; if ($extra !== null) { throw new coding_exception("coderunner:export_to_xml: Unexpected parameter"); } // Copy the question so we can modify it for export // (Just in case the original gets used elsewhere). $questiontoexport = clone $question; $qtype = $question->options->coderunnertype; $coursecontext = context_course::instance($COURSE->id); $row = self::get_prototype($qtype, $coursecontext); // Clear all inherited fields equal in value to the corresponding Prototype field // (but only if this is not a prototype question itself) if ($questiontoexport->options->prototypetype == 0) { $noninheritedfields = $this->noninherited_fields(); $extrafields = $this->extra_question_fields(); foreach ($row as $field => $value) { if (in_array($field, $extrafields) && !in_array($field, $noninheritedfields) && $question->options->{$field} === $value) { $questiontoexport->options->{$field} = null; } } } $expout = parent::export_to_xml($questiontoexport, $format, $extra); $expout .= " <testcases>\n"; foreach ($question->options->testcases as $testcase) { $useasexample = $testcase->useasexample ? 1 : 0; $hiderestiffail = $testcase->hiderestiffail ? 1 : 0; $mark = sprintf("%.7f", $testcase->mark); $expout .= " <testcase useasexample=\"{$useasexample}\" hiderestiffail=\"{$hiderestiffail}\" mark=\"{$mark}\" >\n"; foreach (array('testcode', 'stdin', 'expected', 'extra', 'display') as $field) { $exportedValue = $format->writetext($testcase->{$field}, 4); $expout .= " <{$field}>\n {$exportedValue} </{$field}>\n"; } $expout .= " </testcase>\n"; } // Add datafiles within the scope of the <testcases> element $fs = get_file_storage(); $contextid = $question->contextid; $datafiles = $fs->get_area_files($contextid, 'qtype_coderunner', 'datafile', $question->id); $expout .= $format->write_files($datafiles); $expout .= " </testcases>\n"; return $expout; }
public function save_question($question, $form) { $form->name = ''; // Name is not a required field for random questions, but // parent::save_question Assumes that it is. return parent::save_question($question, $form); }
/** * Initialise the common question_definition fields. * * @param question_definition $question the question_definition we are creating. * @param object $questiondata the question data loaded from the database. */ protected function initialise_question_instance(question_definition $question, $questiondata) { parent::initialise_question_instance($question, $questiondata); $question->rows = $questiondata->options->rows; $question->cols = $questiondata->options->cols; $question->weights = $questiondata->options->weights; $question->grademethod = $questiondata->options->grademethod; $question->multiple = $questiondata->options->multiple; }
protected function delete_files($questionid, $contextid) { $fs = get_file_storage(); parent::delete_files($questionid, $contextid); $this->delete_files_in_answers($questionid, $contextid, true); $fs->delete_area_files($contextid, 'question', 'correctfeedback', $questionid); $fs->delete_area_files($contextid, 'question', 'incorrectfeedback', $questionid); }
protected function delete_files($questionid, $contextid) { global $DB; $fs = get_file_storage(); parent::delete_files($questionid, $contextid); $subquestionids = $DB->get_records_menu('question_match_sub', array('question' => $questionid), 'id', 'id,1'); foreach ($subquestionids as $subquestionid => $notused) { $fs->delete_area_files($contextid, 'qtype_match', 'subquestion', $subquestionid); } $this->delete_files_in_combined_feedback($questionid, $contextid); }
public function save_question($question, $form) { $form->name = ''; // In case someone set the question text to true/false in the old style, set it properly. if ($form->questiontext['text']) { $form->questiontext['text'] = '1'; } else { $form->questiontext['text'] = '0'; } $form->tags = array(); // Name is not a required field for random questions, but // parent::save_question Assumes that it is. return parent::save_question($question, $form); }
protected function delete_files($questionid, $contextid) { global $DB; $fs = get_file_storage(); parent::delete_files($questionid, $contextid); }
public function make_question($questiondata) { $question = parent::make_question($questiondata); $question->questiontext = html_writer::tag('div', get_string('missingqtypewarning', 'qtype_missingtype'), array('class' => 'warning missingqtypewarning')) . $question->questiontext; return $question; }
public function save_question($question, $form) { $form->name = ''; $form->questiontextformat = FORMAT_MOODLE; $form->tags = array(); // Name is not a required field for random questions, but // parent::save_question Assumes that it is. return parent::save_question($question, $form); }
protected function initialise_question_instance(question_definition $question, $questiondata) { // TODO. parent::initialise_question_instance($question, $questiondata); }
protected function delete_files($questionid, $contextid) { global $DB; $fs = get_file_storage(); parent::delete_files($questionid, $contextid); $subquestionids = $DB->get_records_menu('question_order_sub', array('question' => $questionid), 'id', 'id,1'); foreach ($subquestionids as $subquestionid => $notused) { $fs->delete_area_files($contextid, 'qtype_order', 'subquestion', $subquestionid); } $fs->delete_area_files($contextid, 'qtype_multichoice', 'correctfeedback', $questionid); $fs->delete_area_files($contextid, 'qtype_multichoice', 'partiallycorrectfeedback', $questionid); $fs->delete_area_files($contextid, 'qtype_multichoice', 'incorrectfeedback', $questionid); }
protected function delete_files($questionid, $contextid) { parent::delete_files($questionid, $contextid); $fs = get_file_storage(); $fs->delete_area_files($contextid, 'qtype_javaunittest', 'graderinfo', $questionid); }
protected function delete_files($questionid, $contextid) { parent::delete_files($questionid, $contextid); $this->delete_files_in_hints($questionid, $contextid); }
public function export_to_xml($question, qformat_xml $format, $extra = null) { $output = parent::export_to_xml($question, $format); $output .= ' <delimitchars>' . $question->options->delimitchars . "</delimitchars>\n"; $output .= ' <answerdisplay>' . $question->options->answerdisplay . "</answerdisplay>\n"; $output .= ' <casesensitive>' . $question->options->casesensitive . "</casesensitive>\n"; $output .= ' <noduplicates>' . $question->options->casesensitive . "</noduplicates>\n"; $output .= $format->write_combined_feedback($question->options, $question->id, $question->contextid); return $output; }
public function delete_question($questionid, $contextid) { global $DB; $DB->delete_records('question_randomsamatch', array('question' => $questionid)); parent::delete_question($questionid, $contextid); }
public function delete_question($questionid, $contextid) { global $DB; $DB->delete_records('qtype_ordering_options', array('questionid' => $questionid)); parent::delete_question($questionid, $contextid); }
protected function initialise_question_instance(question_definition $question, $questiondata) { question_type::initialise_question_instance($question, $questiondata); $question->shuffleanswers = $questiondata->options->shuffleanswers; $question->answernumbering = $questiondata->options->answernumbering; if (!empty($questiondata->options->layout)) { $question->layout = $questiondata->options->layout; } else { $question->layout = qtype_multichoice_single_question::LAYOUT_VERTICAL; } $question->synchronised = $questiondata->options->synchronize; $this->initialise_combined_feedback($question, $questiondata, true); $this->initialise_question_answers($question, $questiondata); foreach ($questiondata->options->answers as $a) { $question->answers[$a->id]->correctanswerlength = $a->correctanswerlength; $question->answers[$a->id]->correctanswerformat = $a->correctanswerformat; } $question->datasetloader = new qtype_calculated_dataset_loader($questiondata->id); }
/** * Add styles.css to the page's header */ function get_html_head_contributions(&$question, &$state) { return parent::get_html_head_contributions($question, $state); }
protected function initialise_question_instance(question_definition $question, $questiondata) { parent::initialise_question_instance($question, $questiondata); $availablesaquestions = $this->get_available_saquestions_from_category($question->category, $questiondata->options->subcats); $question->shufflestems = false; $question->stems = array(); $question->choices = array(); $question->right = array(); $this->initialise_combined_feedback($question, $questiondata); $question->questionsloader = new qtype_randomsamatch_question_loader($availablesaquestions, $questiondata->options->choose); }
protected function delete_files($questionid, $contextid) { parent::delete_files($questionid, $contextid); $this->delete_files_in_answers($questionid, $contextid, true); $this->delete_files_in_combined_feedback($questionid, $contextid); }
protected function initialise_question_instance($question, $questiondata) { parent::initialise_question_instance($question, $questiondata); $bits = preg_split('/\\{#(\\d+)\\}/', $question->questiontext, null, PREG_SPLIT_DELIM_CAPTURE); $question->textfragments[0] = array_shift($bits); $i = 1; while (!empty($bits)) { $question->places[$i] = array_shift($bits); $question->textfragments[$i] = array_shift($bits); $i += 1; } foreach ($questiondata->options->questions as $key => $subqdata) { $subqdata->contextid = $questiondata->contextid; $question->subquestions[$key] = question_bank::make_question($subqdata); $question->subquestions[$key]->maxmark = $subqdata->defaultmark; if (isset($subqdata->options->layout)) { $question->subquestions[$key]->layout = $subqdata->options->layout; } } }
protected function delete_files($questionid, $contextid) { global $DB; $fs = get_file_storage(); parent::delete_files($questionid, $contextid); $this->delete_files_in_hints($questionid, $contextid); $fs->delete_area_files($contextid, 'qtype_stack', 'specificfeedback', $questionid); $fs->delete_area_files($contextid, 'qtype_stack', 'prtcorrect', $questionid); $fs->delete_area_files($contextid, 'qtype_stack', 'prtpartiallycorrect', $questionid); $fs->delete_area_files($contextid, 'qtype_stack', 'prtincorrect', $questionid); $nodeids = $DB->get_records_menu('qtype_stack_prt_nodes', array('questionid' => $questionid), 'id', 'id,1'); foreach ($nodeids as $nodeid => $notused) { $fs->delete_area_files($oldcontextid, $newcontextid, 'qtype_stack', 'prtnodetruefeedback', $nodeid); $fs->delete_area_files($oldcontextid, $newcontextid, 'qtype_stack', 'prtnodefalsefeedback', $nodeid); } }
protected function delete_files($questionid, $contextid) { parent::delete_files($questionid, $contextid); $fs = get_file_storage(); $fs->delete_area_files($contextid, 'qtype_poodllrecording', 'graderinfo', $questionid); }
public function delete_question($questionid, $contextid) { global $DB; $DB->delete_records('qtype_' . $this->name(), array('questionid' => $questionid)); $DB->delete_records('qtype_' . $this->name() . '_drags', array('questionid' => $questionid)); $DB->delete_records('qtype_' . $this->name() . '_drops', array('questionid' => $questionid)); return parent::delete_question($questionid, $contextid); }
protected function initialise_question_instance(question_definition $question, $questiondata) { parent::initialise_question_instance($question, $questiondata); $this->initialise_question_answers($question, $questiondata); }
/** * Private function used by the preceding one. * @param question_type $qtype the question type. */ function print_qtype_to_add_option($qtype) { echo '<div class="qtypeoption">' . "\n"; echo '<label for="' . $qtype->plugin_name() . '">'; echo '<input type="radio" name="qtype" id="' . $qtype->plugin_name() . '" value="' . $qtype->name() . '" />'; echo '<span class="qtypename">'; $fakequestion = new stdClass(); $fakequestion->qtype = $qtype->name(); echo print_question_icon($fakequestion); echo $qtype->menu_name() . '</span><span class="qtypesummary">' . get_string('pluginnamesummary', $qtype->plugin_name()); echo "</span></label>\n"; echo "</div>\n"; }
protected function delete_files($questionid, $contextid) { $fs = get_file_storage(); parent::delete_files($questionid, $contextid); $this->delete_files_in_answers($questionid, $contextid); $this->delete_files_in_hints($questionid, $contextid); }
protected function initialise_question_instance(question_definition $question, $questiondata) { parent::initialise_question_instance($question, $questiondata); $question->usecase = $questiondata->options->usecase; $question->usehint = $questiondata->options->usehint; $question->studentshowalternate = $questiondata->options->studentshowalternate; $this->initialise_question_answers($question, $questiondata); $qid = $question->id; }