ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilQuestionPoolTaxonomiesDuplicator.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
28{
29 private ?int $source_obj_id = null;
30
31 private ?string $source_obj_type = null;
32
33 private ?int $target_obj_id = null;
34
35 private ?string $target_obj_type = null;
36
40 private array $question_id_mapping = [];
41
43
44 public function __construct()
45 {
46 $this->duplicated_taxonomies_keys_map = new ilQuestionPoolDuplicatedTaxonomiesKeysMap();
47 }
48
49 public function setSourceObjId(int $source_obj_id): void
50 {
51 $this->source_obj_id = $source_obj_id;
52 }
53
54 public function getSourceObjId(): ?int
55 {
57 }
58
59 public function getSourceObjType(): ?string
60 {
62 }
63
64 public function setSourceObjType(string $source_obj_type): void
65 {
66 $this->source_obj_type = $source_obj_type;
67 }
68
69 public function getTargetObjId(): ?int
70 {
72 }
73
74 public function setTargetObjId(int $target_obj_id): void
75 {
76 $this->target_obj_id = $target_obj_id;
77 }
78
79 public function getTargetObjType(): ?string
80 {
82 }
83
84 public function setTargetObjType(string $target_obj_type): void
85 {
86 $this->target_obj_type = $target_obj_type;
87 }
88
92 public function setQuestionIdMapping(array $question_id_mapping): void
93 {
94 $this->question_id_mapping = $question_id_mapping;
95 }
96
100 public function getQuestionIdMapping(): array
101 {
103 }
104
109 public function duplicate(array $pool_taxonomy_ids): void
110 {
111 foreach ($pool_taxonomy_ids as $pool_tax_id) {
112 $this->duplicateTaxonomyFromPoolToTest($pool_tax_id);
113
115 $pool_tax_id,
116 $this->duplicated_taxonomies_keys_map->getMappedTaxonomyId($pool_tax_id)
117 );
118 }
119 }
120
121 private function duplicateTaxonomyFromPoolToTest(int $pool_taxonomy_id): void
122 {
123 $pool_taxonomy = new ilObjTaxonomy($pool_taxonomy_id);
124 $test_taxonomy = new ilObjTaxonomy();
125 $test_taxonomy->create();
126 $test_taxonomy->setTitle($pool_taxonomy->getTitle());
127 $test_taxonomy->setDescription($pool_taxonomy->getDescription());
128 $test_taxonomy->setSortingMode($pool_taxonomy->getSortingMode());
129
130 $pool_taxonomy->cloneNodes(
131 $test_taxonomy,
132 $test_taxonomy->getTree()->readRootId(),
133 $pool_taxonomy->getTree()->readRootId()
134 );
135
136 $test_taxonomy->update();
137
138 ilObjTaxonomy::saveUsage($test_taxonomy->getId(), $this->getTargetObjId());
139
140 $this->duplicated_taxonomies_keys_map->addDuplicatedTaxonomy($pool_taxonomy, $test_taxonomy);
141 }
142
143 private function transferAssignmentsFromOriginalToDuplicatedTaxonomy(int $original_taxonomy_id, int $mapped_taxonomy_id): void
144 {
145 $original_tax_assignment = new ilTaxNodeAssignment($this->getSourceObjType(), $this->getSourceObjId(), 'quest', $original_taxonomy_id);
146
147 $duplicate_tax_assignment = new ilTaxNodeAssignment($this->getTargetObjType(), $this->getTargetObjId(), 'quest', $mapped_taxonomy_id);
148
149 foreach ($this->getQuestionIdMapping() as $original_question_id => $duplicated_question_id) {
150 $assignments = $original_tax_assignment->getAssignmentsOfItem($original_question_id);
151
152 foreach ($assignments as $ass_data) {
153 $mapped_node_id = $this->duplicated_taxonomies_keys_map->getMappedTaxNodeId($ass_data['node_id']);
154
155 $duplicate_tax_assignment->addAssignment($mapped_node_id, $duplicated_question_id);
156 }
157 }
158 }
159
164 {
166 }
167
168 public function getAllTaxonomiesForSourceObject(): array
169 {
171 }
172}
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getUsageOfObject(int $a_obj_id, bool $a_include_titles=false)
static saveUsage(int $a_tax_id, int $a_obj_id)
transferAssignmentsFromOriginalToDuplicatedTaxonomy(int $original_taxonomy_id, int $mapped_taxonomy_id)
ilQuestionPoolDuplicatedTaxonomiesKeysMap $duplicated_taxonomies_keys_map
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...