/**
  * Build questions using moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     $a = reset($data->options->answers);
     $result->feedback = $this->format_text($a->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();
     $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 moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     $result->dataset = $data->options->datasets;
     $result->single = $data->options->single;
     $result->shuffleanswers = $data->options->shuffleanswers;
     $result->answernumbering = $data->options->answernumbering;
     $result->synchronize = $data->options->synchronize;
     $answers = $data->options->answers;
     foreach ($answers as $a) {
         $result->answers[] = $a->answer;
         $result->feedback[] = $this->format_text($a->feedback);
         $result->fraction[] = $a->fraction;
         $result->tolerance[] = $a->tolerance;
         $result->tolerancetype[] = $a->tolerancetype;
         $result->correctanswerformat[] = $a->correctanswerformat;
         $result->correctanswerlength[] = $a->correctanswerlength;
     }
     $datasets = $data->options->datasets;
     foreach ($result->dataset as $ds) {
         $ds->min = $ds->minimum;
         $ds->max = $ds->maximum;
         $ds->length = end(explode(':', $ds->options));
         $ds->datasetitem = $ds->items;
     }
     return $result;
 }
 /**
  * Build questions using moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     $true_answer = $data->options->answers[$data->options->trueanswer];
     $false_answer = $data->options->answers[$data->options->falseanswer];
     $result->feedbacktrue = $this->format_text($true_answer->feedback);
     $result->feedbackfalse = $this->format_text($false_answer->feedback);
     $result->correctanswer = intval($true_answer->fraction) == 1;
     return $result;
 }
 /**
  * Build questions using moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     return $result;
 }
 /**
  * Build questions using moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     $result->single = $data->options->single;
     $result->shuffleanswers = $data->options->shuffleanswers;
     $result->answernumbering = $data->options->layout;
     $answers = $data->options->answers;
     foreach ($answers as $a) {
         $result->answer[] = $a->answer;
         $result->feedback[] = $this->format_text($a->feedback);
         $result->fraction[] = $a->fraction;
     }
     return $result;
 }
 /**
  * Build questions using moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     $result->usecase = $data->options->usecase;
     foreach ($data->options->answers as $a) {
         $result->answer[] = $a->answer;
         $result->feedback[] = $this->format_text($a->feedback);
         $result->fraction[] = $a->fraction;
     }
     return $result;
 }
 /**
  * Build questions using moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     $result->instructions = $this->format_text($data->options->instructions);
     $result->showunits = $data->options->showunits;
     $result->unitsleft = $data->options->unitsleft;
     $result->unitgradingtype = $data->options->unitgradingtype;
     $result->unitpenalty = $data->options->unitpenalty;
     $result->multiplier = array();
     $result->unit = array();
     $units = $data->options->units;
     foreach ($units as $u) {
         $result->multiplier[] = $u->multiplier;
         $result->unit[] = $u->unit;
     }
     $answers = $data->options->answers;
     foreach ($answers as $a) {
         $result->answer[] = $a->answer;
         $result->fraction[] = $a->fraction;
         $result->tolerance[] = $a->tolerance;
         $result->feedback[] = $this->format_text($a->feedback);
     }
     return $result;
 }
 /**
  * Build questions using moodle serialized data. Used for reimport, i.e. from Moodle to Moodle.
  * Used to process data not supported by QTI and to improve performances.
  *
  * @param QtiImportSettings $data
  * @return object|null
  */
 public function build_moodle(QtiImportSettings $settings)
 {
     $data = $settings->get_data();
     $result = parent::build_moodle($settings);
     $result->shuffleanswers = $data->options->shuffleanswers;
     $result->subquestions = array();
     $result->subanswers = array();
     foreach ($data->options->subquestions as $q) {
         $result->subquestions[] = $this->format_text($q->questiontext);
         $result->subanswers[] = $q->answertext;
     }
     return $result;
 }
 protected function translate(QtiImportSettings $settings, $question, $text)
 {
     $pattern = '/src="[^"]*"/';
     $matches = array();
     preg_match_all($pattern, $text, $matches, PREG_SET_ORDER);
     foreach ($matches as $match) {
         $match = reset($match);
         $match = str_replace('src="', '', $match);
         $match = trim($match, '"');
         $replace = $this->translate_path($match);
         $text = str_ireplace('src="' . $match . '"', 'src="' . $replace . '"', $text);
         $name = end(explode('/', $match));
         $question->resources[$name] = $settings->get_directory() . $match;
     }
     return $text;
 }