ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
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, $mappedTaxonomyFilter)
 
 updateRelatedSourcePoolDefinitions (ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, $derivedPoolId, $nonAvailablePoolId)
 

Protected Attributes

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

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

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

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

References $component_repository, $ilDB, and $testOBJ.

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

Member Function Documentation

◆ buildOriginalTaxonomyFilterForDerivedPool()

ilTestRandomQuestionSetPoolDeriver::buildOriginalTaxonomyFilterForDerivedPool ( ilQuestionPoolDuplicatedTaxonomiesKeysMap  $taxKeysMap,
  $mappedTaxonomyFilter 
)
protected

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

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

Referenced by updateRelatedSourcePoolDefinitions().

206  : array
207  {
208  $originalTaxonomyFilter = array();
209 
210  foreach ($mappedTaxonomyFilter as $testTaxonomyId => $testTaxNodes) {
211  $poolTaxonomyId = $taxKeysMap->getMappedTaxonomyId($testTaxonomyId);
212  $originalTaxonomyFilter[$poolTaxonomyId] = array();
213 
214  foreach ($testTaxNodes as $testTaxNode) {
215  $poolTaxNode = $taxKeysMap->getMappedTaxNodeId($testTaxNode);
216  $originalTaxonomyFilter[$poolTaxonomyId][] = $poolTaxNode;
217  }
218  }
219 
220  return $originalTaxonomyFilter;
221  }
+ 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 137 of file class.ilTestRandomQuestionSetPoolDeriver.php.

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

Referenced by derive().

137  : array
138  {
139  $poolQidByTestQidMap = array();
140 
141  foreach ($questions as $questionOBJ) {
142  /* @var assQuestion $questionOBJ */
143 
144  $testQuestionId = $questionOBJ->getId();
145  $poolQuestionId = $questionOBJ->duplicate(false, '', '', $this->getOwnerId(), $pool->getId());
146 
147  $poolQidByTestQidMap[$testQuestionId] = $poolQuestionId;
148  }
149 
150  return $poolQidByTestQidMap;
151  }
+ 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 125 of file class.ilTestRandomQuestionSetPoolDeriver.php.

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

Referenced by derive().

126  {
127  $pool = $this->poolFactory->createNewInstance($this->getTargetContainerRef());
128 
129  if (strlen($nonAvailablePool->getTitle())) {
130  $pool->setTitle($nonAvailablePool->getTitle());
131  $pool->update();
132  }
133 
134  return $pool;
135  }
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 245 of file class.ilTestRandomQuestionSetPoolDeriver.php.

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

246  {
247  $pool = $this->createNewPool($nonAvailablePool);
248  $questions = $this->getQuestionsForPool($nonAvailablePool);
249 
250  $poolQidByTestQidMap = $this->copyQuestionsToPool($pool, $questions);
251 
252  $this->updateTestQuestionStage($poolQidByTestQidMap);
253 
254  $duplicatedTaxKeysMap = $this->duplicateTaxonomies($poolQidByTestQidMap, $pool);
255 
256  $this->updateRelatedSourcePoolDefinitions($duplicatedTaxKeysMap, $pool->getId(), $nonAvailablePool->getId());
257 
258  return $pool;
259  }
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  require_once 'Modules/TestQuestionPool/classes/class.ilQuestionPoolTaxonomiesDuplicator.php';
191  $taxDuplicator = new ilQuestionPoolTaxonomiesDuplicator();
192  $taxDuplicator->setSourceObjId($this->testOBJ->getId());
193  $taxDuplicator->setSourceObjType($this->testOBJ->getType());
194  $taxDuplicator->setTargetObjId($pool->getId());
195  $taxDuplicator->setTargetObjType($pool->getType());
196  $taxDuplicator->setQuestionIdMapping($poolQidByTestQidMap);
197 
198  $taxDuplicator->duplicate($this->filterForQuestionRelatedTaxonomies(
199  $taxDuplicator->getAllTaxonomiesForSourceObject(),
200  array_keys($poolQidByTestQidMap)
201  ));
202 
203  return $taxDuplicator->getDuplicatedTaxonomiesKeysMap();
204  }
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 161 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References ilTaxNodeAssignment\getAssignmentsOfItem().

Referenced by duplicateTaxonomies().

161  : array
162  {
163  require_once 'Services/Taxonomy/classes/class.ilTaxNodeAssignment.php';
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 74 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 103 of file class.ilTestRandomQuestionSetPoolDeriver.php.

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

Referenced by derive().

103  : array
104  {
106  $this->db,
107  $this->component_repository
108  );
109 
110  $questionList->setTestObjId($this->testOBJ->getId());
111  $questionList->setTestId($this->testOBJ->getTestId());
112  $questionList->setPoolId($nonAvailablePool->getId());
113 
114  $questionList->loadQuestions();
115 
116  $questions = array();
117  $list = $questionList->getQuestions();
118  foreach ($list as $questionId) {
119  $questions[] = assQuestion::_instantiateQuestion($questionId);
120  }
121 
122  return $questions;
123  }
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 58 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 82 of file class.ilTestRandomQuestionSetPoolDeriver.php.

References $ownerId.

◆ setSourcePoolDefinitionList()

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

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

References $sourcePoolDefinitionList.

99  {
100  $this->sourcePoolDefinitionList = $sourcePoolDefinitionList;
101  }

◆ setTargetContainerRef()

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

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

References $targetContainerRef.

67  {
68  $this->targetContainerRef = $targetContainerRef;
69  }

◆ updateRelatedSourcePoolDefinitions()

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

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

References buildOriginalTaxonomyFilterForDerivedPool(), and getSourcePoolDefinitionList().

Referenced by derive().

224  {
225  foreach ($this->getSourcePoolDefinitionList() as $definition) {
226  if ($definition->getPoolId() != $nonAvailablePoolId) {
227  continue;
228  }
229 
230  $definition->setPoolId($derivedPoolId);
231 
232  $definition->setOriginalTaxonomyFilter($this->buildOriginalTaxonomyFilterForDerivedPool(
233  $taxKeysMap,
234  $definition->getMappedTaxonomyFilter()
235  ));
236 
237  $definition->saveToDb();
238  }
239  }
buildOriginalTaxonomyFilterForDerivedPool(ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, $mappedTaxonomyFilter)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateTestQuestionStage()

ilTestRandomQuestionSetPoolDeriver::updateTestQuestionStage (   $poolQidByTestQidMap)
protected

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

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

Referenced by derive().

154  {
155  foreach ($poolQidByTestQidMap as $testQid => $poolQid) {
157  assQuestion::saveOriginalId($testQid, $poolQid);
158  }
159  }
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 28 of file class.ilTestRandomQuestionSetPoolDeriver.php.

Referenced by __construct().

◆ $db

ilDBInterface ilTestRandomQuestionSetPoolDeriver::$db
protected

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

◆ $ownerId

ilTestRandomQuestionSetPoolDeriver::$ownerId
protected

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

Referenced by getOwnerId(), and setOwnerId().

◆ $poolFactory

ilQuestionPoolFactory ilTestRandomQuestionSetPoolDeriver::$poolFactory
protected

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

◆ $sourcePoolDefinitionList

ilTestRandomQuestionSetPoolDeriver::$sourcePoolDefinitionList
protected

◆ $targetContainerRef

ilTestRandomQuestionSetPoolDeriver::$targetContainerRef
protected

◆ $testOBJ

ilObjTest ilTestRandomQuestionSetPoolDeriver::$testOBJ
protected

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

Referenced by __construct().


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