ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilQuestionPoolTaxonomiesDuplicator.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
5require_once 'Services/Taxonomy/classes/class.ilTaxonomyTree.php';
6require_once 'Services/Taxonomy/classes/class.ilTaxNodeAssignment.php';
7require_once 'Modules/TestQuestionPool/classes/class.ilQuestionPoolDuplicatedTaxonomiesKeysMap.php';
8
16{
17 private $sourceObjId = null;
18
19 private $sourceObjType = null;
20
21 private $targetObjId = null;
22
23 private $targetObjType = null;
24
28 private $questionIdMapping = null;
29
34
35 public function __construct()
36 {
37 $this->duplicatedTaxonomiesKeysMap = new ilQuestionPoolDuplicatedTaxonomiesKeysMap();
38 }
39
41 {
42 $this->sourceObjId = $sourceObjId;
43 }
44
45 public function getSourceObjId()
46 {
47 return $this->sourceObjId;
48 }
49
50 public function getSourceObjType()
51 {
53 }
54
56 {
57 $this->sourceObjType = $sourceObjType;
58 }
59
60 public function getTargetObjId()
61 {
62 return $this->targetObjId;
63 }
64
66 {
67 $this->targetObjId = $targetObjId;
68 }
69
70 public function getTargetObjType()
71 {
73 }
74
76 {
77 $this->targetObjType = $targetObjType;
78 }
79
81 {
82 $this->questionIdMapping = $questionIdMapping;
83 }
84
85 public function getQuestionIdMapping()
86 {
88 }
89
90 public function duplicate()
91 {
92 $poolTaxonomyIds = ilObjTaxonomy::getUsageOfObject($this->getSourceObjId());
93
94 foreach($poolTaxonomyIds as $poolTaxId)
95 {
96 $this->duplicateTaxonomyFromPoolToTest($poolTaxId);
97
99 $poolTaxId, $this->duplicatedTaxonomiesKeysMap->getMappedTaxonomyId($poolTaxId)
100 );
101 }
102 }
103
104 private function duplicateTaxonomyFromPoolToTest($poolTaxonomyId)
105 {
106 $testTaxonomy = new ilObjTaxonomy();
107 $testTaxonomy->create();
108
109 $poolTaxonomy = new ilObjTaxonomy($poolTaxonomyId);
110 $poolTaxonomy->doCloneObject($testTaxonomy, null, null);
111
112 $poolTaxonomy->getTree()->readRootId();
113 $testTaxonomy->getTree()->readRootId();
114
115 $testTaxonomy->update();
116
117 ilObjTaxonomy::saveUsage( $testTaxonomy->getId(), $this->getTargetObjId() );
118
119 $this->duplicatedTaxonomiesKeysMap->addDuplicatedTaxonomy($poolTaxonomy, $testTaxonomy);
120 }
121
122 private function transferAssignmentsFromOriginalToDuplicatedTaxonomy($originalTaxonomyId, $mappedTaxonomyId)
123 {
124 $originalTaxAssignment = new ilTaxNodeAssignment($this->getSourceObjType(), $this->getSourceObjId(), 'quest', $originalTaxonomyId);
125
126 $duplicatedTaxAssignment = new ilTaxNodeAssignment($this->getTargetObjType(), $this->getTargetObjId(), 'quest', $mappedTaxonomyId);
127
128 foreach($this->getQuestionIdMapping() as $originalQuestionId => $duplicatedQuestionId)
129 {
130 $assignments = $originalTaxAssignment->getAssignmentsOfItem($originalQuestionId);
131
132 foreach($assignments as $assData)
133 {
134 $mappedNodeId = $this->duplicatedTaxonomiesKeysMap->getMappedTaxNodeId($assData['node_id']);
135
136 $duplicatedTaxAssignment->addAssignment($mappedNodeId, $duplicatedQuestionId);
137 }
138 }
139 }
140
145 {
147 }
148}
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
static saveUsage($a_tax_id, $a_obj_id)
Save Usage.
transferAssignmentsFromOriginalToDuplicatedTaxonomy($originalTaxonomyId, $mappedTaxonomyId)
Taxonomy node <-> item assignment.