33 string $importdirectory,
39 int &$question_counter,
45 $this->
object->setTitle($item->
getTitle());
46 $this->
object->setComment($item->
getComment());
47 $this->
object->setAuthor($item->
getAuthor());
48 $this->
object->setOwner($user_id);
50 $this->
object->setObjId($questionpool_id);
51 if (preg_match_all(
"/(\\\$v\\d+)/ims", $this->
object->getQuestion(), $matches)) {
52 foreach ($matches[1] as $variable) {
54 $unit = $this->
object->getUnitRepository()->getUnit((
int)
$data[
"unitvalue"]);
56 $this->
object->addVariable($varObj);
59 if (preg_match_all(
"/(\\\$r\\d+)/ims", $this->
object->getQuestion(), $rmatches)) {
60 foreach ($rmatches[1] as $result) {
62 $unit = $this->
object->getUnitRepository()->getUnit((
int)
$data[
"unitvalue"]);
63 if (!is_array(
$data[
"rating"])) {
66 $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"]);
68 if (array_key_exists(
'resulttype',
$data)) {
69 $resObj->setResultType(
$data[
"resulttype"]);
71 $this->
object->addResult($resObj);
72 if (is_array(
$data[
"resultunits"])) {
73 foreach (
$data[
"resultunits"] as $resu) {
74 $ru = $this->
object->getUnitRepository()->getUnit($resu[
"unitvalue"]);
76 $this->
object->addResultUnit($resObj, $ru);
85 $this->
object->setAdditionalContentEditingMode(
88 $this->
object->saveToDb();
90 $this->importUnitsAndUnitCategories($item);
93 $questiontext = $this->
object->getQuestion();
98 $importfile = $importdirectory . DIRECTORY_SEPARATOR . $mob[
"uri"];
101 $questiontext = str_replace(
"src=\"" . $mob[
"mob"] .
"\"",
"src=\"" .
"il_" .
IL_INST_ID .
"_mob_" . $media_object->getId() .
"\"", $questiontext);
103 foreach ($feedbacksgeneric as $correctness => $material) {
104 $feedbacksgeneric[$correctness] = str_replace(
"src=\"" . $mob[
"mob"] .
"\"",
"src=\"" .
"il_" .
IL_INST_ID .
"_mob_" . $media_object->getId() .
"\"", $material);
110 foreach ($feedbacksgeneric as $correctness => $material) {
111 $this->
object->feedbackOBJ->importGenericFeedback(
119 $this->
object->setAdditionalContentEditingMode(
122 $this->
object->saveToDb();
130 return $import_mapping;
133 private function importUnitsAndUnitCategories(
ilQTIItem $item): void
136 $unit_repository = $this->
object->getUnitrepository();
138 $old_category_id = $unit_category->getId();
140 $unit_category->setQuestionFi($this->
object->getId());
141 $unit_repository->saveNewUnitCategory($unit_category);
147 if ($unit->getCategory() !== $old_category_id) {
151 $old_unit_id = $unit->getId();
152 $old_base_unit_id = $unit->getBaseUnit();
153 $old_unit_factor = $unit->getFactor();
154 $old_sequence = $unit->getSequence();
156 $unit->setCategory($unit_category->getId());
157 $unit->setFactor($old_unit_factor);
158 $unit->setSequence($old_sequence);
160 $unit_repository->createNewUnit($unit);
161 $unit->setBaseUnit($old_base_unit_id);
164 $base_unit_map[$old_unit_id] = $unit->getId();
166 $this->mapAssignedVariableUnits($unit, $old_unit_id);
167 $this->mapAssignedResultUnits($unit, $old_unit_id);
170 foreach ($units as $unit) {
171 $unit->setBaseUnit($base_unit_map[$unit->getBaseUnit()] ?? 0);
172 $unit_repository->saveUnit($unit);
180 foreach ($this->
object->getVariables() as $variable) {
181 $variable_unit = $variable->getUnit();
183 $variable_unit->setId($unit->
getId());
191 foreach ($this->
object->getResults() as $result) {
192 $result_unit = $result->getUnit();
194 $result_unit->setId($unit->
getId());
199 foreach ($this->
object->getAllResultUnits() as $result) {
200 foreach ($result as $result_unit) {
202 $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)