58 if ($questionCollectionProvider !== null) {
104 $nonRequiredDb = $DIC[
'ilDB'];
140 $this->questRelatedSrcPoolDefRegister = array();
145 if (!array_key_exists($questionId, $this->questRelatedSrcPoolDefRegister)) {
149 $this->questRelatedSrcPoolDefRegister[$questionId]->addDefinition($definition);
158 if (isset($this->questRelatedSrcPoolDefRegister[$questionId])) {
159 return $this->questRelatedSrcPoolDefRegister[$questionId];
170 $this->srcPoolDefRelatedQuestRegister = array();
179 if (!isset($this->srcPoolDefRelatedQuestRegister[$definitionId])) {
183 $this->srcPoolDefRelatedQuestRegister[$definitionId]->addQuestion($randomSetQuestion);
192 if (isset($this->srcPoolDefRelatedQuestRegister[$definitionId])) {
193 return $this->srcPoolDefRelatedQuestRegister[$definitionId];
208 $randomQuestion->getSourcePoolDefinitionId()
212 $randomQuestion->getSourcePoolDefinitionId(),
216 if ($sourcePoolDefinition && $randomQuestion->getQuestionId()) {
218 $randomQuestion->getQuestionId(),
219 $sourcePoolDefinition
260 $exclusiveQstCollection->addQuestion($question);
263 return $exclusiveQstCollection;
274 return $srcPoolDefRelatedQstCollection->getRelativeComplementCollection($exclusiveQstCollection);
287 $intersectionQstCollection = $thisDefRelatedSharedQstCollection->getIntersectionCollection(
288 $thatDefRelatedSharedQstCollection
291 return $intersectionQstCollection;
300 $intersectionQstCollectionsByDefId = array();
303 foreach ($sharedQuestionCollection as $sharedQuestion) {
305 foreach ($relatedSrcPoolDefList as $otherDefinition) {
306 if ($otherDefinition->getId() == $definition->
getId()) {
310 if (isset($intersectionQstCollectionsByDefId[$otherDefinition->getId()])) {
315 $definition->
getId(),
316 $otherDefinition->getId()
319 $intersectionQstCollectionsByDefId[$otherDefinition->getId()] = $intersectionQuestionCollection;
323 return $intersectionQstCollectionsByDefId;
335 foreach ($intersectionQstCollectionByDefIdMap as $otherDefinitionId => $intersectionCollection) {
339 $qstCollectionSubsetApplication->setQuestions($intersectionCollection->getQuestions());
340 $qstCollectionSubsetApplication->setApplicantId($otherDefinitionId);
342 #$qstCollectionSubsetApplication->setRequiredAmount($this->getRequiredSharedQuestionAmount( 343 # $this->getSourcePoolDefinitionList()->getDefinition($otherDefinitionId) 346 $qstCollectionSubsetApplication->setRequiredAmount(
350 $qstCollectionSubsetApplicationList->addCollectionSubsetApplication($qstCollectionSubsetApplication);
353 return $qstCollectionSubsetApplicationList;
367 foreach ($sharedQuestionCollection as $sharedQuestion) {
369 foreach ($relatedSrcPoolDefList as $otherDefinition) {
370 if ($otherDefinition->getId() == $definition->
getId()) {
374 if ($intersectionSharingDefinitionList->hasDefinition($otherDefinition->getId())) {
378 $intersectionSharingDefinitionList->addDefinition($otherDefinition);
382 return $intersectionSharingDefinitionList;
392 $qstRelatedSrcPoolDefList = $this->questRelatedSrcPoolDefRegister[$question->
getQuestionId()];
393 return $qstRelatedSrcPoolDefList->getDefinitionCount() > 1;
422 $intersectionSubsetApplicationList->handleQuestionRequest($sharedQuestion);
425 return $intersectionSubsetApplicationList->getNonReservedQuestionAmount();
435 $missingExclsuiveQstCount = $exclusiveQstCollection->getMissingCount($definition->
getQuestionAmount());
436 return $missingExclsuiveQstCount;
474 $quantityCalculation->setIntersectionQuantitySharingDefinitionList(
478 return $quantityCalculation;
getIntersectionQuestionCollectionSubsetApplicationList(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getSourcePoolDefinitionList()
buildQuestionCollectionSubsetApplicationListInstance()
getIntersectionQstCollectionByDefinitionMap(ilTestRandomQuestionSetSourcePoolDefinition $definition)
buildSourcePoolDefinitionListInstance()
$questionCollectionProvider
resetRegisters()
reset internal registers
resetQuestRelatedSrcPoolDefRegister()
re-setter for questRelatedSrcPoolDefRegister
resetSrcPoolDefRelatedQuestRegister()
re-setter the srcPoolDefRelatedQuestRegister
getRequiredSharedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
$questRelatedSrcPoolDefRegister
getSharedQuestionCollection($definitionId)
getIntersectionSharingDefinitionList(ilTestRandomQuestionSetSourcePoolDefinition $definition)
$sourcePoolDefinitionList
getExclusiveQuestionCollection($definitionId)
getIntersectionQuestionCollection($thisDefinitionId, $thatDefinitionId)
registerSrcPoolDefRelatedQuest($definitionId, ilTestRandomQuestionSetQuestion $randomSetQuestion)
getSrcPoolDefRelatedQuestionCollection($definitionId)
$srcPoolDefRelatedQuestRegister
initialiseRegisters()
initialise the src-pool-def/question registers
getSrcPoolDefQuestionCombinationCollection()
requiresSharedQuestions(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getAvailableSharedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
setQuestionCollectionProvider(ilTestRandomSourcePoolDefinitionQuestionCollectionProvider $questionCollectionProvider)
isQuestionUsedByMultipleSrcPoolDefinitions(ilTestRandomQuestionSetQuestion $question)
setSourcePoolDefinitionList($sourcePoolDefinitionList)
getQuestRelatedSrcPoolDefinitionList($questionId)
buildQuestionCollectionSubsetApplicationInstance()
calculateQuantities(ilTestRandomQuestionSetSourcePoolDefinition $definition)
buildRandomQuestionCollectionInstance()
__construct(ilTestRandomSourcePoolDefinitionQuestionCollectionProvider $questionCollectionProvider)
getExclusiveQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
getSrcPoolDefRelatedQuestionAmount(ilTestRandomQuestionSetSourcePoolDefinition $definition)
registerQuestRelatedSrcPoolDef(int $questionId, ilTestRandomQuestionSetSourcePoolDefinition $definition)
getQuestionCollectionProvider()