From 06f80c6ce7437d30cca24317392620f123bd3e4b Mon Sep 17 00:00:00 2001 From: pichetp Date: Sun, 6 Sep 2009 19:06:23 +0000 Subject: [PATCH] MDL-20176 Eliminate all PARAM_CLEAN, MDL-17366 cleaning code --- .../edit_calculatedsimple_form.php | 129 +++++++++--------- 1 file changed, 66 insertions(+), 63 deletions(-) diff --git a/question/type/calculatedsimple/edit_calculatedsimple_form.php b/question/type/calculatedsimple/edit_calculatedsimple_form.php index 5ce7dd658b..33e75d7355 100644 --- a/question/type/calculatedsimple/edit_calculatedsimple_form.php +++ b/question/type/calculatedsimple/edit_calculatedsimple_form.php @@ -104,7 +104,8 @@ class question_edit_calculatedsimple_form extends question_edit_form { }else { // handle reload to get values from the form-elements // answers, datasetdefs and data_items - // verify for the specific dataset values as the other parameters + // In any case the validation step will warn the user of any error in settings the values. + // Verification for the specific dataset values as the other parameters // unints, feeedback etc are handled elsewhere // handle request buttons : // 'analyzequestion' (Identify the wild cards {x..} present in answers) @@ -115,63 +116,64 @@ class question_edit_calculatedsimple_form extends question_edit_form { // the mandatory (i.e. in answers) datasets // to implement : don't do any changes if the question is used in a quiz. // If new datadef, new properties should erase items. + // Most of the data + $datasettoremove = false; + $newdatasetvalues = false ; + $newdataset = false ; $dummyform = new stdClass(); $mandatorydatasets = array(); - - if ( $dummyform->answer =optional_param('answer', '', PARAM_CLEAN)) { // there is always at least one answer... FIXME: sloppy coding - $fraction = optional_param('fraction', '', PARAM_CLEAN); //FIXME: sloppy coding - $feedback = optional_param('feedback', '', PARAM_CLEAN); //FIXME: sloppy coding - $tolerance = optional_param('tolerance', '', PARAM_CLEAN); //FIXME: sloppy coding - $tolerancetype = optional_param('tolerancetype', '', PARAM_CLEAN); //FIXME: sloppy coding - $correctanswerlength = optional_param('correctanswerlength', '', PARAM_CLEAN); //FIXME: sloppy coding - $correctanswerformat = optional_param('correctanswerformat', '', PARAM_CLEAN); //FIXME: sloppy coding - - foreach( $dummyform->answer as $key => $answer ) { - if(trim($answer) != ''){ // just look for non-empty - $this->answer[$key]=new stdClass(); - $this->answer[$key]->answer = $answer; - $this->answer[$key]->fraction = $fraction[$key]; - $this->answer[$key]->feedback = $feedback[$key]; - $this->answer[$key]->tolerance = $tolerance[$key]; - $this->answer[$key]->tolerancetype = $tolerancetype[$key]; - $this->answer[$key]->correctanswerlength = $correctanswerlength[$key]; - $this->answer[$key]->correctanswerformat = $correctanswerformat[$key]; - $this->nonemptyanswer[]= $this->answer[$key]; - $mandatorydatasets +=$this->qtypeobj->find_dataset_names($answer); + // 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 ( $dummyform->answer = optional_param('answer', '', PARAM_NOTAGS)) { // there is always at least one answer... + $tolerance = optional_param('tolerance', '', PARAM_NUMBER); + $tolerancetype = optional_param('tolerancetype', '', PARAM_NUMBER); + $correctanswerlength = optional_param('correctanswerlength', '', PARAM_INT); + $correctanswerformat = optional_param('correctanswerformat', '', PARAM_INT); + + foreach( $dummyform->answer as $key => $answer ) { + if(trim($answer) != ''){ // just look for non-empty + $this->answer[$key]=new stdClass(); + $this->answer[$key]->answer = $answer; + $this->answer[$key]->tolerance = $tolerance[$key]; + $this->answer[$key]->tolerancetype = $tolerancetype[$key]; + $this->answer[$key]->correctanswerlength = $correctanswerlength[$key]; + $this->answer[$key]->correctanswerformat = $correctanswerformat[$key]; + $this->nonemptyanswer[]= $this->answer[$key]; + $mandatorydatasets +=$this->qtypeobj->find_dataset_names($answer); + } } } - } - $this->datasetdefs = array(); - // rebuild datasetdefs from old values - $olddef = optional_param('datasetdef', '', PARAM_CLEAN); //FIXME: sloppy coding - $oldoptions = optional_param('defoptions', '', PARAM_CLEAN); //FIXME: sloppy coding - $calcmin = optional_param('calcmin', '', PARAM_CLEAN); //FIXME: sloppy coding - $calclength = optional_param('calclength', '', PARAM_CLEAN); //FIXME: sloppy coding - $calcmax = optional_param('calcmax', '', PARAM_CLEAN); //FIXME: sloppy coding - $newdatasetvalues = false ; - - for($key = 1 ; $key <= sizeof($olddef) ; $key++) { - $def = $olddef[$key] ; - $this->datasetdefs[$def]= new stdClass ; - $this->datasetdefs[$def]->type = 1; - $this->datasetdefs[$def]->category = 0; - // $this->datasets[$key]->name = $datasetname; - $this->datasetdefs[$def]->options = $oldoptions[$key] ; - $this->datasetdefs[$def]->calcmin = $calcmin[$key] ; - $this->datasetdefs[$def]->calcmax = $calcmax[$key] ; - $this->datasetdefs[$def]->calclength = $calclength[$key] ; - //then compare with new values - if (preg_match('~^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$~', $this->datasetdefs[$def]->options, $regs)) { - if( $this->datasetdefs[$def]->calcmin != $regs[2]|| - $this->datasetdefs[$def]->calcmax != $regs[3] || - $this->datasetdefs[$def]->calclength != $regs[4]){ - $newdatasetvalues = true ; - } - } - $this->datasetdefs[$def]->options="uniform:".$this->datasetdefs[$def]->calcmin.":".$this->datasetdefs[$def]->calcmax.":".$this->datasetdefs[$def]->calclength; - } - - // detect new datasets + $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); + $newdatasetvalues = false ; + for($key = 1 ; $key <= sizeof($olddef) ; $key++) { + $def = $olddef[$key] ; + $this->datasetdefs[$def]= new stdClass ; + $this->datasetdefs[$def]->type = 1; + $this->datasetdefs[$def]->category = 0; + // $this->datasets[$key]->name = $datasetname; + // $this->datasetdefs[$def]->options = $oldoptions[$key] ; + $this->datasetdefs[$def]->calcmin = $calcmin[$key] ; + $this->datasetdefs[$def]->calcmax = $calcmax[$key] ; + $this->datasetdefs[$def]->calclength = $calclength[$key] ; + //then compare with new values + if (preg_match('~^(uniform|loguniform):([^:]*):([^:]*):([0-9]*)$~', $this->datasetdefs[$def]->options, $regs)) { + if( $this->datasetdefs[$def]->calcmin != $regs[2]|| + $this->datasetdefs[$def]->calcmax != $regs[3] || + $this->datasetdefs[$def]->calclength != $regs[4]){ + $newdatasetvalues = true ; + } + } + $this->datasetdefs[$def]->options="uniform:".$this->datasetdefs[$def]->calcmin.":".$this->datasetdefs[$def]->calcmax.":".$this->datasetdefs[$def]->calclength; + } + }// if (olddef... + // detect new datasets $newdataset = false ; foreach ($mandatorydatasets as $datasetname) { if (!isset($this->datasetdefs["1-0-$datasetname"])) { @@ -193,7 +195,8 @@ class question_edit_calculatedsimple_form extends question_edit_form { $datasettoremove = true; unset($this->datasetdefs[$defkey]); } - } + } + } } // handle reload // create items if $newdataset and noofitems > 0 and !$newdatasetvalues // eliminate any items if $newdatasetvalues @@ -206,7 +209,7 @@ class question_edit_calculatedsimple_form extends question_edit_form { } $maxnumber = -1 ; if ( "" !=optional_param('addbutton')){ - $maxnumber = optional_param('selectadd', '', PARAM_CLEAN); //FIXME: sloppy coding + $maxnumber = optional_param('selectadd', '', PARAM_INT); //FIXME: sloppy coding foreach ($this->datasetdefs as $defid => $datasetdef) { $datasetdef->itemcount = $maxnumber; unset($datasetdef->items); @@ -223,9 +226,9 @@ class question_edit_calculatedsimple_form extends question_edit_form { // Handle reload dataset items if ( "" !=optional_param('definition')&& !($datasettoremove ||$newdataset ||$newdatasetvalues )){ $i = 1; - $fromformdefinition = optional_param('definition', '', PARAM_CLEAN); //FIXME: sloppy coding - $fromformnumber = optional_param('number', '', PARAM_CLEAN); //FIXME: sloppy coding - $fromformitemid = optional_param('itemid', '', PARAM_CLEAN); //FIXME: sloppy coding + $fromformdefinition = optional_param('definition', '', PARAM_NOTAGS); + $fromformnumber = optional_param('number', '', PARAM_INT); + $fromformitemid = optional_param('itemid', '', PARAM_INT); ksort($fromformdefinition); foreach($fromformdefinition as $key => $defid) { @@ -488,7 +491,7 @@ class question_edit_calculatedsimple_form extends question_edit_form { $j = $this->noofitems * count($this->datasetdefs); $k = 1 ; if ("" != optional_param('selectshow')){ - $k = optional_param('selectshow', '', PARAM_CLEAN); //FIXME: sloppy coding + $k = optional_param('selectshow', '', PARAM_INT); } for ($i = $this->noofitems; $i >= 1 ; $i--){ @@ -570,7 +573,7 @@ class question_edit_calculatedsimple_form extends question_edit_form { function set_data($question) { $answer = $this->answer; $default_values = array(); - if (count($answer)) { + /* if (count($answer)) { $key = 0; foreach ($answer as $answer){ $default_values['answer['.$key.']'] = $answer->answer; @@ -582,7 +585,7 @@ class question_edit_calculatedsimple_form extends question_edit_form { $default_values['feedback['.$key.']'] = $answer->feedback; $key++; } - } + }*/ if (isset($question->options)){ $units = array_values($question->options->units); // make sure the default unit is at index 0 @@ -664,7 +667,7 @@ class question_edit_calculatedsimple_form extends question_edit_form { $qtext = ""; $qtextremaining = $data['questiontext'] ; $possibledatasets = $this->qtypeobj->find_dataset_names($data['questiontext']); - foreach ($possibledatasets as $name => $value) { + foreach ($possibledatasets as $name => $value) { $qtextremaining = str_replace('{'.$name.'}', '1', $qtextremaining); } while (preg_match('~\{=([^[:space:]}]*)}~', $qtextremaining, $regs1)) { -- 2.39.5