19 declare(strict_types=1);
    50         $non_required_db = $this->db;
    72         $this->quest_related_src_pool_def_register = [];
    79         if (!array_key_exists($question_id, $this->quest_related_src_pool_def_register)) {
    83         $this->quest_related_src_pool_def_register[$question_id]->addDefinition($definition);
    88         if (isset($this->quest_related_src_pool_def_register[$question_id])) {
    89             return $this->quest_related_src_pool_def_register[$question_id];
    97         $this->src_pool_def_related_quest_register = [];
   104         if (!isset($this->src_pool_def_related_quest_register[$definition_id])) {
   108         $this->src_pool_def_related_quest_register[$definition_id]->addQuestion($random_set_question);
   113         if (isset($this->src_pool_def_related_quest_register[$definition_id])) {
   114             return $this->src_pool_def_related_quest_register[$definition_id];
   123             $source_pool_definition = $this->source_pool_definition_list->getDefinition(
   124                 $random_question->getSourcePoolDefinitionId()
   128                 $random_question->getSourcePoolDefinitionId(),
   132             if ($source_pool_definition && $random_question->getQuestionId()) {
   134                     $random_question->getQuestionId(),
   135                     $source_pool_definition
   149         return $this->question_collection_provider->getSrcPoolDefListRelatedQuestCombinationCollection(
   150             $this->source_pool_definition_list
   162             $exclusive_qst_collection->addQuestion($question);
   164         return $exclusive_qst_collection;
   170             ->getRelativeComplementCollection(
   176         int $this_definition_id,
   177         int $that_definition_id
   182         return $this_def_related_shared_qst_collection->getIntersectionCollection(
   183             $that_def_related_shared_qst_collection
   193         $intersectionQstCollectionsByDefId = [];
   196         foreach ($sharedQuestionCollection as $sharedQuestion) {
   198             foreach ($relatedSrcPoolDefList as $otherDefinition) {
   199                 if ($otherDefinition->getId() == $definition->
getId()) {
   203                 if (isset($intersectionQstCollectionsByDefId[$otherDefinition->getId()])) {
   208                     $definition->
getId(),
   209                     $otherDefinition->getId()
   212                 $intersectionQstCollectionsByDefId[$otherDefinition->getId()] = $intersectionQuestionCollection;
   216         return $intersectionQstCollectionsByDefId;
   225         foreach ($intersectionQstCollectionByDefIdMap as $otherDefinitionId => $intersectionCollection) {
   229             $qstCollectionSubsetApplication->setQuestions($intersectionCollection->getQuestions());
   230             $qstCollectionSubsetApplication->setApplicantId($otherDefinitionId);
   232             $qstCollectionSubsetApplication->setRequiredAmount(
   233                 $this->source_pool_definition_list->getDefinition($otherDefinitionId)->getQuestionAmount()
   236             $qstCollectionSubsetApplicationList->addCollectionSubsetApplication($qstCollectionSubsetApplication);
   239         return $qstCollectionSubsetApplicationList;
   248         foreach ($sharedQuestionCollection as $sharedQuestion) {
   250             foreach ($relatedSrcPoolDefList as $otherDefinition) {
   251                 if ($otherDefinition->getId() == $definition->
getId()) {
   255                 if ($intersectionSharingDefinitionList->hasDefinition($otherDefinition->getId())) {
   259                 $intersectionSharingDefinitionList->addDefinition($otherDefinition);
   263         return $intersectionSharingDefinitionList;
   269         $qstRelatedSrcPoolDefList = $this->quest_related_src_pool_def_register[$question->
getQuestionId()];
   270         return $qstRelatedSrcPoolDefList->getDefinitionCount() > 1;
   288             $intersectionSubsetApplicationList->handleQuestionRequest($sharedQuestion);
   291         return $intersectionSubsetApplicationList->getNonReservedQuestionAmount();
   297         $missingExclsuiveQstCount = $exclusiveQstCollection->getMissingCount($definition->
getQuestionAmount());
   298         return $missingExclsuiveQstCount;
   325         $quantity_calculation->setIntersectionQuantitySharingDefinitionList(
   329         return $quantity_calculation;
 getIntersectionQuestionCollectionSubsetApplicationList(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
buildQuestionCollectionSubsetApplicationListInstance()
 
getSrcPoolDefRelatedQuestionCollection(int $definition_id)
 
getIntersectionQstCollectionByDefinitionMap(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
buildSourcePoolDefinitionListInstance()
 
__construct(private ilDBInterface $db, private ilTestRandomSourcePoolDefinitionQuestionCollectionProvider $question_collection_provider, private ilTestRandomQuestionSetSourcePoolDefinitionList $source_pool_definition_list)
 
resetQuestRelatedSrcPoolDefRegister()
 
resetSrcPoolDefRelatedQuestRegister()
 
getRequiredSharedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
getSharedQuestionCollection(int $definition_id)
 
getIntersectionSharingDefinitionList(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
getQuestRelatedSrcPoolDefinitionList(int $question_id)
 
getSrcPoolDefQuestionCombinationCollection()
 
requiresSharedQuestions(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
getAvailableSharedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
isQuestionUsedByMultipleSrcPoolDefinitions(ilTestRandomQuestionSetQuestion $question)
 
buildQuestionCollectionSubsetApplicationInstance()
 
calculateQuantities(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
array $src_pool_def_related_quest_register
 
buildRandomQuestionCollectionInstance()
 
getExclusiveQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
getSrcPoolDefRelatedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
array $quest_related_src_pool_def_register
 
registerSrcPoolDefRelatedQuest(int $definition_id, ilTestRandomQuestionSetQuestion $random_set_question)
 
getExclusiveQuestionCollection(int $definition_id)
 
getIntersectionQuestionCollection(int $this_definition_id, int $that_definition_id)
 
registerQuestRelatedSrcPoolDef(int $question_id, ilTestRandomQuestionSetSourcePoolDefinition $definition)