MDL-30322 qtypes calc* and mulitanswer -> optional_param_array.

This commit is contained in:
Tim Hunt
2011-11-28 16:57:00 +00:00
parent 1de9151c6f
commit 7d087744cb
6 changed files with 52 additions and 75 deletions
+10 -13
View File
@@ -267,10 +267,7 @@ class question_dataset_dependent_items_form extends moodleform {
$mform->closeHeaderBefore('addgrp1');
//----------------------------------------------------------------------
$j = $this->noofitems * count($this->datasetdefs);
$k = 1;
if ("" != optional_param('selectshow', '', PARAM_INT)) {
$k = optional_param('selectshow', '', PARAM_INT);
}
$k = optional_param('selectshow', 1, PARAM_INT);
for ($i = $this->noofitems; $i >= 1; $i--) {
if ($k > 0) {
$mform->addElement('header', '', "<b>" .
@@ -361,8 +358,8 @@ class question_dataset_dependent_items_form extends moodleform {
if (isset($question->options)) {
$answers = $question->options->answers;
if (count($answers)) {
if (optional_param('updateanswers', '', PARAM_RAW) != '' ||
optional_param('updatedatasets', '', PARAM_RAW) != '') {
if (optional_param('updateanswers', false, PARAM_BOOL) ||
optional_param('updatedatasets', false, PARAM_BOOL)) {
foreach ($answers as $key => $answer) {
$fromform->tolerance[$key]= $this->_form->getElementValue(
'tolerance['.$key.']');
@@ -434,8 +431,8 @@ class question_dataset_dependent_items_form extends moodleform {
if ($this->qtypeobj->supports_dataset_item_generation()) {
$itemnumber = $this->noofitems+1;
foreach ($this->datasetdefs as $defid => $datasetdef) {
if (optional_param('updatedatasets', '', PARAM_RAW) == '' &&
optional_param('updateanswers', '', PARAM_RAW)== '') {
if (!optional_param('updatedatasets', false, PARAM_BOOL) &&
!optional_param('updateanswers', false, PARAM_BOOL)) {
$formdata["number[$j]"] = $this->qtypeobj->generate_dataset_item(
$datasetdef->options);
} else {
@@ -450,11 +447,11 @@ class question_dataset_dependent_items_form extends moodleform {
}
//existing records override generated data depending on radio element
$j = $this->noofitems * count($this->datasetdefs)+1;
if (!$this->regenerate && (optional_param('updatedatasets', '', PARAM_RAW) == '' &&
optional_param('updateanswers', '', PARAM_RAW)== '')) {
$j = $this->noofitems * count($this->datasetdefs) + 1;
if (!$this->regenerate && !optional_param('updatedatasets', false, PARAM_BOOL) &&
!optional_param('updateanswers', false, PARAM_BOOL)) {
$idx = 1;
$itemnumber = $this->noofitems+1;
$itemnumber = $this->noofitems + 1;
foreach ($this->datasetdefs as $defid => $datasetdef) {
if (isset($datasetdef->items[$itemnumber])) {
$formdata["number[$j]"] = $datasetdef->items[$itemnumber]->value;
@@ -468,7 +465,7 @@ class question_dataset_dependent_items_form extends moodleform {
$comment = $this->qtypeobj->comment_on_datasetitems($this->qtypeobj, $question->id,
$question->questiontext, $answers, $data, ($this->noofitems + 1));
if (isset($comment->outsidelimit)&&$comment->outsidelimit) {
if (isset($comment->outsidelimit) && $comment->outsidelimit) {
$this->outsidelimit=$comment->outsidelimit;
}
$key1 = 1;
@@ -52,11 +52,7 @@ class qtype_calculated_edit_form extends qtype_numerical_edit_form {
$formeditable = true) {
global $CFG, $DB;
$this->question = $question;
if ('1' == optional_param('reload', '', PARAM_INT)) {
$this->reload = true;
} else {
$this->reload = false;
}
$this->reload = optional_param('reload', false, PARAM_BOOL);
if (!$this->reload) { // use database data as this is first pass
if (isset($this->question->id)) {
+1 -1
View File
@@ -436,7 +436,7 @@ class qtype_calculated extends question_type {
break;
case 'datasetitems':
require("$CFG->dirroot/question/type/calculated/datasetitems_form.php");
$regenerate = optional_param('forceregeneration', 0, PARAM_BOOL);
$regenerate = optional_param('forceregeneration', false, PARAM_BOOL);
$mform = new question_dataset_dependent_items_form(
"$submiturl?wizardnow=datasetitems", $question, $regenerate);
break;
@@ -48,11 +48,7 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$contexts, $formeditable = true) {
$this->question = $question;
$this->qtypeobj = question_bank::get_qtype('calculatedmulti');
if (1 == optional_param('reload', '', PARAM_INT)) {
$this->reload = true;
} else {
$this->reload = false;
}
$this->reload = optional_param('reload', false, PARAM_BOOL);
if (!$this->reload) {
// use database data as this is first pass
if (isset($this->question->id)) {
@@ -158,11 +154,11 @@ class qtype_calculatedmulti_edit_form extends question_edit_form {
$mform->setConstants(array('nounits'=>$nounits));
for ($i = 0; $i < $nounits; $i++) {
$mform->addElement('hidden', 'unit'."[$i]",
optional_param('unit'."[$i]", '', PARAM_NOTAGS));
optional_param("unit[$i]", '', PARAM_NOTAGS));
$mform->setType('unit'."[$i]", PARAM_NOTAGS);
$mform->addElement('hidden', 'multiplier'."[$i]",
optional_param('multiplier'."[$i]", '', PARAM_NUMBER));
$mform->setType('multiplier'."[$i]", PARAM_NUMBER);
optional_param("multiplier[$i]", '', PARAM_NUMBER));
$mform->setType("multiplier[$i]", PARAM_NUMBER);
}
$this->add_combined_feedback_fields(true);
@@ -80,11 +80,7 @@ class qtype_calculatedsimple_edit_form extends qtype_calculated_edit_form {
// which is not what we want so this should be removed from here
// get priority to paramdatasets
if ("1" == optional_param('reload', '', PARAM_INT)) {
$this->reload = true;
} else {
$this->reload = false;
}
$this->reload = optional_param('reload', false, PARAM_BOOL);
if (!$this->reload) { // use database data as this is first pass
// question->id == 0 so no stored datasets
if (!empty($question->id)) {
@@ -145,16 +141,16 @@ class qtype_calculatedsimple_edit_form extends qtype_calculated_edit_form {
// should not test on adding a new answer
// should test if there are already olddatasets or if the 'analyzequestion'
// submit button has been clicked
if ('' != optional_param('datasetdef', '', PARAM_RAW) ||
'' != optional_param('analyzequestion', '', PARAM_RAW)) {
if (optional_param_array('datasetdef', false, PARAM_BOOL) ||
optional_param('analyzequestion', false, PARAM_BOOL)) {
if ($dummyform->answer = optional_param('answer', '', PARAM_NOTAGS)) {
if ($dummyform->answer = optional_param_array('answer', '', PARAM_NOTAGS)) {
// there is always at least one answer...
$fraction = optional_param('fraction', '', PARAM_NUMBER);
$tolerance = optional_param('tolerance', '', PARAM_NUMBER);
$tolerancetype = optional_param('tolerancetype', '', PARAM_NUMBER);
$correctanswerlength = optional_param('correctanswerlength', '', PARAM_INT);
$correctanswerformat = optional_param('correctanswerformat', '', PARAM_INT);
$fraction = optional_param_array('fraction', '', PARAM_NUMBER);
$tolerance = optional_param_array('tolerance', '', PARAM_NUMBER);
$tolerancetype = optional_param_array('tolerancetype', '', PARAM_NUMBER);
$correctanswerlength = optional_param_array('correctanswerlength', '', PARAM_INT);
$correctanswerformat = optional_param_array('correctanswerformat', '', PARAM_INT);
foreach ($dummyform->answer as $key => $answer) {
if (trim($answer) != '') { // just look for non-empty
@@ -172,11 +168,11 @@ class qtype_calculatedsimple_edit_form extends qtype_calculated_edit_form {
}
$this->datasetdefs = array();
// rebuild datasetdefs from old values
if ($olddef = optional_param('datasetdef', '', PARAM_RAW)) {
$calcmin = optional_param('calcmin', '', PARAM_NUMBER);
$calclength = optional_param('calclength', '', PARAM_INT);
$calcmax = optional_param('calcmax', '', PARAM_NUMBER);
$oldoptions = optional_param('defoptions', '', PARAM_RAW);
if ($olddef = optional_param_array('datasetdef', '', PARAM_RAW)) {
$calcmin = optional_param_array('calcmin', '', PARAM_NUMBER);
$calclength = optional_param_array('calclength', '', PARAM_INT);
$calcmax = optional_param_array('calcmax', '', PARAM_NUMBER);
$oldoptions = optional_param_array('defoptions', '', PARAM_RAW);
$newdatasetvalues = false;
$sizeofolddef = count($olddef);
for ($key = 1; $key <= $sizeofolddef; $key++) {
@@ -238,7 +234,7 @@ class qtype_calculatedsimple_edit_form extends qtype_calculated_edit_form {
}
}
$maxnumber = -1;
if ("" != optional_param('addbutton', '', PARAM_TEXT)) {
if (optional_param('addbutton', false, PARAM_BOOL)) {
$maxnumber = optional_param('selectadd', '', PARAM_INT); //FIXME: sloppy coding
foreach ($this->datasetdefs as $defid => $datasetdef) {
$datasetdef->itemcount = $maxnumber;
@@ -255,12 +251,12 @@ class qtype_calculatedsimple_edit_form extends qtype_calculated_edit_form {
$this->maxnumber = $maxnumber;
} else {
// Handle reload dataset items
if ("" != optional_param('definition', '', PARAM_NOTAGS) &&
if (optional_param_array('definition', '', PARAM_NOTAGS) &&
!($datasettoremove ||$newdataset ||$newdatasetvalues)) {
$i = 1;
$fromformdefinition = optional_param('definition', '', PARAM_NOTAGS);
$fromformnumber = optional_param('number', '', PARAM_INT);
$fromformitemid = optional_param('itemid', '', PARAM_INT);
$fromformdefinition = optional_param_array('definition', '', PARAM_NOTAGS);
$fromformnumber = optional_param_array('number', '', PARAM_INT);
$fromformitemid = optional_param_array('itemid', '', PARAM_INT);
ksort($fromformdefinition);
foreach ($fromformdefinition as $key => $defid) {
@@ -320,7 +316,7 @@ class qtype_calculatedsimple_edit_form extends qtype_calculated_edit_form {
get_string('findwildcards', 'qtype_calculatedsimple'));
$mform->registerNoSubmitButton('analyzequestion');
$mform->closeHeaderBefore('analyzequestion');
if ("" != optional_param('analyzequestion', '', PARAM_RAW)) {
if (optional_param('analyzequestion', false, PARAM_BOOL)) {
$this->wizarddisplay = true;
@@ -499,10 +495,7 @@ class qtype_calculatedsimple_edit_form extends qtype_calculated_edit_form {
//--------------------------------------------------------------
$j = $this->noofitems * count($this->datasetdefs);
$k = 1;
if ("" != optional_param('selectshow', '', PARAM_INT)) {
$k = optional_param('selectshow', '', PARAM_INT);
}
$k = optional_param('selectshow', 1, PARAM_INT);
for ($i = $this->noofitems; $i >= 1; $i--) {
foreach ($this->datasetdefs as $defkey => $datasetdef) {
@@ -53,11 +53,7 @@ class qtype_multianswer_edit_form extends question_edit_form {
public function __construct($submiturl, $question, $category, $contexts, $formeditable = true) {
global $SESSION, $CFG, $DB;
$this->regenerate = true;
if ("1" == optional_param('reload', '', PARAM_INT)) {
$this->reload = true;
} else {
$this->reload = false;
}
$this->reload = optional_param('reload', false, PARAM_BOOL);
$this->used_in_quiz = false;
@@ -85,7 +81,7 @@ class qtype_multianswer_edit_form extends question_edit_form {
// Remove meaningless defaultmark field.
$mform->removeElement('defaultmark');
$this->confirm = optional_param('confirm', '0', PARAM_RAW);
$this->confirm = optional_param('confirm', false, PARAM_BOOL);
// Make questiontext a required field for this question type.
$mform->addRule('questiontext', null, 'required', null, 'client');
@@ -145,11 +141,10 @@ class qtype_multianswer_edit_form extends question_edit_form {
if ($this->reload) {
for ($sub = 1; $sub <= $countsubquestions; $sub++) {
$this->editas[$sub] = 'unknown type';
if (isset($this->questiondisplay->options->questions[$sub]->qtype)) {
$this->editas[$sub] = $this->questiondisplay->options->questions[$sub]->qtype;
} else if (optional_param('sub_'.$sub."_".'qtype', '', PARAM_RAW) != '') {
$this->editas[$sub] = optional_param('sub_'.$sub."_".'qtype', '', PARAM_RAW);
} else {
$this->editas[$sub] = optional_param('sub_'.$sub.'_qtype', 'unknown type', PARAM_PLUGIN);
}
$storemess = '';
@@ -167,43 +162,43 @@ class qtype_multianswer_edit_form extends question_edit_form {
'{#'.$sub.'}').'&nbsp;'.question_bank::get_qtype_name(
$this->questiondisplay->options->questions[$sub]->qtype).$storemess);
$mform->addElement('static', 'sub_'.$sub."_".'questiontext',
$mform->addElement('static', 'sub_'.$sub.'_questiontext',
get_string('questiondefinition', 'qtype_multianswer'));
if (isset ($this->questiondisplay->options->questions[$sub]->questiontext)) {
$mform->setDefault('sub_'.$sub."_".'questiontext',
$mform->setDefault('sub_'.$sub.'_questiontext',
$this->questiondisplay->options->questions[$sub]->questiontext['text']);
}
$mform->addElement('static', 'sub_'.$sub."_".'defaultmark',
$mform->addElement('static', 'sub_'.$sub.'_defaultmark',
get_string('defaultmark', 'question'));
$mform->setDefault('sub_'.$sub."_".'defaultmark',
$mform->setDefault('sub_'.$sub.'_defaultmark',
$this->questiondisplay->options->questions[$sub]->defaultmark);
if ($this->questiondisplay->options->questions[$sub]->qtype == 'shortanswer') {
$mform->addElement('static', 'sub_'.$sub."_".'usecase',
$mform->addElement('static', 'sub_'.$sub.'_usecase',
get_string('casesensitive', 'qtype_shortanswer'));
}
if ($this->questiondisplay->options->questions[$sub]->qtype == 'multichoice') {
$mform->addElement('static', 'sub_'.$sub."_".'layout',
$mform->addElement('static', 'sub_'.$sub.'_layout',
get_string('layout', 'qtype_multianswer'));
}
foreach ($this->questiondisplay->options->questions[$sub]->answer as $key => $ans) {
$mform->addElement('static', 'sub_'.$sub."_".'answer['.$key.']',
$mform->addElement('static', 'sub_'.$sub.'_answer['.$key.']',
get_string('answer', 'question'));
if ($this->questiondisplay->options->questions[$sub]->qtype == 'numerical' &&
$key == 0) {
$mform->addElement('static', 'sub_'.$sub."_".'tolerance['.$key.']',
$mform->addElement('static', 'sub_'.$sub.'_tolerance['.$key.']',
get_string('acceptederror', 'qtype_numerical'));
}
$mform->addElement('static', 'sub_'.$sub."_".'fraction['.$key.']',
$mform->addElement('static', 'sub_'.$sub.'_fraction['.$key.']',
get_string('grade'));
$mform->addElement('static', 'sub_'.$sub."_".'feedback['.$key.']',
$mform->addElement('static', 'sub_'.$sub.'_feedback['.$key.']',
get_string('feedback', 'question'));
}
}
@@ -490,7 +485,7 @@ class qtype_multianswer_edit_form extends question_edit_form {
if (($this->negative_diff > 0 || $this->used_in_quiz &&
($this->negative_diff > 0 || $this->negative_diff < 0 ||
$this->qtype_change))&& $this->confirm == 0) {
$this->qtype_change)) && !$this->confirm) {
$errors['confirm'] =
get_string('confirmsave', 'qtype_multianswer', $this->negative_diff);
}