ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
ilTestRandomQuestionSetPoolDeriver Class Reference
+ Collaboration diagram for ilTestRandomQuestionSetPoolDeriver:

Public Member Functions

 __construct (ilDBInterface $ilDB, ilComponentRepository $component_repository, ilObjTest $testOBJ)
 
 getTargetContainerRef ()
 
 setTargetContainerRef ($targetContainerRef)
 
 getOwnerId ()
 
 setOwnerId ($ownerId)
 
 getSourcePoolDefinitionList ()
 
 setSourcePoolDefinitionList ($sourcePoolDefinitionList)
 
 derive (ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
 

Protected Member Functions

 getQuestionsForPool (ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
 
 createNewPool (ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
 
 copyQuestionsToPool (ilObjQuestionPool $pool, $questions)
 
 updateTestQuestionStage ($poolQidByTestQidMap)
 
 filterForQuestionRelatedTaxonomies ($taxonomyIds, $relatedQuestionIds)
 
 duplicateTaxonomies ($poolQidByTestQidMap, ilObjQuestionPool $pool)
 
 buildOriginalTaxonomyFilterForDerivedPool (ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, array $mapped_taxonomy_filter)
 
 updateRelatedSourcePoolDefinitions (ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, $derivedPoolId, $nonAvailablePoolId)
 

Protected Attributes

ilDBInterface $db
 
ilComponentRepository $component_repository
 
ilObjTest $testOBJ
 
ilQuestionPoolFactory $poolFactory
 
 $targetContainerRef
 
 $ownerId
 
 $sourcePoolDefinitionList
 

Detailed Description

Definition at line 27 of file class.ilTestRandomQuestionSetPoolDeriver.php.

Constructor & Destructor Documentation

◆ __construct()

ilTestRandomQuestionSetPoolDeriver::__construct ( ilDBInterface  $ilDB,
ilComponentRepository  $component_repository,
ilObjTest  $testOBJ 
)

Definition at line 49 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References $component_repository, $ilDB, and $testOBJ.

50  {
51  $this->db = $ilDB;
52  $this->component_repository = $component_repository;
53  $this->testOBJ = $testOBJ;
54  $this->poolFactory = new ilQuestionPoolFactory();
55  }

Member Function Documentation

◆ buildOriginalTaxonomyFilterForDerivedPool()

ilTestRandomQuestionSetPoolDeriver::buildOriginalTaxonomyFilterForDerivedPool ( ilQuestionPoolDuplicatedTaxonomiesKeysMap  $taxKeysMap,
array  $mapped_taxonomy_filter 
)
protected

Definition at line 205 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References ilQuestionPoolDuplicatedTaxonomiesKeysMap\getMappedTaxNodeId(), and ilQuestionPoolDuplicatedTaxonomiesKeysMap\getMappedTaxonomyId().

Referenced by updateRelatedSourcePoolDefinitions().

208  : array {
209  $original_taxonomy_filter = [];
210  foreach ($mapped_taxonomy_filter as $test_taxonomy_id => $test_tax_nodes) {
211  $pool_taxonomy_id = $taxKeysMap->getMappedTaxonomyId($test_taxonomy_id);
212  if ($pool_taxonomy_id === null) {
213  continue;
214  }
215  $original_taxonomy_filter[$pool_taxonomy_id] = [];
216 
217  foreach ($test_tax_nodes as $test_tax_node) {
218  $pool_tax_node = $taxKeysMap->getMappedTaxNodeId((int) $test_tax_node);
219  if ($pool_tax_node !== null) {
220  $original_taxonomy_filter[$pool_taxonomy_id][] = $pool_tax_node;
221  }
222  }
223  }
224 
225  return $original_taxonomy_filter;
226  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ copyQuestionsToPool()

ilTestRandomQuestionSetPoolDeriver::copyQuestionsToPool ( ilObjQuestionPool  $pool,
  $questions 
)
protected

Definition at line 139 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References ilObject\getId(), and getOwnerId().

Referenced by derive().

139  : array
140  {
141  $poolQidByTestQidMap = array();
142 
143  foreach ($questions as $questionOBJ) {
144  /* @var assQuestion $questionOBJ */
145 
146  $testQuestionId = $questionOBJ->getId();
147  $poolQuestionId = $questionOBJ->duplicate(false, '', '', $this->getOwnerId(), $pool->getId());
148 
149  $poolQidByTestQidMap[$testQuestionId] = $poolQuestionId;
150  }
151 
152  return $poolQidByTestQidMap;
153  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createNewPool()

ilTestRandomQuestionSetPoolDeriver::createNewPool ( ilTestRandomQuestionSetNonAvailablePool  $nonAvailablePool)
protected

Definition at line 127 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References getTargetContainerRef(), ilTestRandomQuestionSetNonAvailablePool\getTitle(), and ilObject\setTitle().

Referenced by derive().

128  {
129  $pool = $this->poolFactory->createNewInstance($this->getTargetContainerRef());
130 
131  if (strlen($nonAvailablePool->getTitle())) {
132  $pool->setTitle($nonAvailablePool->getTitle());
133  $pool->update();
134  }
135 
136  return $pool;
137  }
setTitle(string $title)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ derive()

ilTestRandomQuestionSetPoolDeriver::derive ( ilTestRandomQuestionSetNonAvailablePool  $nonAvailablePool)
Parameters
ilTestRandomQuestionSetNonAvailablePool$nonAvailablePool
Returns
ilObjQuestionPool

Definition at line 250 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References copyQuestionsToPool(), createNewPool(), duplicateTaxonomies(), ilTestRandomQuestionSetNonAvailablePool\getId(), getQuestionsForPool(), updateRelatedSourcePoolDefinitions(), and updateTestQuestionStage().

251  {
252  $pool = $this->createNewPool($nonAvailablePool);
253  $questions = $this->getQuestionsForPool($nonAvailablePool);
254 
255  $poolQidByTestQidMap = $this->copyQuestionsToPool($pool, $questions);
256 
257  $this->updateTestQuestionStage($poolQidByTestQidMap);
258 
259  $duplicatedTaxKeysMap = $this->duplicateTaxonomies($poolQidByTestQidMap, $pool);
260 
261  $this->updateRelatedSourcePoolDefinitions($duplicatedTaxKeysMap, $pool->getId(), $nonAvailablePool->getId());
262 
263  return $pool;
264  }
copyQuestionsToPool(ilObjQuestionPool $pool, $questions)
duplicateTaxonomies($poolQidByTestQidMap, ilObjQuestionPool $pool)
getQuestionsForPool(ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
updateRelatedSourcePoolDefinitions(ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, $derivedPoolId, $nonAvailablePoolId)
createNewPool(ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
+ Here is the call graph for this function:

◆ duplicateTaxonomies()

ilTestRandomQuestionSetPoolDeriver::duplicateTaxonomies (   $poolQidByTestQidMap,
ilObjQuestionPool  $pool 
)
protected

Definition at line 188 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References filterForQuestionRelatedTaxonomies(), ilObject\getId(), and ilObject\getType().

Referenced by derive().

189  {
190  $taxDuplicator = new ilQuestionPoolTaxonomiesDuplicator();
191  $taxDuplicator->setSourceObjId($this->testOBJ->getId());
192  $taxDuplicator->setSourceObjType($this->testOBJ->getType());
193  $taxDuplicator->setTargetObjId($pool->getId());
194  $taxDuplicator->setTargetObjType($pool->getType());
195  $taxDuplicator->setQuestionIdMapping($poolQidByTestQidMap);
196 
197  $taxDuplicator->duplicate($this->filterForQuestionRelatedTaxonomies(
198  $taxDuplicator->getAllTaxonomiesForSourceObject(),
199  array_keys($poolQidByTestQidMap)
200  ));
201 
202  return $taxDuplicator->getDuplicatedTaxonomiesKeysMap();
203  }
filterForQuestionRelatedTaxonomies($taxonomyIds, $relatedQuestionIds)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ filterForQuestionRelatedTaxonomies()

ilTestRandomQuestionSetPoolDeriver::filterForQuestionRelatedTaxonomies (   $taxonomyIds,
  $relatedQuestionIds 
)
protected

Definition at line 163 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References ilTaxNodeAssignment\getAssignmentsOfItem().

Referenced by duplicateTaxonomies().

163  : array
164  {
165  $filteredTaxIds = array();
166 
167  foreach ($taxonomyIds as $taxonomyId) {
168  $taxNodeAssignment = new ilTaxNodeAssignment(
169  $this->testOBJ->getType(),
170  $this->testOBJ->getId(),
171  'quest',
172  $taxonomyId
173  );
174 
175  foreach ($relatedQuestionIds as $questionId) {
176  $assignedTaxNodes = $taxNodeAssignment->getAssignmentsOfItem($questionId);
177 
178  if (count($assignedTaxNodes)) {
179  $filteredTaxIds[] = $taxonomyId;
180  break;
181  }
182  }
183  }
184 
185  return $filteredTaxIds;
186  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getAssignmentsOfItem(int $a_item_id)
Get assignments for item.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getOwnerId()

ilTestRandomQuestionSetPoolDeriver::getOwnerId ( )
Returns
int

Definition at line 76 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References $ownerId.

Referenced by copyQuestionsToPool().

+ Here is the caller graph for this function:

◆ getQuestionsForPool()

ilTestRandomQuestionSetPoolDeriver::getQuestionsForPool ( ilTestRandomQuestionSetNonAvailablePool  $nonAvailablePool)
protected

Definition at line 105 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References ilTestRandomQuestionSetNonAvailablePool\getId(), and assQuestion\instantiateQuestion().

Referenced by derive().

105  : array
106  {
108  $this->db,
109  $this->component_repository
110  );
111 
112  $questionList->setTestObjId($this->testOBJ->getId());
113  $questionList->setTestId($this->testOBJ->getTestId());
114  $questionList->setPoolId($nonAvailablePool->getId());
115 
116  $questionList->loadQuestions();
117 
118  $questions = array();
119  $list = $questionList->getQuestions();
120  foreach ($list as $questionId) {
121  $questions[] = assQuestion::instantiateQuestion($questionId);
122  }
123 
124  return $questions;
125  }
static instantiateQuestion(int $question_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSourcePoolDefinitionList()

◆ getTargetContainerRef()

ilTestRandomQuestionSetPoolDeriver::getTargetContainerRef ( )
Returns
int

Definition at line 60 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References $targetContainerRef.

Referenced by createNewPool().

+ Here is the caller graph for this function:

◆ setOwnerId()

ilTestRandomQuestionSetPoolDeriver::setOwnerId (   $ownerId)
Parameters
int$ownerId

Definition at line 84 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References $ownerId.

◆ setSourcePoolDefinitionList()

ilTestRandomQuestionSetPoolDeriver::setSourcePoolDefinitionList (   $sourcePoolDefinitionList)
Parameters
ilTestRandomQuestionSetSourcePoolDefinitionList$sourcePoolDefinitionList

Definition at line 100 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References $sourcePoolDefinitionList.

101  {
102  $this->sourcePoolDefinitionList = $sourcePoolDefinitionList;
103  }

◆ setTargetContainerRef()

ilTestRandomQuestionSetPoolDeriver::setTargetContainerRef (   $targetContainerRef)
Parameters
int$targetContainerRef

Definition at line 68 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References $targetContainerRef.

69  {
70  $this->targetContainerRef = $targetContainerRef;
71  }

◆ updateRelatedSourcePoolDefinitions()

ilTestRandomQuestionSetPoolDeriver::updateRelatedSourcePoolDefinitions ( ilQuestionPoolDuplicatedTaxonomiesKeysMap  $taxKeysMap,
  $derivedPoolId,
  $nonAvailablePoolId 
)
protected

Definition at line 228 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References buildOriginalTaxonomyFilterForDerivedPool(), and getSourcePoolDefinitionList().

Referenced by derive().

229  {
230  foreach ($this->getSourcePoolDefinitionList() as $definition) {
231  if ($definition->getPoolId() != $nonAvailablePoolId) {
232  continue;
233  }
234 
235  $definition->setPoolId($derivedPoolId);
236 
237  $definition->setOriginalTaxonomyFilter($this->buildOriginalTaxonomyFilterForDerivedPool(
238  $taxKeysMap,
239  $definition->getMappedTaxonomyFilter()
240  ));
241 
242  $definition->saveToDb();
243  }
244  }
buildOriginalTaxonomyFilterForDerivedPool(ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, array $mapped_taxonomy_filter)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateTestQuestionStage()

ilTestRandomQuestionSetPoolDeriver::updateTestQuestionStage (   $poolQidByTestQidMap)
protected

Definition at line 155 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References assQuestion\resetOriginalId(), and assQuestion\saveOriginalId().

Referenced by derive().

156  {
157  foreach ($poolQidByTestQidMap as $testQid => $poolQid) {
159  assQuestion::saveOriginalId($testQid, $poolQid);
160  }
161  }
static resetOriginalId(int $questionId)
static saveOriginalId(int $questionId, int $originalId)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $component_repository

ilComponentRepository ilTestRandomQuestionSetPoolDeriver::$component_repository
protected

Definition at line 30 of file class.ilTestRandomQuestionSetPoolDeriver.php.

Referenced by __construct().

◆ $db

ilDBInterface ilTestRandomQuestionSetPoolDeriver::$db
protected

Definition at line 29 of file class.ilTestRandomQuestionSetPoolDeriver.php.

◆ $ownerId

ilTestRandomQuestionSetPoolDeriver::$ownerId
protected

Definition at line 42 of file class.ilTestRandomQuestionSetPoolDeriver.php.

Referenced by getOwnerId(), and setOwnerId().

◆ $poolFactory

ilQuestionPoolFactory ilTestRandomQuestionSetPoolDeriver::$poolFactory
protected

Definition at line 32 of file class.ilTestRandomQuestionSetPoolDeriver.php.

◆ $sourcePoolDefinitionList

ilTestRandomQuestionSetPoolDeriver::$sourcePoolDefinitionList
protected

◆ $targetContainerRef

ilTestRandomQuestionSetPoolDeriver::$targetContainerRef
protected

◆ $testOBJ

ilObjTest ilTestRandomQuestionSetPoolDeriver::$testOBJ
protected

Definition at line 31 of file class.ilTestRandomQuestionSetPoolDeriver.php.

Referenced by __construct().


The documentation for this class was generated from the following file: