ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
ilTestRandomQuestionSetBuilderWithAmountPerPool Class Reference
+ Inheritance diagram for ilTestRandomQuestionSetBuilderWithAmountPerPool:
+ Collaboration diagram for ilTestRandomQuestionSetBuilderWithAmountPerPool:

Public Member Functions

 checkBuildable ()
 
 performBuild (ilTestSession $test_session)
 
- Public Member Functions inherited from ilTestRandomQuestionSetBuilder
 checkBuildable ()
 
 performBuild (ilTestSession $testSession)
 
 getSrcPoolDefListRelatedQuestCombinationCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 getSrcPoolDefRelatedQuestCollection (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 getSrcPoolDefListRelatedQuestUniqueCollection (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 getCheckMessages ()
 

Additional Inherited Members

- Static Public Member Functions inherited from ilTestRandomQuestionSetBuilder
static getInstance (ilDBInterface $db, ilLanguage $lng, TestLogger $logger, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
 
- Protected Member Functions inherited from ilTestRandomQuestionSetBuilder
 __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 inherited from ilTestRandomQuestionSetBuilder
 $checkMessages = []
 

Detailed Description

Member Function Documentation

◆ checkBuildable()

ilTestRandomQuestionSetBuilderWithAmountPerPool::checkBuildable ( )

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

References ILIAS\Repository\lng().

29  : bool
30  {
31  $quantities_distribution = new ilTestRandomQuestionsQuantitiesDistribution(
32  $this->db,
33  $this,
34  $this->sourcePoolDefinitionList
35  );
36  $quantities_distribution->initialise();
37 
38  $is_buildable = true;
39  foreach ($this->sourcePoolDefinitionList as $definition) {
40  $quantity_calculation = $quantities_distribution->calculateQuantities($definition);
41  if ($quantity_calculation->isRequiredAmountGuaranteedAvailable()) {
42  continue;
43  }
44  $is_buildable = false;
45  $this->checkMessages[] = $quantity_calculation->getDistributionReport($this->lng);
46  }
47 
48  return $is_buildable;
49  }
+ Here is the call graph for this function:

◆ performBuild()

ilTestRandomQuestionSetBuilderWithAmountPerPool::performBuild ( ilTestSession  $test_session)

Definition at line 51 of file class.ilTestRandomQuestionSetBuilderWithAmountPerPool.php.

References ilTestRandomQuestionSetBuilder\fetchQuestionsFromStageRandomly(), ilTestRandomQuestionSetBuilder\getSrcPoolDefListRelatedQuestUniqueCollection(), ilTestRandomQuestionSetBuilder\getSrcPoolDefRelatedQuestCollection(), ilTestRandomQuestionSetBuilder\handleQuestionOrdering(), ILIAS\Repository\lng(), ILIAS\Repository\logger(), and ilTestRandomQuestionSetBuilder\storeQuestionSet().

51  : void
52  {
53  $question_set = new ilTestRandomQuestionSetQuestionCollection();
54 
55  foreach ($this->sourcePoolDefinitionList as $definition) {
56  $required_question_amount = $definition->getQuestionAmount();
57 
58  $actual_question_stage = $this->getSrcPoolDefRelatedQuestCollection($definition)
59  ->getRelativeComplementCollection($question_set);
60 
61  if ($actual_question_stage->isGreaterThan($required_question_amount)) {
62  $questions = $this->fetchQuestionsFromStageRandomly($actual_question_stage, $required_question_amount);
63  } else {
64  // fau: fixRandomTestBuildable - log missing questions for a random test rule
65  if ($actual_question_stage->isSmallerThan($required_question_amount)) {
66  if (!isset($translator)) {
67  $translator = new ilTestQuestionFilterLabelTranslator($this->db, $this->lng);
68  $translator->loadLabels($this->sourcePoolDefinitionList);
69  }
70  $this->logger->info("RANDOM TEST: missing questions for: "
71  . implode(" - ", [$definition->getPoolTitle(), $translator->getTaxonomyFilterLabel($definition->getMappedTaxonomyFilter())]));
72  }
73  // fau.
74  $questions = $actual_question_stage;
75  }
76 
77  $question_set->mergeQuestionCollection($questions);
78  }
79 
80  $required_question_amount = $this->sourcePoolDefinitionList->getQuestionAmount();
81  if ($question_set->isSmallerThan($required_question_amount)) {
82  $question_set->mergeQuestionCollection(
84  $this->getSrcPoolDefListRelatedQuestUniqueCollection($this->sourcePoolDefinitionList)
85  ->getRelativeComplementCollection($question_set),
86  $question_set->getMissingCount($required_question_amount)
87  )
88  );
89  }
90 
91  $this->handleQuestionOrdering($question_set);
92 
93  $this->storeQuestionSet($test_session, $question_set);
94  }
getSrcPoolDefListRelatedQuestUniqueCollection(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
storeQuestionSet(ilTestSession $test_session, ilTestRandomQuestionSetQuestionCollection $question_set)
fetchQuestionsFromStageRandomly(ilTestRandomQuestionSetQuestionCollection $questionStage, int $requiredQuestionAmount)
getSrcPoolDefRelatedQuestCollection(ilTestRandomQuestionSetSourcePoolDefinition $definition)
handleQuestionOrdering(ilTestRandomQuestionSetQuestionCollection $question_set)
+ Here is the call graph for this function:

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