function set_data($question) { if (isset($question->options)) { $answers = $question->options->answers; if (count($answers)) { $key = 0; foreach ($answers as $answer) { $default_values['answer[' . $key . ']'] = $answer->answer; $default_values['fraction[' . $key . ']'] = $answer->fraction; $default_values['tolerance[' . $key . ']'] = $answer->tolerance; $default_values['tolerancetype[' . $key . ']'] = $answer->tolerancetype; $default_values['correctanswerlength[' . $key . ']'] = $answer->correctanswerlength; $default_values['correctanswerformat[' . $key . ']'] = $answer->correctanswerformat; $default_values['feedback[' . $key . ']'] = $answer->feedback; $key++; } } $units = array_values($question->options->units); // make sure the default unit is at index 0 usort($units, create_function('$a, $b', 'if (1.0 === (float)$a->multiplier) { return -1; } else ' . 'if (1.0 === (float)$b->multiplier) { return 1; } else { return 0; }')); if (count($units)) { $key = 0; foreach ($units as $unit) { $default_values['unit[' . $key . ']'] = $unit->unit; $default_values['multiplier[' . $key . ']'] = $unit->multiplier; $key++; } } } $default_values['submitbutton'] = get_string('nextpage', 'qtype_calculated'); $default_values['makecopy'] = get_string('makecopynextpage', 'qtype_calculated'); /* set the wild cards category display given that on loading the category element is unselected when processing this function but have a valid value when processing the update category button. The value can be obtain by $qu->category =$this->_form->_elements[$this->_form->_elementIndex['category']]->_values[0]; but is coded using existing functions */ $qu = new stdClass(); $el = new stdClass(); /* no need to call elementExists() here */ if ($this->_form->elementExists('category')) { $el = $this->_form->getElement('category'); } else { $el = $this->_form->getElement('categorymoveto'); } if ($value = $el->getSelected()) { $qu->category = $value[0]; } else { $qu->category = $question->category; // on load $question->category is set by question.php } $html2 = $this->qtypeobj->print_dataset_definitions_category($qu); $this->_form->_elements[$this->_form->_elementIndex['listcategory']]->_text = $html2; $question = (object) ((array) $question + $default_values); parent::set_data($question); }
function data_preprocessing($question) { global $QTYPES; $default_values = array(); if (isset($question->options)) { $answers = $question->options->answers; if (count($answers)) { $key = 0; foreach ($answers as $answer) { $draftid = file_get_submitted_draft_itemid('feedback[' . $key . ']'); $default_values['answer[' . $key . ']'] = $answer->answer; $default_values['fraction[' . $key . ']'] = $answer->fraction; $default_values['tolerance[' . $key . ']'] = $answer->tolerance; $default_values['tolerancetype[' . $key . ']'] = $answer->tolerancetype; $default_values['correctanswerlength[' . $key . ']'] = $answer->correctanswerlength; $default_values['correctanswerformat[' . $key . ']'] = $answer->correctanswerformat; $default_values['feedback[' . $key . ']'] = array(); $default_values['feedback[' . $key . ']']['text'] = file_prepare_draft_area($draftid, $this->context->id, 'question', 'answerfeedback', !empty($answer->id) ? (int) $answer->id : null, $this->fileoptions, $answer->feedback); $default_values['feedback[' . $key . ']']['format'] = $answer->feedbackformat; $default_values['feedback[' . $key . ']']['itemid'] = $draftid; $key++; } } $default_values['synchronize'] = $question->options->synchronize; // set unit data, prepare files in instruction area $QTYPES['numerical']->set_numerical_unit_data($this, $question, $default_values); } if (isset($question->options->single)) { $default_values['single'] = $question->options->single; $default_values['answernumbering'] = $question->options->answernumbering; $default_values['shuffleanswers'] = $question->options->shuffleanswers; // prepare feedback editor to display files in draft area } $default_values['submitbutton'] = get_string('nextpage', 'qtype_calculated'); $default_values['makecopy'] = get_string('makecopynextpage', 'qtype_calculated'); $default_values['returnurl'] = '0'; /* set the wild cards category display given that on loading the category element is unselected when processing this function but have a valid value when processing the update category button. The value can be obtain by $qu->category =$this->_form->_elements[$this->_form->_elementIndex['category']]->_values[0]; but is coded using existing functions */ $qu = new stdClass(); $el = new stdClass(); /* no need to call elementExists() here */ if ($this->_form->elementExists('category')) { $el = $this->_form->getElement('category'); } else { $el = $this->_form->getElement('categorymoveto'); } if ($value = $el->getSelected()) { $qu->category = $value[0]; } else { $qu->category = $question->category; // on load $question->category is set by question.php } $html2 = $this->qtypeobj->print_dataset_definitions_category($qu); $this->_form->_elements[$this->_form->_elementIndex['listcategory']]->_text = $html2; $question = (object) ((array) $question + $default_values); return $question; }