ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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 ()
 
 getSrcPoolDefListRelatedQuestCombinationCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 getSrcPoolDefListRelatedQuestUniqueCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 getSrcPoolDefRelatedQuestCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 

Static Public Member Functions

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

Protected Member Functions

 __construct (protected ilDBInterface $db, protected ilLanguage $lng, protected TestLogger $logger, 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 29 of file class.ilTestRandomQuestionSetBuilder.php.

Constructor & Destructor Documentation

◆ __construct()

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

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

41 {
42 $this->stagingPoolQuestionList->setTestObjId($this->testOBJ->getId());
43 $this->stagingPoolQuestionList->setTestId($this->testOBJ->getTestId());
44 }

Member Function Documentation

◆ buildSetQuestionCollection()

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

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

114 {
115 $setQuestionCollection = new ilTestRandomQuestionSetQuestionCollection();
116
117 foreach ($questionIds as $questionId) {
118 $setQuestion = new ilTestRandomQuestionSetQuestion();
119
120 $setQuestion->setQuestionId($questionId);
121 $setQuestion->setSourcePoolDefinitionId($definition->getId());
122
123 $setQuestionCollection->addQuestion($setQuestion);
124 }
125
126 return $setQuestionCollection;
127 }

References ilTestRandomQuestionSetSourcePoolDefinition\getId().

Referenced by getSrcPoolDefRelatedQuestCollection().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ checkBuildable()

ilTestRandomQuestionSetBuilder::checkBuildable ( )
abstract

◆ fetchQuestionsFromStageRandomly()

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

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

177 {
178 $questionSet = $questionStage->getRandomQuestionCollection($requiredQuestionAmount);
179
180 return $questionSet;
181 }

References ilTestRandomQuestionSetQuestionCollection\getRandomQuestionCollection().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCheckMessages()

ilTestRandomQuestionSetBuilder::getCheckMessages ( )
Returns
array

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

References $checkMessages.

◆ getInstance()

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

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

200 {
201 if ($questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
203 $db,
204 $lng,
205 $logger,
206 $testOBJ,
207 $questionSetConfig,
208 $sourcePoolDefinitionList,
209 $stagingPoolQuestionList
210 );
211 }
212
214 $db,
215 $lng,
216 $logger,
217 $testOBJ,
218 $questionSetConfig,
219 $sourcePoolDefinitionList,
220 $stagingPoolQuestionList
221 );
222 }
global $lng
Definition: privfeed.php:31

References $lng, and ilTestRandomQuestionSetConfig\isQuestionAmountConfigurationModePerPool().

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

+ 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 86 of file class.ilTestRandomQuestionSetBuilder.php.

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

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

Referenced by getSrcPoolDefRelatedQuestCollection().

+ 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 50 of file class.ilTestRandomQuestionSetBuilder.php.

51 {
52 $questionStage = new ilTestRandomQuestionSetQuestionCollection();
53
54 foreach ($sourcePoolDefinitionList as $definition) {
55 $questions = $this->getSrcPoolDefRelatedQuestCollection($definition);
56 $questionStage->mergeQuestionCollection($questions);
57 }
58
59 return $questionStage;
60 }
getSrcPoolDefRelatedQuestCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition)

References getSrcPoolDefRelatedQuestCollection().

Referenced by getSrcPoolDefListRelatedQuestUniqueCollection().

+ 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 79 of file class.ilTestRandomQuestionSetBuilder.php.

80 {
81 $combinationCollection = $this->getSrcPoolDefListRelatedQuestCombinationCollection($sourcePoolDefinitionList);
82 return $combinationCollection->getUniqueQuestionCollection();
83 }
getSrcPoolDefListRelatedQuestCombinationCollection(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)

References getSrcPoolDefListRelatedQuestCombinationCollection().

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

+ 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 66 of file class.ilTestRandomQuestionSetBuilder.php.

67 {
68 $questionIds = $this->getQuestionIdsForSourcePoolDefinitionIds($definition);
69 $questionStage = $this->buildSetQuestionCollection($definition, $questionIds);
70
71 return $questionStage;
72 }
buildSetQuestionCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition, $questionIds)
getQuestionIdsForSourcePoolDefinitionIds(ilTestRandomQuestionSetSourcePoolDefinition $definition)

References buildSetQuestionCollection(), and getQuestionIdsForSourcePoolDefinitionIds().

Referenced by getSrcPoolDefListRelatedQuestCombinationCollection().

+ 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 183 of file class.ilTestRandomQuestionSetBuilder.php.

184 {
185 if ($this->testOBJ->getShuffleQuestions()) {
186 $questionSet->shuffleQuestions();
187 }
188 }

References ilTestRandomQuestionSetQuestionCollection\shuffleQuestions().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

+ 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 129 of file class.ilTestRandomQuestionSetBuilder.php.

129 : bool
130 {
131 if (!count($definition->getMappedTaxonomyFilter())) {
132 return false;
133 }
134 return true;
135 }

References ilTestRandomQuestionSetSourcePoolDefinition\getMappedTaxonomyFilter().

Referenced by getQuestionIdsForSourcePoolDefinitionIds().

+ 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 138 of file class.ilTestRandomQuestionSetBuilder.php.

138 : bool
139 {
140 if (count($definition->getTypeFilter())) {
141 return true;
142 }
143
144 return false;
145 }

References ilTestRandomQuestionSetSourcePoolDefinition\getTypeFilter().

Referenced by getQuestionIdsForSourcePoolDefinitionIds().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ performBuild()

ilTestRandomQuestionSetBuilder::performBuild ( ilTestSession  $testSession)
abstract

◆ storeQuestion()

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

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

162 {
163 $nextId = $this->db->nextId('tst_test_rnd_qst');
164
165 $this->db->insert('tst_test_rnd_qst', [
166 'test_random_question_id' => ['integer', $nextId],
167 'active_fi' => ['integer', $testSession->getActiveId()],
168 'question_fi' => ['integer', $setQuestion->getQuestionId()],
169 'sequence' => ['integer', $setQuestion->getSequencePosition()],
170 'pass' => ['integer', $testSession->getPass()],
171 'tstamp' => ['integer', time()],
172 'src_pool_def_fi' => ['integer', $setQuestion->getSourcePoolDefinitionId()]
173 ]);
174 }

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

Referenced by storeQuestionSet().

+ 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 148 of file class.ilTestRandomQuestionSetBuilder.php.

149 {
150 $position = 0;
151
152 foreach ($questionSet->getQuestions() as $setQuestion) {
153 /* @var ilTestRandomQuestionSetQuestion $setQuestion */
154
155 $setQuestion->setSequencePosition($position++);
156
157 $this->storeQuestion($testSession, $setQuestion);
158 }
159 }
storeQuestion(ilTestSession $testSession, ilTestRandomQuestionSetQuestion $setQuestion)

References storeQuestion().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

+ 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 31 of file class.ilTestRandomQuestionSetBuilder.php.

Referenced by getCheckMessages().


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