19 declare(strict_types=1);
42 $this->stagingPoolQuestionList->setTestObjId($this->testOBJ->getId());
43 $this->stagingPoolQuestionList->setTestId($this->testOBJ->getTestId());
54 foreach ($sourcePoolDefinitionList as $definition) {
56 $question_stage->mergeQuestionCollection($questions);
59 return $question_stage;
75 ->getUniqueQuestionCollection();
81 $this->stagingPoolQuestionList->resetQuestionList();
82 $this->stagingPoolQuestionList->setPoolId($definition->
getPoolId());
86 $this->stagingPoolQuestionList->addTaxonomyFilter($tax_id, $node_ids);
95 $this->stagingPoolQuestionList->setTypeFilter($definition->
getTypeFilter());
98 $this->stagingPoolQuestionList->loadQuestions();
99 return $this->stagingPoolQuestionList->getQuestions();
108 foreach ($question_ids as $question_id) {
110 $set_question->setQuestionId($question_id);
111 $set_question->setSourcePoolDefinitionId($definition->
getId());
112 $set_question_collection->addQuestion($set_question);
115 return $set_question_collection;
142 foreach ($question_set->
getQuestions() as $set_question) {
143 $set_question->setSequencePosition($position++);
152 $next_id = $this->db->nextId(
'tst_test_rnd_qst');
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()],
159 'pass' => [
'integer', $test_session->
getPass()],
160 'tstamp' => [
'integer', time()],
167 int $requiredQuestionAmount
175 if ($this->testOBJ->getShuffleQuestions()) {
198 $sourcePoolDefinitionList,
199 $stagingPoolQuestionList
209 $sourcePoolDefinitionList,
210 $stagingPoolQuestionList
getSrcPoolDefListRelatedQuestUniqueCollection(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
buildSetQuestionCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition, array $question_ids)
storeQuestionSet(ilTestSession $test_session, ilTestRandomQuestionSetQuestionCollection $question_set)
fetchQuestionsFromStageRandomly(ilTestRandomQuestionSetQuestionCollection $questionStage, int $requiredQuestionAmount)
storeQuestion(ilTestSession $test_session, ilTestRandomQuestionSetQuestion $set_question)
static getInstance(ilDBInterface $db, ilLanguage $lng, TestLogger $logger, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
isQuestionAmountConfigurationModePerPool()
getSourcePoolDefinitionId()
__construct(protected ilDBInterface $db, protected ilLanguage $lng, protected TestLogger $logger, protected ilObjTest $testOBJ, protected ilTestRandomQuestionSetConfig $questionSetConfig, protected ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, protected ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
getQuestionIdsForSourcePoolDefinitionIds(ilTestRandomQuestionSetSourcePoolDefinition $definition)
hasTypeFilter(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getSrcPoolDefRelatedQuestCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition)
hasTaxonomyFilter(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getRandomQuestionCollection(int $requiredAmount)
getSrcPoolDefListRelatedQuestCombinationCollection(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
performBuild(ilTestSession $testSession)
handleQuestionOrdering(ilTestRandomQuestionSetQuestionCollection $question_set)
getMappedTaxonomyFilter()