51 $this->sourcePoolDefinitions[ $sourcePoolDefinition->
getId() ] = $sourcePoolDefinition;
56 $query =
"SELECT * FROM tst_rnd_quest_set_qpls WHERE test_fi = %s ORDER BY sequence_pos ASC";
57 $res = $this->db->queryF(
$query, array(
'integer'), array($this->testOBJ->getTestId()));
59 while(
$row = $this->db->fetchAssoc(
$res) )
61 $sourcePoolDefinition = $this->sourcePoolDefinitionFactory->getEmptySourcePoolDefinition();
63 $sourcePoolDefinition->initFromArray(
$row);
69 public function saveDefinitions()
71 foreach($this as $sourcePoolDefinition)
74 $sourcePoolDefinition->saveToDb();
78 public function cloneDefinitionsForTestId($testId)
80 $definitionIdMap = array();
82 foreach($this as $definition)
86 $originalId = $definition->getId();
87 $definition->cloneToDbForTestId($testId);
88 $cloneId = $definition->getId();
90 $definitionIdMap[$originalId] = $cloneId;
93 return $definitionIdMap;
98 $query =
"DELETE FROM tst_rnd_quest_set_qpls WHERE test_fi = %s";
99 $this->db->manipulateF(
$query, array(
'integer'), array($this->testOBJ->getTestId()));
102 public function reindexPositions()
104 $positionIndex = array();
106 foreach($this as $definition)
109 $positionIndex[ $definition->getId() ] = $definition->getSequencePosition();
112 asort($positionIndex);
116 foreach($positionIndex as $definitionId => $definitionPosition)
118 $positionIndex[$definitionId] = $i++;
121 foreach($this as $definition)
123 $definition->setSequencePosition( $positionIndex[$definition->getId()] );
129 return ( count($this->sourcePoolDefinitions) + 1 );
132 public function getInvolvedSourcePoolIds()
134 $involvedSourcePoolIds = array();
136 foreach($this as $definition)
139 $involvedSourcePoolIds[ $definition->getPoolId() ] = $definition->getPoolId();
142 return array_values($involvedSourcePoolIds);
145 public function getQuestionAmount()
149 foreach($this as $definition)
152 $questionAmount += $definition->getQuestionAmount();
155 return $questionAmount;
163 $query =
"SELECT COUNT(*) cnt FROM tst_rnd_quest_set_qpls WHERE test_fi = %s";
164 $res = $this->db->queryF(
$query, array(
'integer'), array($this->testOBJ->getTestId()));
168 return $row[
'cnt'] > 0;
171 public function hasTaxonomyFilters()
173 foreach($this as $definition)
176 if( $definition->getMappedFilterTaxId() && $definition->getMappedFilterTaxNodeId() )
190 return reset($this->sourcePoolDefinitions);
198 return current($this->sourcePoolDefinitions);
206 return key($this->sourcePoolDefinitions);
214 return next($this->sourcePoolDefinitions);
222 return key($this->sourcePoolDefinitions) !== null;
__construct(ilDB $db, ilObjTest $testOBJ, ilTestRandomQuestionSetSourcePoolDefinitionFactory $sourcePoolDefinitionFactory)
Constructor.
addDefinition(ilTestRandomQuestionSetSourcePoolDefinition $sourcePoolDefinition)
$sourcePoolDefinitionFactory