Beispiel #1
0
 public function on_generate_response_processing()
 {
     parent::on_generate_response_processing();
     //respconditions
     /**
      * General unconditional feedback must be added as a first respcondition
      * without any condition and just displayfeedback (if exists)
      */
     cc_assesment_helper::add_respcondition($this->qresprocessing, 'General feedback', $this->general_feedback, null, true);
     //success condition
     /**
      * For all question types outside of the Essay question, scoring is done in a
      * single <respcondition> with a continue flag set to No. The outcome is always
      * a variable named SCORE which value must be set to 100 in case of correct answer.
      * Partial scores (not 0 or 100) are not supported.
      */
     $qrespcondition = new cc_assesment_respconditiontype();
     $qrespcondition->set_title('Correct');
     $this->qresprocessing->add_respcondition($qrespcondition);
     $qrespcondition->enable_continue(false);
     $qsetvar = new cc_assignment_setvartype(100);
     $qrespcondition->add_setvar($qsetvar);
     //define the condition for success
     $qconditionvar = new cc_assignment_conditionvar();
     $qrespcondition->set_conditionvar($qconditionvar);
     //create root and condition
     $qandcondition = new cc_assignment_conditionvar_andtype();
     $qconditionvar->set_and($qandcondition);
     foreach ($this->answerlist as $ident => $refid) {
         $qvarequal = new cc_assignment_conditionvar_varequaltype($ident);
         $qvarequal->enable_case();
         if ($refid[1]) {
             $qandcondition->set_varequal($qvarequal);
         } else {
             $qandcondition->set_not($qvarequal);
         }
         $qvarequal->set_respident($this->qresponse_lid->get_ident());
     }
     $qdisplayfeedback = new cc_assignment_displayfeedbacktype();
     $qrespcondition->add_displayfeedback($qdisplayfeedback);
     $qdisplayfeedback->set_feedbacktype(cc_qti_values::Response);
     //TODO: this needs to be fixed
     reset($this->correct_feedbacks);
     $ident = key($this->correct_feedbacks);
     $qdisplayfeedback->set_linkrefid($ident);
     //rest of the conditions
     foreach ($this->answerlist as $ident => $refid) {
         cc_assesment_helper::add_response_condition($this->qresprocessing, 'Incorrect feedback', $refid[0], $this->general_feedback, $this->qresponse_lid->get_ident());
     }
     //Final element for incorrect feedback
     reset($this->incorrect_feedbacks);
     $ident = key($this->incorrect_feedbacks);
     cc_assesment_helper::add_respcondition($this->qresprocessing, 'Incorrect feedback', $ident, 0);
 }
 public function generate(XMLGenericDocument &$doc, DOMNode &$item, $namespace)
 {
     $node = $doc->append_new_element_ns($item, $namespace, cc_qti_tags::conditionvar);
     if (!empty($this->and)) {
         $this->and->generate($doc, $node, $namespace);
     }
     if (!empty($this->other)) {
         $this->other->generate($doc, $node, $namespace);
     }
     if (!empty($this->varequal)) {
         $this->varequal->generate($doc, $node, $namespace);
     }
     if (!empty($this->varsubstring)) {
         $this->varsubstring->generate($doc, $node, $namespace);
     }
 }