ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
ilTestRandomQuestionSetStagingPoolBuilder Class Reference
+ Collaboration diagram for ilTestRandomQuestionSetStagingPoolBuilder:

Public Member Functions

 __construct (ilDB $db, ilObjTest $testOBJ)
 
 rebuild (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 reset ()
 

Data Fields

 $db = null
 
 $testOBJ = null
 

Private Member Functions

 removeMirroredTaxonomies ()
 
 removeStagedQuestions ()
 
 build (ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
 
 stageQuestionsFromSourcePool ($sourcePoolId)
 
 mirrorSourcePoolTaxonomies ($sourcePoolId, $questionIdMapping)
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilTestRandomQuestionSetStagingPoolBuilder::__construct ( ilDB  $db,
ilObjTest  $testOBJ 
)

Member Function Documentation

◆ build()

ilTestRandomQuestionSetStagingPoolBuilder::build ( ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList)
private

Definition at line 85 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

References mirrorSourcePoolTaxonomies(), and stageQuestionsFromSourcePool().

Referenced by rebuild().

86  {
87  $involvedSourcePoolIds = $sourcePoolDefinitionList->getInvolvedSourcePoolIds();
88 
89  foreach($involvedSourcePoolIds as $sourcePoolId)
90  {
91  $questionIdMapping = $this->stageQuestionsFromSourcePool($sourcePoolId);
92 
93  $taxonomiesKeysMap = $this->mirrorSourcePoolTaxonomies($sourcePoolId, $questionIdMapping);
94 
95  $this->applyMappedTaxonomiesKeys($sourcePoolDefinitionList, $taxonomiesKeysMap, $sourcePoolId);
96  }
97  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mirrorSourcePoolTaxonomies()

ilTestRandomQuestionSetStagingPoolBuilder::mirrorSourcePoolTaxonomies (   $sourcePoolId,
  $questionIdMapping 
)
private

Definition at line 125 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

References ilTestRandomQuestionSetDuplicatedTaxonomiesKeysMap\getMappedTaxNodeId(), and ilTestRandomQuestionSetDuplicatedTaxonomiesKeysMap\getMappedTaxonomyId().

Referenced by build().

126  {
128  $this->testOBJ, $sourcePoolId, $questionIdMapping
129  );
130 
131  $duplicator->duplicate();
132 
133  return $duplicator->getDuplicatedTaxonomiesKeysMap();
134  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ rebuild()

ilTestRandomQuestionSetStagingPoolBuilder::rebuild ( ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList)

Definition at line 34 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

References build(), and reset().

35  {
36  $this->reset();
37 
38  $this->build($sourcePoolDefinitionList);
39  }
build(ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList)
+ Here is the call graph for this function:

◆ removeMirroredTaxonomies()

ilTestRandomQuestionSetStagingPoolBuilder::removeMirroredTaxonomies ( )
private

Definition at line 48 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

References ilObjTaxonomy\getUsageOfObject().

Referenced by reset().

49  {
50  $taxonomyIds = ilObjTaxonomy::getUsageOfObject($this->testOBJ->getId());
51 
52  foreach($taxonomyIds as $taxId)
53  {
54  $taxonomy = new ilObjTaxonomy($taxId);
55  $taxonomy->delete();
56  }
57  }
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeStagedQuestions()

ilTestRandomQuestionSetStagingPoolBuilder::removeStagedQuestions ( )
private

Definition at line 59 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

References $GLOBALS, $query, $res, $row, and assQuestion\_instanciateQuestion().

Referenced by reset().

60  {
61  $query = 'SELECT * FROM tst_rnd_cpy WHERE tst_fi = %s';
62  $res = $this->db->queryF( $query, array('integer'), array($this->testOBJ->getTestId())
63  );
64 
65  while( $row = $this->db->fetchAssoc($res) )
66  {
67  $question = assQuestion::_instanciateQuestion($row['qst_fi']);
68 
69  if( $question instanceof assQuestion )
70  {
71  $question->delete($row['qst_fi']);
72  }
73  else
74  {
75  $GLOBALS['ilLog']->writeWarning(
76  "could not delete staged random question (ref={$this->testOBJ->getRefId()} / qst={$row['qst_fi']})"
77  );
78  }
79  }
80 
81  $query = "DELETE FROM tst_rnd_cpy WHERE tst_fi = %s";
82  $this->db->manipulateF( $query, array('integer'), array($this->testOBJ->getTestId()) );
83  }
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
Abstract basic class which is to be extended by the concrete assessment question type classes...
$GLOBALS['ct_recipient']
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ reset()

ilTestRandomQuestionSetStagingPoolBuilder::reset ( )

Definition at line 41 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

References removeMirroredTaxonomies(), and removeStagedQuestions().

Referenced by rebuild().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ stageQuestionsFromSourcePool()

ilTestRandomQuestionSetStagingPoolBuilder::stageQuestionsFromSourcePool (   $sourcePoolId)
private

Definition at line 99 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

References $query, $res, $row, and assQuestion\_instanciateQuestion().

Referenced by build().

100  {
101  $questionIdMapping = array();
102 
103  $query = 'SELECT question_id FROM qpl_questions WHERE obj_fi = %s AND complete = %s AND original_id IS NULL';
104  $res = $this->db->queryF( $query, array('integer', 'text'), array($sourcePoolId, 1) );
105 
106  while( $row = $this->db->fetchAssoc($res) )
107  {
108  $question = assQuestion::_instanciateQuestion($row['question_id']);
109  $duplicateId = $question->duplicate(true, null, null, null, $this->testOBJ->getId());
110 
111  $nextId = $this->db->nextId('tst_rnd_cpy');
112  $this->db->insert('tst_rnd_cpy', array(
113  'copy_id' => array('integer', $nextId),
114  'tst_fi' => array('integer', $this->testOBJ->getTestId()),
115  'qst_fi' => array('integer', $duplicateId),
116  'qpl_fi' => array('integer', $sourcePoolId)
117  ));
118 
119  $questionIdMapping[ $row['question_id'] ] = $duplicateId;
120  }
121 
122  return $questionIdMapping;
123  }
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $db

ilTestRandomQuestionSetStagingPoolBuilder::$db = null

Definition at line 19 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

Referenced by __construct().

◆ $testOBJ

ilTestRandomQuestionSetStagingPoolBuilder::$testOBJ = null

Definition at line 24 of file class.ilTestRandomQuestionSetStagingPoolBuilder.php.

Referenced by __construct().


The documentation for this class was generated from the following file: