ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
ilTestRandomQuestionSetBuilder Class Reference
+ Inheritance diagram for ilTestRandomQuestionSetBuilder:
+ Collaboration diagram for ilTestRandomQuestionSetBuilder:

Public Member Functions

 checkBuildable ()
 
 performBuild (ilTestSession $test_session)
 
 getSrcPoolDefListRelatedQuestCombinationCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $source_pool_definition_list)
 
 getSrcPoolDefRelatedQuestCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 getSrcPoolDefListRelatedQuestUniqueCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $source_pool_definition_list)
 
 getCheckMessages ()
 
 getSrcPoolDefListRelatedQuestCombinationCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $source_pool_definition_list)
 
 getSrcPoolDefListRelatedQuestUniqueCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $source_pool_definition_list)
 
 getSrcPoolDefRelatedQuestCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 

Static Public Member Functions

static getInstance (ilDBInterface $db, ilLanguage $lng, TestLogger $logger, ilObjTest $test_obj, ilTestRandomQuestionSetConfig $question_set_config, ilTestRandomQuestionSetSourcePoolDefinitionList $source_pool_definition_list, ilTestRandomQuestionSetStagingPoolQuestionList $staging_pool_question_list)
 

Protected Member Functions

 __construct (protected ilDBInterface $db, protected ilLanguage $lng, protected TestLogger $logger, protected ilObjTest $test_obj, protected ilTestRandomQuestionSetConfig $question_set_config, protected ilTestRandomQuestionSetSourcePoolDefinitionList $source_pool_definition_list, protected ilTestRandomQuestionSetStagingPoolQuestionList $staging_pool_question_list)
 
 storeQuestionSet (ilTestSession $test_session, $question_set)
 
 fetchQuestionsFromStageRandomly (ilTestRandomQuestionSetQuestionCollection $question_stage, $required_question_amount)
 
 handleQuestionOrdering (ilTestRandomQuestionSetQuestionCollection $question_set)
 

Protected Attributes

 $check_messages = []
 

Private Member Functions

 getQuestionIdsForSourcePoolDefinitionIds (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 buildSetQuestionCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition, $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  $test_obj,
protected ilTestRandomQuestionSetConfig  $question_set_config,
protected ilTestRandomQuestionSetSourcePoolDefinitionList  $source_pool_definition_list,
protected ilTestRandomQuestionSetStagingPoolQuestionList  $staging_pool_question_list 
)
protected

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

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

Member Function Documentation

◆ buildSetQuestionCollection()

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

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

118 {
119 $set_question_collection = new ilTestRandomQuestionSetQuestionCollection();
120
121 foreach ($question_ids as $question_id) {
122 $set_question = new ilTestRandomQuestionSetQuestion();
123
124 $set_question->setQuestionId($question_id);
125 $set_question->setSourcePoolDefinitionId($definition->getId());
126
127 $set_question_collection->addQuestion($set_question);
128 }
129
130 return $set_question_collection;
131 }

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  $question_stage,
  $required_question_amount 
)
protected

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

181 {
182 $question_set = $question_stage->getRandomQuestionCollection($required_question_amount);
183
184 return $question_set;
185 }

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

References $check_messages.

◆ getInstance()

static ilTestRandomQuestionSetBuilder::getInstance ( ilDBInterface  $db,
ilLanguage  $lng,
TestLogger  $logger,
ilObjTest  $test_obj,
ilTestRandomQuestionSetConfig  $question_set_config,
ilTestRandomQuestionSetSourcePoolDefinitionList  $source_pool_definition_list,
ilTestRandomQuestionSetStagingPoolQuestionList  $staging_pool_question_list 
)
staticfinal

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

204 {
205 if ($question_set_config->isQuestionAmountConfigurationModePerPool()) {
207 $db,
208 $lng,
209 $logger,
210 $test_obj,
211 $question_set_config,
212 $source_pool_definition_list,
213 $staging_pool_question_list
214 );
215 }
216
218 $db,
219 $lng,
220 $logger,
221 $test_obj,
222 $question_set_config,
223 $source_pool_definition_list,
224 $staging_pool_question_list
225 );
226 }
global $lng
Definition: privfeed.php:26

References $lng, ILIAS\TestQuestionPool\ExportImport\Foundation\Export\$logger, 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->staging_pool_question_list->resetQuestionList();
89
90 $this->staging_pool_question_list->setPoolId($definition->getPoolId());
91
92 if ($this->hasTaxonomyFilter($definition)) {
93 foreach ($definition->getMappedTaxonomyFilter() as $tax_id => $node_ids) {
94 $tax_id = (int) $tax_id;
95 if ($tax_id < 1) {
96 continue;
97 }
98 $this->staging_pool_question_list->addTaxonomyFilter($tax_id, $node_ids);
99 }
100 }
101
102 if (count($definition->getLifecycleFilter())) {
103 $this->staging_pool_question_list->setLifecycleFilter($definition->getLifecycleFilter());
104 }
105
106 // fau: taxFilter/typeFilter - use type filter
107 if ($this->hasTypeFilter($definition)) {
108 $this->staging_pool_question_list->setTypeFilter($definition->getTypeFilter());
109 }
110 // fau.
111
112 $this->staging_pool_question_list->loadQuestions();
113
114 return $this->staging_pool_question_list->getQuestions();
115 }
hasTaxonomyFilter(ilTestRandomQuestionSetSourcePoolDefinition $definition)
hasTypeFilter(ilTestRandomQuestionSetSourcePoolDefinition $definition)

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

Referenced by getSrcPoolDefRelatedQuestCollection().

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

◆ getSrcPoolDefListRelatedQuestCombinationCollection()

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

Implements ilTestRandomSourcePoolDefinitionQuestionCollectionProvider.

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

51 {
52 $question_stage = new ilTestRandomQuestionSetQuestionCollection();
53
54 foreach ($source_pool_definition_list as $definition) {
55 $questions = $this->getSrcPoolDefRelatedQuestCollection($definition);
56 $question_stage->mergeQuestionCollection($questions);
57 }
58
59 return $question_stage;
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  $source_pool_definition_list)
Parameters
ilTestRandomQuestionSetSourcePoolDefinitionList$source_pool_definition_list
Returns
ilTestRandomQuestionSetQuestionCollection

Implements ilTestRandomSourcePoolDefinitionQuestionCollectionProvider.

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

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

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 $question_ids = $this->getQuestionIdsForSourcePoolDefinitionIds($definition);
69 $question_stage = $this->buildSetQuestionCollection($definition, $question_ids);
70
71 return $question_stage;
72 }
getQuestionIdsForSourcePoolDefinitionIds(ilTestRandomQuestionSetSourcePoolDefinition $definition)
buildSetQuestionCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition, $question_ids)

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  $question_set)
protected

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

188 {
189 if ($this->test_obj->getShuffleQuestions()) {
190 $question_set->shuffleQuestions();
191 }
192 }

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

133 : bool
134 {
135 if (!count($definition->getMappedTaxonomyFilter())) {
136 return false;
137 }
138 return true;
139 }

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

142 : bool
143 {
144 if (count($definition->getTypeFilter())) {
145 return true;
146 }
147
148 return false;
149 }

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  $test_session)
abstract

◆ storeQuestion()

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

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

166 {
167 $next_id = $this->db->nextId('tst_test_rnd_qst');
168
169 $this->db->insert('tst_test_rnd_qst', [
170 'test_random_question_id' => ['integer', $next_id],
171 'active_fi' => ['integer', $test_session->getActiveId()],
172 'question_fi' => ['integer', $set_question->getQuestionId()],
173 'sequence' => ['integer', $set_question->getSequencePosition()],
174 'pass' => ['integer', $test_session->getPass()],
175 'tstamp' => ['integer', time()],
176 'src_pool_def_fi' => ['integer', $set_question->getSourcePoolDefinitionId()]
177 ]);
178 }

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  $test_session,
  $question_set 
)
protected

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

153 {
154 $position = 0;
155
156 foreach ($question_set->getQuestions() as $set_question) {
157 /* @var ilTestRandomQuestionSetQuestion $set_question */
158
159 $set_question->setSequencePosition($position++);
160
161 $this->storeQuestion($test_session, $set_question);
162 }
163 }
storeQuestion(ilTestSession $test_session, ilTestRandomQuestionSetQuestion $set_question)

References storeQuestion().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

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

Field Documentation

◆ $check_messages

ilTestRandomQuestionSetBuilder::$check_messages = []
protected

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

Referenced by getCheckMessages().


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