31 string $importdirectory,
37 int &$question_counter,
43 $this->
object->setTitle($item->
getTitle());
44 $this->
object->setComment($item->
getComment());
45 $this->
object->setAuthor($item->
getAuthor());
46 $this->
object->setOwner($user_id);
48 $this->
object->setObjId($questionpool_id);
49 if (preg_match_all(
"/(\\\$v\\d+)/ims", $this->
object->getQuestion(), $matches)) {
50 foreach ($matches[1] as $variable) {
52 $unit = $this->
object->getUnitRepository()->getUnit((
int)
$data[
"unitvalue"]);
54 $this->
object->addVariable($varObj);
57 if (preg_match_all(
"/(\\\$r\\d+)/ims", $this->
object->getQuestion(), $rmatches)) {
58 foreach ($rmatches[1] as $result) {
60 $unit = $this->
object->getUnitRepository()->getUnit((
int)
$data[
"unitvalue"]);
61 if (!is_array(
$data[
"rating"])) {
64 $resObj =
new assFormulaQuestionResult($result,
$data[
"rangemin"],
$data[
"rangemax"],
$data[
"tolerance"], $unit,
$data[
"formula"],
$data[
"points"],
$data[
"precision"],
false,
$data[
"rating"][
"sign"],
$data[
"rating"][
"value"],
$data[
"rating"][
"unit"]);
66 if (array_key_exists(
'resulttype',
$data)) {
67 $resObj->setResultType(
$data[
"resulttype"]);
69 $this->
object->addResult($resObj);
70 if (is_array(
$data[
"resultunits"])) {
71 foreach (
$data[
"resultunits"] as $resu) {
72 $ru = $this->
object->getUnitRepository()->getUnit($resu[
"unitvalue"]);
74 $this->
object->addResultUnit($resObj, $ru);
83 $this->
object->setAdditionalContentEditingMode(
86 $this->
object->saveToDb();
88 $this->importUnitsAndUnitCategories($item);
91 $questiontext = $this->
object->getQuestion();
96 $importfile = $importdirectory . DIRECTORY_SEPARATOR . $mob[
"uri"];
99 $questiontext = str_replace(
"src=\"" . $mob[
"mob"] .
"\"",
"src=\"" .
"il_" .
IL_INST_ID .
"_mob_" . $media_object->getId() .
"\"", $questiontext);
101 foreach ($feedbacksgeneric as $correctness => $material) {
102 $feedbacksgeneric[$correctness] = str_replace(
"src=\"" . $mob[
"mob"] .
"\"",
"src=\"" .
"il_" .
IL_INST_ID .
"_mob_" . $media_object->getId() .
"\"", $material);
108 foreach ($feedbacksgeneric as $correctness => $material) {
109 $this->
object->feedbackOBJ->importGenericFeedback(
117 $this->
object->setAdditionalContentEditingMode(
120 $this->
object->saveToDb();
128 return $import_mapping;
131 private function importUnitsAndUnitCategories(
ilQTIItem $item): void
134 $unit_repository = $this->
object->getUnitrepository();
136 $old_category_id = $unit_category->getId();
138 $unit_category->setQuestionFi($this->
object->getId());
139 $unit_repository->saveNewUnitCategory($unit_category);
145 if ($unit->getCategory() !== $old_category_id) {
149 $old_unit_id = $unit->getId();
150 $old_base_unit_id = $unit->getBaseUnit();
151 $old_unit_factor = $unit->getFactor();
152 $old_sequence = $unit->getSequence();
154 $unit->setCategory($unit_category->getId());
155 $unit->setFactor($old_unit_factor);
156 $unit->setSequence($old_sequence);
158 $unit_repository->createNewUnit($unit);
159 $unit->setBaseUnit($old_base_unit_id);
162 $base_unit_map[$old_unit_id] = $unit->getId();
164 $this->mapAssignedVariableUnits($unit, $old_unit_id);
165 $this->mapAssignedResultUnits($unit, $old_unit_id);
168 foreach ($units as $unit) {
169 $unit->setBaseUnit($base_unit_map[$unit->getBaseUnit()] ?? 0);
170 $unit_repository->saveUnit($unit);
178 foreach ($this->
object->getVariables() as $variable) {
179 $variable_unit = $variable->getUnit();
181 $variable_unit->setId($unit->
getId());
189 foreach ($this->
object->getResults() as $result) {
190 $result_unit = $result->getUnit();
192 $result_unit->setId($unit->
getId());
197 foreach ($this->
object->getAllResultUnits() as $result) {
198 foreach ($result as $result_unit) {
200 $result_unit->setId($unit->
getId());
Class for question imports.
fetchAdditionalContentEditingModeInformation($qtiItem)
fetches the "additional content editing mode" information from qti item and falls back to ADDITIONAL_...
addQuestionToParentObjectAndBuildMappingEntry(int $questionpool_id, ?int $tst_id, int &$question_counter, ?ilObjTest &$tst_object)
QTIMaterialToString(ilQTIMaterial $a_material)
Reads an QTI material tag and creates a text or XHTML string.
addGeneralMetadata(ilQTIItem $item)
getFeedbackGeneric($item)
importSuggestedSolutions(int $question_id, array $solution_from_import)
Class ilObject Basic functions for all objects.
getMetadataEntry(string $a_label)
static _replaceMediaObjectImageSrc(string $a_text, int $a_direction=0, string $nic='')
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
static get(string $a_var)