19 declare(strict_types=1);
109 $this->component_repository
112 $questionList->setTestObjId($this->testOBJ->getId());
113 $questionList->setTestId($this->testOBJ->getTestId());
114 $questionList->setPoolId($nonAvailablePool->
getId());
116 $questionList->loadQuestions();
118 $questions = array();
119 $list = $questionList->getQuestions();
120 foreach ($list as $questionId) {
131 if (strlen($nonAvailablePool->
getTitle())) {
141 $poolQidByTestQidMap = array();
143 foreach ($questions as $questionOBJ) {
146 $testQuestionId = $questionOBJ->getId();
147 $poolQuestionId = $questionOBJ->duplicate(
false,
'',
'', $this->
getOwnerId(), $pool->
getId());
149 $poolQidByTestQidMap[$testQuestionId] = $poolQuestionId;
152 return $poolQidByTestQidMap;
157 foreach ($poolQidByTestQidMap as $testQid => $poolQid) {
165 $filteredTaxIds = array();
167 foreach ($taxonomyIds as $taxonomyId) {
169 $this->testOBJ->getType(),
170 $this->testOBJ->getId(),
175 foreach ($relatedQuestionIds as $questionId) {
178 if (count($assignedTaxNodes)) {
179 $filteredTaxIds[] = $taxonomyId;
185 return $filteredTaxIds;
191 $taxDuplicator->setSourceObjId($this->testOBJ->getId());
192 $taxDuplicator->setSourceObjType($this->testOBJ->getType());
193 $taxDuplicator->setTargetObjId($pool->
getId());
194 $taxDuplicator->setTargetObjType($pool->
getType());
195 $taxDuplicator->setQuestionIdMapping($poolQidByTestQidMap);
198 $taxDuplicator->getAllTaxonomiesForSourceObject(),
199 array_keys($poolQidByTestQidMap)
202 return $taxDuplicator->getDuplicatedTaxonomiesKeysMap();
207 array $mapped_taxonomy_filter
209 $original_taxonomy_filter = [];
210 foreach ($mapped_taxonomy_filter as $test_taxonomy_id => $test_tax_nodes) {
212 if ($pool_taxonomy_id === null) {
215 $original_taxonomy_filter[$pool_taxonomy_id] = [];
217 foreach ($test_tax_nodes as $test_tax_node) {
219 if ($pool_tax_node !== null) {
220 $original_taxonomy_filter[$pool_taxonomy_id][] = $pool_tax_node;
225 return $original_taxonomy_filter;
231 if ($definition->getPoolId() != $nonAvailablePoolId) {
235 $definition->setPoolId($derivedPoolId);
239 $definition->getMappedTaxonomyFilter()
242 $definition->saveToDb();
updateTestQuestionStage($poolQidByTestQidMap)
Readable part of repository interface to ilComponentDataDB.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
copyQuestionsToPool(ilObjQuestionPool $pool, $questions)
ilQuestionPoolFactory $poolFactory
getSourcePoolDefinitionList()
derive(ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
static resetOriginalId(int $questionId)
static instantiateQuestion(int $question_id)
$sourcePoolDefinitionList
duplicateTaxonomies($poolQidByTestQidMap, ilObjQuestionPool $pool)
setTargetContainerRef($targetContainerRef)
getQuestionsForPool(ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
__construct(ilDBInterface $ilDB, ilComponentRepository $component_repository, ilObjTest $testOBJ)
ilComponentRepository $component_repository
static saveOriginalId(int $questionId, int $originalId)
getAssignmentsOfItem(int $a_item_id)
Get assignments for item.
buildOriginalTaxonomyFilterForDerivedPool(ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, array $mapped_taxonomy_filter)
updateRelatedSourcePoolDefinitions(ilQuestionPoolDuplicatedTaxonomiesKeysMap $taxKeysMap, $derivedPoolId, $nonAvailablePoolId)
getMappedTaxonomyId(int $original_taxonomy_id)
createNewPool(ilTestRandomQuestionSetNonAvailablePool $nonAvailablePool)
setSourcePoolDefinitionList($sourcePoolDefinitionList)
getMappedTaxNodeId(int $original_tax_node_id)
filterForQuestionRelatedTaxonomies($taxonomyIds, $relatedQuestionIds)