4 require_once
'Modules/Test/classes/class.ilTestRandomQuestionSetNonAvailablePool.php';
62 $this->sourcePoolDefinitions[ $sourcePoolDefinition->
getId() ] = $sourcePoolDefinition;
67 $this->lostPools[$lostPool->
getId()] = $lostPool;
72 return isset($this->lostPools[$poolId]);
77 return (
bool) count($this->lostPools);
88 return $this->lostPools[$poolId];
96 return isset($this->trashedPools[$poolId]);
101 return (
bool) count($this->trashedPools);
124 return $this->
getDefinition($sourcePoolDefinitionId) !== null;
129 if (isset($this->sourcePoolDefinitions[$sourcePoolDefinitionId])) {
130 return $this->sourcePoolDefinitions[$sourcePoolDefinitionId];
138 foreach ($this as $definition) {
139 if ($definition->getPoolId() != $sourcePoolId) {
151 return array_keys($this->sourcePoolDefinitions);
156 return count($this->sourcePoolDefinitions);
163 SELECT tst_rnd_quest_set_qpls.*, odat.obj_id pool_id, odat.title actual_pool_title, tree.child 164 FROM tst_rnd_quest_set_qpls 165 LEFT JOIN object_data odat 166 ON odat.obj_id = pool_fi 167 LEFT JOIN object_reference oref 168 ON oref.obj_id = pool_fi 171 AND child = oref.ref_id 173 ORDER BY sequence_pos ASC 176 $res = $this->db->queryF(
$query, array(
'integer',
'integer'), array(1, $this->testOBJ->getTestId()));
178 $handledDefinitions = array();
181 while ($row = $this->db->fetchAssoc(
$res)) {
182 $sourcePoolDefinition = $this->sourcePoolDefinitionFactory->getEmptySourcePoolDefinition();
183 $sourcePoolDefinition->initFromArray($row);
185 if (!isset($handledDefinitions[$sourcePoolDefinition->getId()])) {
187 $handledDefinitions[$sourcePoolDefinition->getId()] = $sourcePoolDefinition->getId();
190 $trashedPool->assignDbRow($row);
192 $trashedPool->setUnavailabilityStatus(
200 && !$row[
'pool_id']) {
202 $lostPool->assignDbRow($row);
204 $lostPool->setUnavailabilityStatus(
215 if (isset($row[
'actual_pool_title'])
216 && $sourcePoolDefinition->getPoolTitle() !== $row[
'actual_pool_title']) {
217 $sourcePoolDefinition->setPoolTitle($row[
'actual_pool_title']);
218 $sourcePoolDefinition->saveToDb();
229 public function saveDefinitions()
231 foreach ($this as $sourcePoolDefinition) {
233 $sourcePoolDefinition->saveToDb();
237 public function cloneDefinitionsForTestId($testId)
239 $definitionIdMap = array();
241 foreach ($this as $definition) {
244 $originalId = $definition->getId();
245 $definition->cloneToDbForTestId($testId);
246 $cloneId = $definition->getId();
248 $definitionIdMap[$originalId] = $cloneId;
251 return $definitionIdMap;
256 $query =
"DELETE FROM tst_rnd_quest_set_qpls WHERE test_fi = %s";
257 $this->db->manipulateF(
$query, array(
'integer'), array($this->testOBJ->getTestId()));
260 public function reindexPositions()
262 $positionIndex = array();
264 foreach ($this as $definition) {
266 $positionIndex[ $definition->getId() ] = $definition->getSequencePosition();
269 asort($positionIndex);
273 foreach ($positionIndex as $definitionId => $definitionPosition) {
274 $positionIndex[$definitionId] =
$i++;
277 foreach ($this as $definition) {
278 $definition->setSequencePosition($positionIndex[$definition->getId()]);
284 return (count($this->sourcePoolDefinitions) + 1);
287 public function getInvolvedSourcePoolIds()
289 $involvedSourcePoolIds = array();
291 foreach ($this as $definition) {
293 $involvedSourcePoolIds[ $definition->getPoolId() ] = $definition->getPoolId();
296 return array_values($involvedSourcePoolIds);
299 public function getQuestionAmount()
303 foreach ($this as $definition) {
305 $questionAmount += $definition->getQuestionAmount();
308 return $questionAmount;
316 $query =
"SELECT COUNT(*) cnt FROM tst_rnd_quest_set_qpls WHERE test_fi = %s";
317 $res = $this->db->queryF(
$query, array(
'integer'), array($this->testOBJ->getTestId()));
319 $row = $this->db->fetchAssoc(
$res);
321 return $row[
'cnt'] > 0;
324 public function hasTaxonomyFilters()
326 foreach ($this as $definition) {
329 if (count($definition->getMappedTaxonomyFilter())) {
332 #if( $definition->getMappedFilterTaxId() && $definition->getMappedFilterTaxNodeId() ) 345 foreach ($this as $definition) {
346 if (count($definition->getTypeFilter())) {
372 return reset($this->sourcePoolDefinitions);
380 return current($this->sourcePoolDefinitions);
388 return key($this->sourcePoolDefinitions);
396 return next($this->sourcePoolDefinitions);
404 return key($this->sourcePoolDefinitions) !== null;
setTrashedPools($trashedPools)
__construct(ilDBInterface $db, ilObjTest $testOBJ, ilTestRandomQuestionSetSourcePoolDefinitionFactory $sourcePoolDefinitionFactory)
Constructor.
hasDefinition($sourcePoolDefinitionId)
const UNAVAILABILITY_STATUS_LOST
areAllUsedPoolsAvailable()
const UNAVAILABILITY_STATUS_TRASHED
addDefinition(ilTestRandomQuestionSetSourcePoolDefinition $sourcePoolDefinition)
$sourcePoolDefinitionFactory
foreach($_POST as $key=> $value) $res
getDefinition($sourcePoolDefinitionId)
getDefinitionBySourcePoolId($sourcePoolId)
addLostPool(ilTestRandomQuestionSetNonAvailablePool $lostPool)