ILIAS  release_4-4 Revision
ilTestRandomQuestionSetBuilder Class Reference
+ Inheritance diagram for ilTestRandomQuestionSetBuilder:
+ Collaboration diagram for ilTestRandomQuestionSetBuilder:

Public Member Functions

 checkBuildable ()
 
 performBuild (ilTestSession $testSession)
 

Static Public Member Functions

static getInstance (ilDB $db, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
 

Protected Member Functions

 __construct (ilDB $db, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
 
 getQuestionStageForSourcePoolDefinition (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 storeQuestionSet (ilTestSession $testSession, $questionSet)
 
 fetchQuestionsFromStageRandomly ($questionStage, $requiredQuestionAmount)
 
 handleQuestionOrdering ($questionSet)
 

Protected Attributes

 $db = null
 
 $testOBJ = null
 
 $questionSetConfig = null
 
 $sourcePoolDefinitionList = null
 
 $stagingPoolQuestionList = null
 

Private Member Functions

 hasTaxonomyFilter (ilTestRandomQuestionSetSourcePoolDefinition $definition)
 
 storeQuestion (ilTestSession $testSession, $questionId, $sequencePosition)
 
 getRandomArrayKeys ($array, $numKeys)
 

Detailed Description

Definition at line 10 of file class.ilTestRandomQuestionSetBuilder.php.

Constructor & Destructor Documentation

◆ __construct()

ilTestRandomQuestionSetBuilder::__construct ( ilDB  $db,
ilObjTest  $testOBJ,
ilTestRandomQuestionSetConfig  $questionSetConfig,
ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList,
ilTestRandomQuestionSetStagingPoolQuestionList  $stagingPoolQuestionList 
)
protected

Member Function Documentation

◆ checkBuildable()

ilTestRandomQuestionSetBuilder::checkBuildable ( )
abstract

Referenced by __construct().

+ Here is the caller graph for this function:

◆ fetchQuestionsFromStageRandomly()

ilTestRandomQuestionSetBuilder::fetchQuestionsFromStageRandomly (   $questionStage,
  $requiredQuestionAmount 
)
protected

Definition at line 136 of file class.ilTestRandomQuestionSetBuilder.php.

References getRandomArrayKeys().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerPool\isQuestionSetFetchable(), and ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

137  {
138  $randomKeys = $this->getRandomArrayKeys($questionStage, $requiredQuestionAmount);
139 
140  $questionSet = array();
141 
142  foreach($randomKeys as $randomKey)
143  {
144  $questionSet[] = $questionStage[$randomKey];
145  }
146 
147  return $questionSet;
148  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getInstance()

static ilTestRandomQuestionSetBuilder::getInstance ( ilDB  $db,
ilObjTest  $testOBJ,
ilTestRandomQuestionSetConfig  $questionSetConfig,
ilTestRandomQuestionSetSourcePoolDefinitionList  $sourcePoolDefinitionList,
ilTestRandomQuestionSetStagingPoolQuestionList  $stagingPoolQuestionList 
)
staticfinal

Definition at line 177 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetConfig\isQuestionAmountConfigurationModePerPool().

Referenced by ilTestOutputGUI\generateRandomTestPassForActiveUser(), and ilTestRandomQuestionSetConfig\isQuestionSetBuildable().

182  {
183  if( $questionSetConfig->isQuestionAmountConfigurationModePerPool() )
184  {
185  require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetBuilderWithAmountPerPool.php';
186 
188  $db, $testOBJ, $questionSetConfig, $sourcePoolDefinitionList, $stagingPoolQuestionList
189  );
190  }
191 
192  require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetBuilderWithAmountPerTest.php';
193 
195  $db, $testOBJ, $questionSetConfig, $sourcePoolDefinitionList, $stagingPoolQuestionList
196  );
197  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getQuestionStageForSourcePoolDefinition()

ilTestRandomQuestionSetBuilder::getQuestionStageForSourcePoolDefinition ( ilTestRandomQuestionSetSourcePoolDefinition  $definition)
protected

Definition at line 79 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestRandomQuestionSetSourcePoolDefinition\getMappedFilterTaxId(), ilTestRandomQuestionSetSourcePoolDefinition\getMappedFilterTaxNodeId(), ilTestRandomQuestionSetSourcePoolDefinition\getPoolId(), and hasTaxonomyFilter().

Referenced by __construct(), and ilTestRandomQuestionSetBuilderWithAmountPerPool\isQuestionSetFetchable().

80  {
81  $this->stagingPoolQuestionList->resetQuestionList();
82 
83  $this->stagingPoolQuestionList->setTestObjId( $this->testOBJ->getId() );
84  $this->stagingPoolQuestionList->setTestId( $this->testOBJ->getTestId() );
85  $this->stagingPoolQuestionList->setPoolId( $definition->getPoolId() );
86 
87  if( $this->hasTaxonomyFilter($definition) )
88  {
89  $this->stagingPoolQuestionList->addTaxonomyFilter(
90  $definition->getMappedFilterTaxId(), array($definition->getMappedFilterTaxNodeId())
91  );
92  }
93 
94  $this->stagingPoolQuestionList->loadQuestions();
95 
96  return $this->stagingPoolQuestionList->getQuestions();
97  }
hasTaxonomyFilter(ilTestRandomQuestionSetSourcePoolDefinition $definition)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRandomArrayKeys()

ilTestRandomQuestionSetBuilder::getRandomArrayKeys (   $array,
  $numKeys 
)
private

Definition at line 150 of file class.ilTestRandomQuestionSetBuilder.php.

Referenced by fetchQuestionsFromStageRandomly().

151  {
152  if( $numKeys < 1 )
153  {
154  return array();
155  }
156 
157  if( $numKeys > 1 )
158  {
159  return array_rand($array, $numKeys);
160  }
161 
162  return array( array_rand($array, $numKeys) );
163  }
+ Here is the caller graph for this function:

◆ handleQuestionOrdering()

ilTestRandomQuestionSetBuilder::handleQuestionOrdering (   $questionSet)
protected

Definition at line 165 of file class.ilTestRandomQuestionSetBuilder.php.

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerPool\isQuestionSetFetchable(), and ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

166  {
167  if( $this->testOBJ->getShuffleQuestions() )
168  {
169  shuffle($questionSet);
170  }
171 
172  return $questionSet;
173  }
+ Here is the caller graph for this function:

◆ hasTaxonomyFilter()

ilTestRandomQuestionSetBuilder::hasTaxonomyFilter ( ilTestRandomQuestionSetSourcePoolDefinition  $definition)
private

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

References ilTestRandomQuestionSetSourcePoolDefinition\getMappedFilterTaxId(), and ilTestRandomQuestionSetSourcePoolDefinition\getMappedFilterTaxNodeId().

Referenced by getQuestionStageForSourcePoolDefinition().

100  {
101  if( !(int)$definition->getMappedFilterTaxId() )
102  {
103  return false;
104  }
105 
106  if( !(int)$definition->getMappedFilterTaxNodeId() )
107  {
108  return false;
109  }
110 
111  return true;
112  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ performBuild()

ilTestRandomQuestionSetBuilder::performBuild ( ilTestSession  $testSession)
abstract

Referenced by __construct(), and ilTestRandomQuestionSetBuilderWithAmountPerPool\isQuestionSetFetchable().

+ Here is the caller graph for this function:

◆ storeQuestion()

ilTestRandomQuestionSetBuilder::storeQuestion ( ilTestSession  $testSession,
  $questionId,
  $sequencePosition 
)
private

Definition at line 122 of file class.ilTestRandomQuestionSetBuilder.php.

References ilTestSession\getActiveId(), and ilTestSession\getPass().

Referenced by storeQuestionSet().

123  {
124  $nextId = $this->db->nextId('tst_test_rnd_qst');
125 
126  $this->db->insert('tst_test_rnd_qst', array(
127  'test_random_question_id' => array('integer', $nextId),
128  'active_fi' => array('integer', $testSession->getActiveId()),
129  'question_fi' => array('integer', $questionId),
130  'sequence' => array('integer', $sequencePosition),
131  'pass' => array('integer', $testSession->getPass()),
132  'tstamp' => array('integer', time())
133  ));
134  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ storeQuestionSet()

ilTestRandomQuestionSetBuilder::storeQuestionSet ( ilTestSession  $testSession,
  $questionSet 
)
protected

Definition at line 114 of file class.ilTestRandomQuestionSetBuilder.php.

References storeQuestion().

Referenced by ilTestRandomQuestionSetBuilderWithAmountPerPool\isQuestionSetFetchable(), and ilTestRandomQuestionSetBuilderWithAmountPerTest\performBuild().

115  {
116  foreach($questionSet as $sequencePosition => $questionId)
117  {
118  $this->storeQuestion($testSession, $questionId, $sequencePosition);
119  }
120  }
storeQuestion(ilTestSession $testSession, $questionId, $sequencePosition)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $db

ilTestRandomQuestionSetBuilder::$db = null
protected

Definition at line 15 of file class.ilTestRandomQuestionSetBuilder.php.

Referenced by __construct().

◆ $questionSetConfig

ilTestRandomQuestionSetBuilder::$questionSetConfig = null
protected

Definition at line 25 of file class.ilTestRandomQuestionSetBuilder.php.

Referenced by __construct().

◆ $sourcePoolDefinitionList

ilTestRandomQuestionSetBuilder::$sourcePoolDefinitionList = null
protected

◆ $stagingPoolQuestionList

ilTestRandomQuestionSetBuilder::$stagingPoolQuestionList = null
protected

Definition at line 35 of file class.ilTestRandomQuestionSetBuilder.php.

Referenced by __construct().

◆ $testOBJ

ilTestRandomQuestionSetBuilder::$testOBJ = null
protected

Definition at line 20 of file class.ilTestRandomQuestionSetBuilder.php.

Referenced by __construct().


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