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

Public Member Functions

 checkBuildable ()
 
 performBuild (ilTestSession $testSession)
 
 getSrcPoolDefListRelatedQuestCombinationCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 getSrcPoolDefRelatedQuestCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 getSrcPoolDefListRelatedQuestUniqueCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 getCheckMessages ()
 

Static Public Member Functions

static getInstance (ilDBInterface $db, ilLanguage $lng, ilLogger $log, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
 

Protected Member Functions

 __construct (protected ilDBInterface $db, protected ilLanguage $lng, protected ilLogger $log, protected ilObjTest $testOBJ, protected ilTestRandomQuestionSetConfig $questionSetConfig, protected ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, protected ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
 
 storeQuestionSet (ilTestSession $testSession, $questionSet)
 
 fetchQuestionsFromStageRandomly (ilTestRandomQuestionSetQuestionCollection $questionStage, $requiredQuestionAmount)
 
 handleQuestionOrdering (ilTestRandomQuestionSetQuestionCollection $questionSet)
 

Protected Attributes

 $checkMessages = []
 

Private Member Functions

 getQuestionIdsForSourcePoolDefinitionIds (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 buildSetQuestionCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition, $questionIds)
 
 hasTaxonomyFilter (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 hasTypeFilter (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 storeQuestion (ilTestSession $testSession, ilTestRandomQuestionSetQuestion $setQuestion)
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilTestRandomQuestionSetBuilder::__construct ( protected ilDBInterface  $db,
protected ilLanguage  $lng,
protected ilLogger  $log,
protected ilObjTest  $testOBJ,
protected ilTestRandomQuestionSetConfig  $questionSetConfig,
protected ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList,
protected ilTestRandomQuestionSetStagingPoolQuestionList  $stagingPoolQuestionList 
)
protected

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

References checkBuildable(), and performBuild().

39  {
40  $this->stagingPoolQuestionList->setTestObjId($this->testOBJ->getId());
41  $this->stagingPoolQuestionList->setTestId($this->testOBJ->getTestId());
42  }
+ Here is the call graph for this function:

Member Function Documentation

◆ buildSetQuestionCollection()

ilTestRandomQuestionSetBuilder::buildSetQuestionCollection ( ilTestRandomQuestionSetSourcePoolDefinition  $definition,
  $questionIds 
)
private

Definition at line 111 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetSourcePoolDefinition\getId().

Referenced by getSrcPoolDefRelatedQuestCollection().

112  {
113  $setQuestionCollection = new ilTestRandomQuestionSetQuestionCollection();
114 
115  foreach ($questionIds as $questionId) {
116  $setQuestion = new ilTestRandomQuestionSetQuestion();
117 
118  $setQuestion->setQuestionId($questionId);
119  $setQuestion->setSourcePoolDefinitionId($definition->getId());
120 
121  $setQuestionCollection->addQuestion($setQuestion);
122  }
123 
124  return $setQuestionCollection;
125  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkBuildable()

ilTestRandomQuestionSetBuilder::checkBuildable ( )
abstract

Referenced by __construct().

+ Here is the caller graph for this function:

◆ fetchQuestionsFromStageRandomly()

ilTestRandomQuestionSetBuilder::fetchQuestionsFromStageRandomly ( ilTestRandomQuestionSetQuestionCollection  $questionStage,
  $requiredQuestionAmount 
)
protected

◆ getCheckMessages()

ilTestRandomQuestionSetBuilder::getCheckMessages ( )
Returns
array

Definition at line 226 of file class.ilTestRandomQuestionSetBuilder.php.

References $checkMessages.

226  : array
227  {
228  return $this->checkMessages;
229  }

◆ getInstance()

static ilTestRandomQuestionSetBuilder::getInstance ( ilDBInterface  $db,
ilLanguage  $lng,
ilLogger  $log,
ilObjTest  $testOBJ,
ilTestRandomQuestionSetConfig  $questionSetConfig,
ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList,
ilTestRandomQuestionSetStagingPoolQuestionList  $stagingPoolQuestionList 
)
staticfinal

Definition at line 190 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetConfig\isQuestionAmountConfigurationModePerPool().

Referenced by ilTestOutputGUI\generateRandomTestPassForActiveUser(), and ilTestRandomQuestionSetConfig\isQuestionSetBuildable().

198  {
199  if ($questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
201  $db,
202  $lng,
203  $log,
204  $testOBJ,
205  $questionSetConfig,
206  $sourcePoolDefinitionList,
207  $stagingPoolQuestionList
208  );
209  }
210 
212  $db,
213  $lng,
214  $log,
215  $testOBJ,
216  $questionSetConfig,
217  $sourcePoolDefinitionList,
218  $stagingPoolQuestionList
219  );
220  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getQuestionIdsForSourcePoolDefinitionIds()

ilTestRandomQuestionSetBuilder::getQuestionIdsForSourcePoolDefinitionIds ( ilTestRandomQuestionSetSourcePoolDefinition  $definition)
private

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

References ilTestRandomQuestionSetSourcePoolDefinition\getLifecycleFilter(), ilTestRandomQuestionSetSourcePoolDefinition\getMappedTaxonomyFilter(), ilTestRandomQuestionSetSourcePoolDefinition\getPoolId(), ilTestRandomQuestionSetSourcePoolDefinition\getTypeFilter(), hasTaxonomyFilter(), and hasTypeFilter().

Referenced by getSrcPoolDefRelatedQuestCollection().

84  : array
85  {
86  $this->stagingPoolQuestionList->resetQuestionList();
87 
88  $this->stagingPoolQuestionList->setPoolId($definition->getPoolId());
89 
90  if ($this->hasTaxonomyFilter($definition)) {
91  foreach ($definition->getMappedTaxonomyFilter() as $taxId => $nodeIds) {
92  $this->stagingPoolQuestionList->addTaxonomyFilter($taxId, $nodeIds);
93  }
94  }
95 
96  if (count($definition->getLifecycleFilter())) {
97  $this->stagingPoolQuestionList->setLifecycleFilter($definition->getLifecycleFilter());
98  }
99 
100  // fau: taxFilter/typeFilter - use type filter
101  if ($this->hasTypeFilter($definition)) {
102  $this->stagingPoolQuestionList->setTypeFilter($definition->getTypeFilter());
103  }
104  // fau.
105 
106  $this->stagingPoolQuestionList->loadQuestions();
107 
108  return $this->stagingPoolQuestionList->getQuestions();
109  }
hasTypeFilter(ilTestRandomQuestionSetSourcePoolDefinition $definition)
hasTaxonomyFilter(ilTestRandomQuestionSetSourcePoolDefinition $definition)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSrcPoolDefListRelatedQuestCombinationCollection()

ilTestRandomQuestionSetBuilder::getSrcPoolDefListRelatedQuestCombinationCollection ( ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList)
Parameters
ilTestRandomQuestionSetSourcePoolDefinitionList$sourcePoolDefinitionList
Returns
ilTestRandomQuestionSetQuestionCollection

Implements ilTestRandomSourcePoolDefinitionQuestionCollectionProvider.

Definition at line 48 of file class.ilTestRandomQuestionSetBuilder.php.

References getSrcPoolDefRelatedQuestCollection().

Referenced by getSrcPoolDefListRelatedQuestUniqueCollection().

49  {
50  $questionStage = new ilTestRandomQuestionSetQuestionCollection();
51 
52  foreach ($sourcePoolDefinitionList as $definition) {
53  $questions = $this->getSrcPoolDefRelatedQuestCollection($definition);
54  $questionStage->mergeQuestionCollection($questions);
55  }
56 
57  return $questionStage;
58  }
getSrcPoolDefRelatedQuestCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSrcPoolDefListRelatedQuestUniqueCollection()

ilTestRandomQuestionSetBuilder::getSrcPoolDefListRelatedQuestUniqueCollection ( ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList)
Parameters
ilTestRandomQuestionSetSourcePoolDefinitionList$sourcePoolDefinitionList
Returns
ilTestRandomQuestionSetQuestionCollection

Implements ilTestRandomSourcePoolDefinitionQuestionCollectionProvider.

Definition at line 77 of file class.ilTestRandomQuestionSetBuilder.php.

References getSrcPoolDefListRelatedQuestCombinationCollection().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerPool\checkBuildable(), ilTestRandomQuestionSetBuilderWithAmountPerTest\checkBuildable(), and ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

78  {
79  $combinationCollection = $this->getSrcPoolDefListRelatedQuestCombinationCollection($sourcePoolDefinitionList);
80  return $combinationCollection->getUniqueQuestionCollection();
81  }
getSrcPoolDefListRelatedQuestCombinationCollection(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSrcPoolDefRelatedQuestCollection()

ilTestRandomQuestionSetBuilder::getSrcPoolDefRelatedQuestCollection ( ilTestRandomQuestionSetSourcePoolDefinition  $definition)
Parameters
ilTestRandomQuestionSetSourcePoolDefinition$definition
Returns
ilTestRandomQuestionSetQuestionCollection

Implements ilTestRandomSourcePoolDefinitionQuestionCollectionProvider.

Definition at line 64 of file class.ilTestRandomQuestionSetBuilder.php.

References buildSetQuestionCollection(), and getQuestionIdsForSourcePoolDefinitionIds().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerPool\checkBuildable(), and getSrcPoolDefListRelatedQuestCombinationCollection().

65  {
66  $questionIds = $this->getQuestionIdsForSourcePoolDefinitionIds($definition);
67  $questionStage = $this->buildSetQuestionCollection($definition, $questionIds);
68 
69  return $questionStage;
70  }
buildSetQuestionCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition, $questionIds)
getQuestionIdsForSourcePoolDefinitionIds(ilTestRandomQuestionSetSourcePoolDefinition $definition)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleQuestionOrdering()

ilTestRandomQuestionSetBuilder::handleQuestionOrdering ( ilTestRandomQuestionSetQuestionCollection  $questionSet)
protected

Definition at line 181 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetQuestionCollection\shuffleQuestions().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerPool\checkBuildable(), and ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

182  {
183  if ($this->testOBJ->getShuffleQuestions()) {
184  $questionSet->shuffleQuestions();
185  }
186  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasTaxonomyFilter()

ilTestRandomQuestionSetBuilder::hasTaxonomyFilter ( ilTestRandomQuestionSetSourcePoolDefinition  $definition)
private

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

References ilTestRandomQuestionSetSourcePoolDefinition\getMappedTaxonomyFilter().

Referenced by getQuestionIdsForSourcePoolDefinitionIds().

127  : bool
128  {
129  if (!count($definition->getMappedTaxonomyFilter())) {
130  return false;
131  }
132  return true;
133  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasTypeFilter()

ilTestRandomQuestionSetBuilder::hasTypeFilter ( ilTestRandomQuestionSetSourcePoolDefinition  $definition)
private

Definition at line 136 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetSourcePoolDefinition\getTypeFilter().

Referenced by getQuestionIdsForSourcePoolDefinitionIds().

136  : bool
137  {
138  if (count($definition->getTypeFilter())) {
139  return true;
140  }
141 
142  return false;
143  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ performBuild()

ilTestRandomQuestionSetBuilder::performBuild ( ilTestSession  $testSession)
abstract

Referenced by __construct(), and ilTestRandomQuestionSetBuilderWithAmountPerPool\checkBuildable().

+ Here is the caller graph for this function:

◆ storeQuestion()

ilTestRandomQuestionSetBuilder::storeQuestion ( ilTestSession  $testSession,
ilTestRandomQuestionSetQuestion  $setQuestion 
)
private

Definition at line 159 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestSession\getActiveId(), ilTestSession\getPass(), ilTestRandomQuestionSetQuestion\getQuestionId(), ilTestRandomQuestionSetQuestion\getSequencePosition(), and ilTestRandomQuestionSetQuestion\getSourcePoolDefinitionId().

Referenced by storeQuestionSet().

160  {
161  $nextId = $this->db->nextId('tst_test_rnd_qst');
162 
163  $this->db->insert('tst_test_rnd_qst', array(
164  'test_random_question_id' => array('integer', $nextId),
165  'active_fi' => array('integer', $testSession->getActiveId()),
166  'question_fi' => array('integer', $setQuestion->getQuestionId()),
167  'sequence' => array('integer', $setQuestion->getSequencePosition()),
168  'pass' => array('integer', $testSession->getPass()),
169  'tstamp' => array('integer', time()),
170  'src_pool_def_fi' => array('integer', $setQuestion->getSourcePoolDefinitionId())
171  ));
172  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ storeQuestionSet()

ilTestRandomQuestionSetBuilder::storeQuestionSet ( ilTestSession  $testSession,
  $questionSet 
)
protected

Definition at line 146 of file class.ilTestRandomQuestionSetBuilder.php.

References storeQuestion().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerPool\checkBuildable(), and ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

147  {
148  $position = 0;
149 
150  foreach ($questionSet->getQuestions() as $setQuestion) {
151  /* @var ilTestRandomQuestionSetQuestion $setQuestion */
152 
153  $setQuestion->setSequencePosition($position++);
154 
155  $this->storeQuestion($testSession, $setQuestion);
156  }
157  }
storeQuestion(ilTestSession $testSession, ilTestRandomQuestionSetQuestion $setQuestion)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $checkMessages

ilTestRandomQuestionSetBuilder::$checkMessages = []
protected

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

Referenced by getCheckMessages().


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