/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; } }
/** * 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; }
/** * 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; }
/** * 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; }