/**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $result = $this->create_question();
     $result->name = $this->get_question_title($item);
     $result->questiontext = $this->get_question_text($item);
     $result->penalty = $this->get_penalty($item);
     $general_feedbacks = $this->get_general_feedbacks($item);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     $correct_feedbacks = $this->get_correct_feedbacks($item, $general_feedbacks);
     $result->correctfeedback = $this->format_text(implode('<br/>', $correct_feedbacks));
     $partiallycorrect_feedbacks = $this->get_partiallycorrect_feedbacks($item, $general_feedbacks);
     $result->partiallycorrectfeedback = $this->format_text(implode('<br/>', $partiallycorrect_feedbacks));
     $incorrect_feedbacks = $this->get_incorrect_feedbacks($item, $general_feedbacks);
     $result->incorrectfeedback = $this->format_text(implode('<br/>', $incorrect_feedbacks));
     $feedbacks_to_filter_out = array_merge($general_feedbacks, $correct_feedbacks, $partiallycorrect_feedbacks, $incorrect_feedbacks);
     $result->dataset = $this->get_datasets($item);
     $result->defaultgrade = $this->get_maximum_score($item);
     $interaction = self::get_main_interaction($item);
     $result->single = $interaction->maxChoices == 1;
     $result->shuffleanswers = $interaction->shuffle == 'true' || $interaction->shuffle == '';
     $correct_responses = $this->get_correct_responses($item, $interaction);
     $choices = $interaction->all_simpleChoice();
     foreach ($choices as $choice) {
         $answer = $choice->identifier;
         $result->answers[] = $this->to_text($choice);
         $result->feedback[] = $this->format_text($this->get_feedback($item, $interaction, $answer, $feedbacks_to_filter_out));
         $result->fraction[] = $this->get_fraction($item, $interaction, $answer, $result->defaultgrade);
         $result->tolerance[] = 0;
         $result->tolerancetype[] = self::TOLERANCE_TYPE_RELATIVE;
         $result->correctanswerformat[] = $this->get_correctanswerformat($item, $interaction, $answer);
         $result->correctanswerlength[] = $this->get_correctanswerlength($item, $interaction, $answer);
     }
     return $result;
 }
コード例 #2
0
 /**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $result = $this->create_question();
     $result->name = $item->get_title();
     $result->questiontext = $this->get_question_text($item);
     $general_feedbacks = $this->get_general_feedbacks($item);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     $result->showunits = $this->get_showunits($item);
     $result->unit = $this->get_units($item);
     $result->multiplier = $this->get_multipliers($item);
     $result->unitpenalty = $this->get_unitpenalty($item);
     $result->unitsleft = $this->get_unitsleft($item);
     $result->unitgradingtype = $this->get_unitgradingtype($item);
     $result->instructions = $this->format_text($this->get_instruction($item));
     $result->defaultgrade = $this->get_maximum_score($item);
     $result->penalty = $this->get_penalty($item);
     $interaction = self::get_main_interaction($item);
     $answers = $this->get_possible_responses($item, $interaction);
     foreach ($answers as $answer) {
         $result->answer[] = $this->get_answer($item, $answer);
         $result->fraction[] = $this->get_fraction($item, $interaction, $answer, $result->defaultgrade);
         $result->tolerance[] = $this->get_tolerance($item, $interaction, $answer);
         $result->feedback[] = $this->format_text($this->get_feedback($item, $interaction, $answer, $general_feedbacks));
     }
     //todo: * answers
     return $result;
 }
コード例 #3
0
 /**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $result = $this->create_question();
     $result->name = $item->get_title();
     $result->penalty = $this->get_penalty($item);
     $general_feedbacks = $this->get_general_feedbacks($item);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     $result->questiontext = $this->get_question_text($item);
     $interaction = self::get_main_interaction($item);
     $result->defaultgrade = $this->get_maximum_score($item, $interaction);
     $true = strtolower(get_string('true', 'qtype_truefalse'));
     $choices = $interaction->all_simpleChoice();
     foreach ($choices as $choice) {
         $feedback = $this->get_feedback($item, $interaction, $choice->identifier, $general_feedbacks);
         $score = $this->get_score($item, $interaction, $choice->identifier);
         $true_answer = strtolower($choice->value()) === $true;
         $result->correctanswer = $score == 0 ? !$true_answer : $true_answer;
         if ($true_answer) {
             $result->feedbacktrue = $this->format_text($feedback);
         } else {
             $result->feedbackfalse = $this->format_text($feedback);
         }
     }
     return $result;
 }
コード例 #4
0
 /**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $result = $this->create_question();
     $result->name = $item->get_title();
     $result->questiontext = $this->get_question_text($item);
     $general_feedbacks = $this->get_general_feedbacks($item);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     return $result;
 }
コード例 #5
0
 /**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $text = $this->to_cloze($item);
     $result = qtype_multianswer_extract_question($text);
     $result->resources = array();
     $result->questiontextformat = FORMAT_HTML;
     $general_feedbacks = $this->get_general_feedbacks($item);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     $result->name = $item->get_title();
     $result->penalty = $this->get_penalty($item);
     return $result;
 }
 static function factory(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $category = $settings->get_category();
     //if it is a reimport
     if ($data = $settings->get_data()) {
         if ($data->qtype == 'calculatedsimple') {
             return new self($category);
         } else {
             return null;
         }
     }
     $accept = !is_null(CalculatedBuilder::factory($item, $source_root, $target_root)) && $item->toolName == self::get_tool_name() && $item->toolVersion >= Qti::get_tool_version() && $item->label == 'calculatedsimple';
     if ($accept) {
         return new self($category);
     } else {
         return null;
     }
 }
コード例 #7
0
 /**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $result = $this->create_question();
     $result->name = $item->get_title();
     $result->questiontext = $this->get_question_text($item);
     $result->penalty = $this->get_penalty($item);
     $general_feedbacks = $this->get_general_feedbacks($item);
     $correct_feedbacks = $this->get_correct_feedbacks($item, $general_feedbacks);
     $partiallycorrect_feedbacks = $this->get_partiallycorrect_feedbacks($item, $general_feedbacks);
     $incorrect_feedbacks = $this->get_incorrect_feedbacks($item, $general_feedbacks);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     $result->correctfeedback = $this->format_text(implode('<br/>', $correct_feedbacks));
     $result->partiallycorrectfeedback = $this->format_text(implode('<br/>', $partiallycorrect_feedbacks));
     $result->incorrectfeedback = $this->format_text(implode('<br/>', $incorrect_feedbacks));
     $result->dataset = $this->get_datasets($item);
     $result->showunits = $this->get_showunits($item);
     $result->unit = $this->get_units($item);
     $result->multiplier = $this->get_multipliers($item);
     $result->unitpenalty = $this->get_unitpenalty($item);
     $result->unitsleft = $this->get_unitsleft($item);
     $result->unitgradingtype = $this->get_unitgradingtype($item);
     $result->instructions = $this->format_text($this->get_instruction($item));
     $result->defaultgrade = $this->get_maximum_score($item);
     $interaction = $this->get_main_interaction($item);
     $formulas = $this->get_score_formulas($item, $interaction);
     foreach ($formulas as $formula) {
         $result->answers[] = $this->render_formula($formula);
         $result->feedback[] = $this->format_text($this->get_feedback($item, $interaction, $formula, $general_feedbacks));
         $result->fraction[] = $this->get_fraction($item, $interaction, $formula, $result->defaultgrade);
         $result->tolerance[] = $this->get_tolerance($item, $interaction, $formula);
         $result->tolerancetype[] = $this->get_tolerancetype($item, $interaction, $formula);
         $result->correctanswerformat[] = $this->get_correctanswerformat($item, $interaction, $formula);
         $result->correctanswerlength[] = $this->get_correctanswerlength($item, $interaction, $formula);
     }
     return $result;
 }
コード例 #8
0
 /**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $result = $this->create_question();
     $result->name = $item->get_title();
     $result->questiontext = $this->get_question_text($item);
     $result->penalty = $this->get_penalty($item);
     $result->usecase = $this->is_case_sensitive($item);
     $general_feedbacks = $this->get_general_feedbacks($item);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     $result->defaultgrade = $this->get_maximum_score($item);
     $interaction = self::get_main_interaction($item);
     $responses = $this->get_possible_responses($item, $interaction);
     foreach ($responses as $response) {
         $result->answer[] = $this->get_response_text($item, $response);
         $result->feedback[] = $this->format_text($this->get_feedback($item, $interaction, $response, $general_feedbacks));
         $result->fraction[] = $this->get_fraction($item, $interaction, $response, $result->defaultgrade);
     }
     return $result;
 }
コード例 #9
0
 /**
  * Build questions using the QTI format. Doing a projection by interpreting the file.
  *
  * @param QtiImportSettings $settings
  * @return object|null
  */
 public function build_qti(QtiImportSettings $settings)
 {
     $item = $settings->get_reader();
     $result = $this->create_question();
     $result->name = $item->get_title();
     $result->questiontext = $this->get_question_text($item);
     $result->penalty = $this->get_penalty($item);
     $general_feedbacks = $this->get_general_feedbacks($item);
     $result->generalfeedback = implode('<br/>', $general_feedbacks);
     $interaction = self::get_main_interaction($item);
     //$interaction->maxAssociations not handled by moodle
     $result->shuffleanswers = $interaction->shuffle == 'true' || $interaction->shuffle == '';
     $max = $this->get_maximum_score($item, $interaction);
     $result->defaultgrade = $max;
     $entries = $this->get_entries($item, $interaction);
     foreach ($entries as $entry) {
         $result->subquestions[] = $this->format_text($entry->question->text);
         $result->subanswers[] = $entry->answer->text;
     }
     return $result;
 }