ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
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, 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 $test_session, ilTestRandomQuestionSetQuestionCollection $question_set)
 
 fetchQuestionsFromStageRandomly (ilTestRandomQuestionSetQuestionCollection $questionStage, int $requiredQuestionAmount)
 
 handleQuestionOrdering (ilTestRandomQuestionSetQuestionCollection $question_set)
 

Protected Attributes

 $checkMessages = []
 

Private Member Functions

 getQuestionIdsForSourcePoolDefinitionIds (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 buildSetQuestionCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition, array $question_ids)
 
 hasTaxonomyFilter (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 hasTypeFilter (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 storeQuestion (ilTestSession $test_session, ilTestRandomQuestionSetQuestion $set_question)
 

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.

References checkBuildable(), and performBuild().

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

Member Function Documentation

◆ buildSetQuestionCollection()

ilTestRandomQuestionSetBuilder::buildSetQuestionCollection ( ilTestRandomQuestionSetSourcePoolDefinition  $definition,
array  $question_ids 
)
private

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

References ilTestRandomQuestionSetSourcePoolDefinition\getId().

Referenced by getSrcPoolDefRelatedQuestCollection().

106  $set_question_collection = new ilTestRandomQuestionSetQuestionCollection();
107 
108  foreach ($question_ids as $question_id) {
109  $set_question = new ilTestRandomQuestionSetQuestion();
110  $set_question->setQuestionId($question_id);
111  $set_question->setSourcePoolDefinitionId($definition->getId());
112  $set_question_collection->addQuestion($set_question);
113  }
114 
115  return $set_question_collection;
116  }
+ 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,
int  $requiredQuestionAmount 
)
protected

◆ getCheckMessages()

ilTestRandomQuestionSetBuilder::getCheckMessages ( )

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

References $checkMessages.

214  : array
215  {
216  return $this->checkMessages;
217  }

◆ getInstance()

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

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

References ilTestRandomQuestionSetConfig\isQuestionAmountConfigurationModePerPool().

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

190  {
191  if ($questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
193  $db,
194  $lng,
195  $logger,
196  $testOBJ,
197  $questionSetConfig,
198  $sourcePoolDefinitionList,
199  $stagingPoolQuestionList
200  );
201  }
202 
204  $db,
205  $lng,
206  $logger,
207  $testOBJ,
208  $questionSetConfig,
209  $sourcePoolDefinitionList,
210  $stagingPoolQuestionList
211  );
212  }
+ 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 78 of file class.ilTestRandomQuestionSetBuilder.php.

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

Referenced by getSrcPoolDefRelatedQuestCollection().

80  : array {
81  $this->stagingPoolQuestionList->resetQuestionList();
82  $this->stagingPoolQuestionList->setPoolId($definition->getPoolId());
83 
84  if ($this->hasTaxonomyFilter($definition)) {
85  foreach ($definition->getMappedTaxonomyFilter() as $tax_id => $node_ids) {
86  $this->stagingPoolQuestionList->addTaxonomyFilter($tax_id, $node_ids);
87  }
88  }
89 
90  if ($definition->getLifecycleFilter() !== []) {
91  $this->stagingPoolQuestionList->setLifecycleFilter($definition->getLifecycleFilter());
92  }
93 
94  if ($this->hasTypeFilter($definition)) {
95  $this->stagingPoolQuestionList->setTypeFilter($definition->getTypeFilter());
96  }
97 
98  $this->stagingPoolQuestionList->loadQuestions();
99  return $this->stagingPoolQuestionList->getQuestions();
100  }
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 50 of file class.ilTestRandomQuestionSetBuilder.php.

References getSrcPoolDefRelatedQuestCollection().

Referenced by getSrcPoolDefListRelatedQuestUniqueCollection().

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

◆ getSrcPoolDefListRelatedQuestUniqueCollection()

ilTestRandomQuestionSetBuilder::getSrcPoolDefListRelatedQuestUniqueCollection ( ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList)

◆ getSrcPoolDefRelatedQuestCollection()

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

Implements ilTestRandomSourcePoolDefinitionQuestionCollectionProvider.

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

References buildSetQuestionCollection(), and getQuestionIdsForSourcePoolDefinitionIds().

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

65  return $this->buildSetQuestionCollection(
66  $definition,
68  );
69  }
buildSetQuestionCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition, array $question_ids)
getQuestionIdsForSourcePoolDefinitionIds(ilTestRandomQuestionSetSourcePoolDefinition $definition)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleQuestionOrdering()

ilTestRandomQuestionSetBuilder::handleQuestionOrdering ( ilTestRandomQuestionSetQuestionCollection  $question_set)
protected

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

References ilTestRandomQuestionSetQuestionCollection\shuffleQuestions().

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

174  : void {
175  if ($this->testOBJ->getShuffleQuestions()) {
176  $question_set->shuffleQuestions();
177  }
178  }
+ 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 118 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetSourcePoolDefinition\getMappedTaxonomyFilter().

Referenced by getQuestionIdsForSourcePoolDefinitionIds().

120  : bool {
121  if ($definition->getMappedTaxonomyFilter() === []) {
122  return false;
123  }
124  return true;
125  }
+ 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 127 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetSourcePoolDefinition\getTypeFilter().

Referenced by getQuestionIdsForSourcePoolDefinitionIds().

129  : bool {
130  if ($definition->getTypeFilter() === []) {
131  return false;
132  }
133 
134  return true;
135  }
+ 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().

+ Here is the caller graph for this function:

◆ storeQuestion()

ilTestRandomQuestionSetBuilder::storeQuestion ( ilTestSession  $test_session,
ilTestRandomQuestionSetQuestion  $set_question 
)
private

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

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

Referenced by storeQuestionSet().

151  : void {
152  $next_id = $this->db->nextId('tst_test_rnd_qst');
153 
154  $this->db->insert('tst_test_rnd_qst', [
155  'test_random_question_id' => ['integer', $next_id],
156  'active_fi' => ['integer', $test_session->getActiveId()],
157  'question_fi' => ['integer', $set_question->getQuestionId()],
158  'sequence' => ['integer', $set_question->getSequencePosition()],
159  'pass' => ['integer', $test_session->getPass()],
160  'tstamp' => ['integer', time()],
161  'src_pool_def_fi' => ['integer', $set_question->getSourcePoolDefinitionId()]
162  ]);
163  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ storeQuestionSet()

ilTestRandomQuestionSetBuilder::storeQuestionSet ( ilTestSession  $test_session,
ilTestRandomQuestionSetQuestionCollection  $question_set 
)
protected

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

References ilTestRandomQuestionSetQuestionCollection\getQuestions(), and storeQuestion().

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

140  : void {
141  $position = 0;
142  foreach ($question_set->getQuestions() as $set_question) {
143  $set_question->setSequencePosition($position++);
144  $this->storeQuestion($test_session, $set_question);
145  }
146  }
storeQuestion(ilTestSession $test_session, ilTestRandomQuestionSetQuestion $set_question)
+ 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: