4 require_once
'Modules/TestQuestionPool/classes/class.ilQuestionPoolTaxonomiesDuplicator.php';
5 require_once
'Modules/TestQuestionPool/classes/class.assQuestion.php';
6 require_once
'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
38 $this->
build($sourcePoolDefinitionList);
54 foreach($taxonomyIds as $taxId)
63 $query =
'SELECT * FROM tst_rnd_cpy WHERE tst_fi = %s';
64 $res = $this->db->queryF(
$query, array(
'integer'), array($this->testOBJ->getTestId())
67 while(
$row = $this->db->fetchAssoc(
$res) )
73 $question->delete(
$row[
'qst_fi']);
78 "could not delete staged random question (ref={$this->testOBJ->getRefId()} / qst={$row['qst_fi']})" 83 $query =
"DELETE FROM tst_rnd_cpy WHERE tst_fi = %s";
84 $this->db->manipulateF(
$query, array(
'integer'), array($this->testOBJ->getTestId()) );
89 $involvedSourcePoolIds = $sourcePoolDefinitionList->getInvolvedSourcePoolIds();
91 foreach($involvedSourcePoolIds as $sourcePoolId)
97 $this->applyMappedTaxonomiesKeys($sourcePoolDefinitionList, $taxonomiesKeysMap, $sourcePoolId);
103 $questionIdMapping = array();
105 $query =
'SELECT question_id FROM qpl_questions WHERE obj_fi = %s AND complete = %s AND original_id IS NULL';
106 $res = $this->db->queryF(
$query, array(
'integer',
'text'), array($sourcePoolId, 1) );
108 while(
$row = $this->db->fetchAssoc(
$res) )
111 $duplicateId = $question->duplicate(
true, null, null, null, $this->testOBJ->getId());
113 $nextId = $this->db->nextId(
'tst_rnd_cpy');
114 $this->db->insert(
'tst_rnd_cpy', array(
115 'copy_id' => array(
'integer', $nextId),
116 'tst_fi' => array(
'integer', $this->testOBJ->getTestId()),
117 'qst_fi' => array(
'integer', $duplicateId),
118 'qpl_fi' => array(
'integer', $sourcePoolId)
121 $questionIdMapping[
$row[
'question_id'] ] = $duplicateId;
124 return $questionIdMapping;
131 $duplicator->setSourceObjId($sourcePoolId);
132 $duplicator->setSourceObjType(
'qpl');
133 $duplicator->setTargetObjId($this->testOBJ->getId());
134 $duplicator->setTargetObjType($this->testOBJ->getType());
135 $duplicator->setQuestionIdMapping($questionIdMapping);
137 $duplicator->duplicate();
139 return $duplicator->getDuplicatedTaxonomiesKeysMap();
149 foreach($sourcePoolDefinitionList as $definition)
153 if($definition->getPoolId() == $sourcePoolId)
155 $definition->setMappedFilterTaxId(
159 $definition->setMappedFilterTaxNodeId(
168 $this->testOBJ->setResultFilterTaxIds(array());
169 $this->testOBJ->saveToDb(
true);
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
removeMirroredTaxonomies()
Abstract basic class which is to be extended by the concrete assessment question type classes...
getMappedTaxonomyId($originalTaxonomyId)
__construct(ilDB $db, ilObjTest $testOBJ)
rebuild(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
build(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
stageQuestionsFromSourcePool($sourcePoolId)
getMappedTaxNodeId($originalTaxNodeId)
mirrorSourcePoolTaxonomies($sourcePoolId, $questionIdMapping)