ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilQuestionPoolTaxonomiesDuplicator.php
Go to the documentation of this file.
1 <?php
2 
19 declare(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 $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  {
56  return $this->source_obj_id;
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  {
71  return $this->target_obj_id;
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 
108  public function duplicate(array $pool_taxonomy_ids): void
109  {
110  foreach ($pool_taxonomy_ids as $pool_tax_id) {
111  $this->duplicateTaxonomyFromPoolToTest($pool_tax_id);
112 
114  $pool_tax_id,
115  $this->duplicated_taxonomies_keys_map->getMappedTaxonomyId($pool_tax_id)
116  );
117  }
118  }
119 
120  private function duplicateTaxonomyFromPoolToTest(int $pool_taxonomy_id): void
121  {
122  $pool_taxonomy = new ilObjTaxonomy($pool_taxonomy_id);
123  $test_taxonomy = new ilObjTaxonomy();
124  $test_taxonomy->create();
125  $test_taxonomy->setTitle($pool_taxonomy->getTitle());
126  $test_taxonomy->setDescription($pool_taxonomy->getDescription());
127  $test_taxonomy->setSortingMode($pool_taxonomy->getSortingMode());
128 
129  $pool_taxonomy->cloneNodes(
130  $test_taxonomy,
131  $test_taxonomy->getTree()?->readRootId(),
132  $pool_taxonomy->getTree()?->readRootId()
133  );
134 
135  $test_taxonomy->update();
136 
137  ilObjTaxonomy::saveUsage($test_taxonomy->getId(), $this->getTargetObjId());
138 
139  $this->duplicated_taxonomies_keys_map->addDuplicatedTaxonomy($pool_taxonomy, $test_taxonomy);
140  }
141 
142  private function transferAssignmentsFromOriginalToDuplicatedTaxonomy(int $original_taxonomy_id, int $mapped_taxonomy_id): void
143  {
144  $original_tax_assignment = new ilTaxNodeAssignment($this->getSourceObjType(), $this->getSourceObjId(), 'quest', $original_taxonomy_id);
145 
146  $duplicated_tax_assignment = new ilTaxNodeAssignment($this->getTargetObjType(), $this->getTargetObjId(), 'quest', $mapped_taxonomy_id);
147 
148  foreach ($this->getQuestionIdMapping() as $original_question_id => $duplicated_question_id) {
149  $assignments = $original_tax_assignment->getAssignmentsOfItem($original_question_id);
150 
151  foreach ($assignments as $assignment) {
152  $mapped_node_id = $this->duplicated_taxonomies_keys_map->getMappedTaxNodeId((int) $assignment['node_id']);
153  if ($mapped_node_id !== null) {
154  $duplicated_tax_assignment->addAssignment($mapped_node_id, $duplicated_question_id);
155  }
156  }
157  }
158  }
159 
161  {
163  }
164 
165  public function getAllTaxonomiesForSourceObject(): array
166  {
168  }
169 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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)
transferAssignmentsFromOriginalToDuplicatedTaxonomy(int $original_taxonomy_id, int $mapped_taxonomy_id)
ilQuestionPoolDuplicatedTaxonomiesKeysMap $duplicated_taxonomies_keys_map
static saveUsage(int $a_tax_id, int $a_obj_id)