ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
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 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  {
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 
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...
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)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
ilQuestionPoolDuplicatedTaxonomiesKeysMap $duplicated_taxonomies_keys_map
static saveUsage(int $a_tax_id, int $a_obj_id)