ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
ilTestDynamicQuestionSet Class Reference
+ Collaboration diagram for ilTestDynamicQuestionSet:

Public Member Functions

 __construct (ilDBInterface $db, ilLanguage $lng, ILIAS\Refinery\Factory $refinery, ilPluginAdmin $pluginAdmin, ilObjTest $testOBJ)
 Constructor. More...
 
 load (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
 
 initSelectionQuestionList (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
 
 getActualQuestionSequence ()
 
 questionExists ($questionId)
 
 getQuestionData ($questionId)
 
 getAllQuestionsData ()
 
 getCompleteQuestionList ()
 
 getSelectionQuestionList ()
 
 getFilteredQuestionList ()
 

Protected Attributes

 $refinery
 

Private Member Functions

 initCompleteQuestionList (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, $answerStatusActiveId)
 
 initFilteredQuestionList (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
 
 initActualQuestionSequence (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilAssQuestionList $questionList)
 
 getQuestionSequenceStructuredByTaxonomy (ilAssQuestionList $questionList, $orderingTaxId)
 
 getQuestionSequenceStructuredByUpdateDate (ilAssQuestionList $questionList)
 
 buildQuestionList ($sourceQuestionPoolId, $answerStatusActiveId)
 

Private Attributes

 $db = null
 
 $lng = null
 
 $pluginAdmin = null
 
 $testOBJ = null
 
 $completeQuestionList = null
 
 $selectionQuestionList = null
 
 $filteredQuestionList = null
 
 $actualQuestionSequence = array()
 

Detailed Description

Definition at line 17 of file class.ilTestDynamicQuestionSet.php.

Constructor & Destructor Documentation

◆ __construct()

ilTestDynamicQuestionSet::__construct ( ilDBInterface  $db,
ilLanguage  $lng,
ILIAS\Refinery\Factory  $refinery,
ilPluginAdmin  $pluginAdmin,
ilObjTest  $testOBJ 
)

Constructor.

Parameters
ilObjTest$testOBJ

Definition at line 69 of file class.ilTestDynamicQuestionSet.php.

References $db, $lng, $pluginAdmin, $refinery, and $testOBJ.

Member Function Documentation

◆ buildQuestionList()

ilTestDynamicQuestionSet::buildQuestionList (   $sourceQuestionPoolId,
  $answerStatusActiveId 
)
private
Parameters
integer$sourceQuestionPoolId
string$answerStatusActiveId
Returns
ilAssQuestionList

Definition at line 324 of file class.ilTestDynamicQuestionSet.php.

Referenced by initCompleteQuestionList(), initFilteredQuestionList(), and initSelectionQuestionList().

325  {
326  $questionList = new ilAssQuestionList($this->db, $this->lng, $this->refinery, $this->pluginAdmin);
327  $questionList->setParentObjId($sourceQuestionPoolId);
328  $questionList->setAnswerStatusActiveId($answerStatusActiveId);
329  return $questionList;
330  }
+ Here is the caller graph for this function:

◆ getActualQuestionSequence()

ilTestDynamicQuestionSet::getActualQuestionSequence ( )

◆ getAllQuestionsData()

ilTestDynamicQuestionSet::getAllQuestionsData ( )

Definition at line 288 of file class.ilTestDynamicQuestionSet.php.

289  {
290  return $this->completeQuestionList->getQuestionDataArray();
291  }

◆ getCompleteQuestionList()

ilTestDynamicQuestionSet::getCompleteQuestionList ( )

◆ getFilteredQuestionList()

ilTestDynamicQuestionSet::getFilteredQuestionList ( )

◆ getQuestionData()

ilTestDynamicQuestionSet::getQuestionData (   $questionId)

Definition at line 282 of file class.ilTestDynamicQuestionSet.php.

283  {
284  $questionData = $this->completeQuestionList->getQuestionDataArray();
285  return $questionData[$questionId];
286  }

◆ getQuestionSequenceStructuredByTaxonomy()

ilTestDynamicQuestionSet::getQuestionSequenceStructuredByTaxonomy ( ilAssQuestionList  $questionList,
  $orderingTaxId 
)
private

Definition at line 204 of file class.ilTestDynamicQuestionSet.php.

References ilAssQuestionList\getQuestionDataArray(), and ilObjTaxonomy\SORT_MANUAL.

Referenced by initActualQuestionSequence().

205  {
206  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
207  $tax = new ilObjTaxonomy($orderingTaxId);
208 
209  require_once 'Modules/Test/classes/class.ilTestTaxonomyTree.php';
210  $tree = new ilTestTaxonomyTree($orderingTaxId);
211  $tree->initOrderedTreeIndex($tax);
212 
213  $questionsByNode = array();
214  $nodelessQuestions = array();
215 
216  foreach ($questionList->getQuestionDataArray() as $qId => $qData) {
217  if (isset($qData['taxonomies'][$orderingTaxId]) && count($qData['taxonomies'][$orderingTaxId])) {
218  foreach ($qData['taxonomies'][$orderingTaxId] as $nodeId => $itemData) {
219  $nodeOrderingPath = $tree->getNodeOrderingPathString($itemData['node_id']);
220 
221  if (!isset($questionsByNode[ $nodeOrderingPath ])) {
222  $questionsByNode[ $nodeOrderingPath ] = array();
223  }
224 
225  if ($tax->getItemSorting() == ilObjTaxonomy::SORT_MANUAL) {
226  $questionsByNode[ $nodeOrderingPath ][$itemData['order_nr']] = $qId;
227  } else {
228  $questionsByNode[ $nodeOrderingPath ][$qData['title'] . '::' . $qId] = $qId;
229  }
230  }
231  } else {
232  $nodelessQuestions[$qData['tstamp'] . '::' . $qId] = $qId;
233  }
234  }
235 
236  foreach ($questionsByNode as $path => $questions) {
237  if ($tax->getItemSorting() == ilObjTaxonomy::SORT_MANUAL) {
238  ksort($questions, SORT_NUMERIC);
239  } else {
240  ksort($questions, SORT_STRING);
241  }
242 
243  $questionsByNode[$path] = array_values($questions);
244  }
245 
246  ksort($questionsByNode, SORT_STRING);
247  $sequence = array_values($questionsByNode);
248 
249  ksort($nodelessQuestions);
250  $sequence[] = array_values($nodelessQuestions);
251 
252  return $sequence;
253  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getQuestionSequenceStructuredByUpdateDate()

ilTestDynamicQuestionSet::getQuestionSequenceStructuredByUpdateDate ( ilAssQuestionList  $questionList)
private

Definition at line 255 of file class.ilTestDynamicQuestionSet.php.

References ilAssQuestionList\getQuestionDataArray().

Referenced by initActualQuestionSequence().

256  {
257  $sequence = array();
258 
259  foreach ($questionList->getQuestionDataArray() as $qId => $qData) {
260  $sequence[ $qData['tstamp'] . '::' . $qId ] = $qId;
261  }
262 
263  ksort($sequence);
264  $sequence = array_values($sequence);
265 
266  return array($sequence);
267  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSelectionQuestionList()

ilTestDynamicQuestionSet::getSelectionQuestionList ( )

◆ initActualQuestionSequence()

ilTestDynamicQuestionSet::initActualQuestionSequence ( ilObjTestDynamicQuestionSetConfig  $dynamicQuestionSetConfig,
ilAssQuestionList  $questionList 
)
private

Definition at line 190 of file class.ilTestDynamicQuestionSet.php.

References ilObjTestDynamicQuestionSetConfig\getOrderingTaxonomyId(), getQuestionSequenceStructuredByTaxonomy(), and getQuestionSequenceStructuredByUpdateDate().

Referenced by load().

191  {
192  if ($dynamicQuestionSetConfig->getOrderingTaxonomyId()) {
194  $questionList,
195  $dynamicQuestionSetConfig->getOrderingTaxonomyId()
196  );
197  }
198 
199  return $this->getQuestionSequenceStructuredByUpdateDate($questionList);
200  }
getQuestionSequenceStructuredByUpdateDate(ilAssQuestionList $questionList)
getQuestionSequenceStructuredByTaxonomy(ilAssQuestionList $questionList, $orderingTaxId)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initCompleteQuestionList()

ilTestDynamicQuestionSet::initCompleteQuestionList ( ilObjTestDynamicQuestionSetConfig  $dynamicQuestionSetConfig,
  $answerStatusActiveId 
)
private

Definition at line 105 of file class.ilTestDynamicQuestionSet.php.

References buildQuestionList(), and ilObjTestDynamicQuestionSetConfig\getSourceQuestionPoolId().

Referenced by load().

106  {
107  $questionList = $this->buildQuestionList(
108  $dynamicQuestionSetConfig->getSourceQuestionPoolId(),
109  $answerStatusActiveId
110  );
111 
112  $questionList->load();
113 
114  return $questionList;
115  }
buildQuestionList($sourceQuestionPoolId, $answerStatusActiveId)
getSourceQuestionPoolId()
getter for source question pool id
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initFilteredQuestionList()

ilTestDynamicQuestionSet::initFilteredQuestionList ( ilObjTestDynamicQuestionSetConfig  $dynamicQuestionSetConfig,
ilTestDynamicQuestionSetFilterSelection  $filterSelection 
)
private

Definition at line 117 of file class.ilTestDynamicQuestionSet.php.

References buildQuestionList(), ilTestDynamicQuestionSetFilterSelection\getAnswerStatusActiveId(), ilTestDynamicQuestionSetFilterSelection\getAnswerStatusSelection(), ilTestDynamicQuestionSetFilterSelection\getForcedQuestionIds(), ilObjTestDynamicQuestionSetConfig\getOrderingTaxonomyId(), ilObjTestDynamicQuestionSetConfig\getSourceQuestionPoolId(), ilTestDynamicQuestionSetFilterSelection\getTaxonomySelection(), ilObjTaxonomy\getUsageOfObject(), ilObjTestDynamicQuestionSetConfig\isAnswerStatusFilterEnabled(), and ilObjTestDynamicQuestionSetConfig\isTaxonomyFilterEnabled().

Referenced by load().

118  {
119  $questionList = $this->buildQuestionList(
120  $dynamicQuestionSetConfig->getSourceQuestionPoolId(),
121  $filterSelection->getAnswerStatusActiveId()
122  );
123 
124  if ($dynamicQuestionSetConfig->isAnswerStatusFilterEnabled()) {
125  $questionList->setAnswerStatusFilter($filterSelection->getAnswerStatusSelection());
126  }
127 
128  if ($dynamicQuestionSetConfig->isTaxonomyFilterEnabled()) {
129  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
130 
131  $questionList->setAvailableTaxonomyIds(ilObjTaxonomy::getUsageOfObject(
132  $dynamicQuestionSetConfig->getSourceQuestionPoolId()
133  ));
134 
135  foreach ($filterSelection->getTaxonomySelection() as $taxId => $taxNodes) {
136  $questionList->addTaxonomyFilter(
137  $taxId,
138  $taxNodes,
139  $this->testOBJ->getId(),
140  $this->testOBJ->getType()
141  );
142  }
143  } elseif ($dynamicQuestionSetConfig->getOrderingTaxonomyId()) {
144  $questionList->setAvailableTaxonomyIds(array(
145  $dynamicQuestionSetConfig->getOrderingTaxonomyId()
146  ));
147  }
148 
149  $questionList->setForcedQuestionIds($filterSelection->getForcedQuestionIds());
150 
151  $questionList->load();
152 
153  return $questionList;
154  }
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
isTaxonomyFilterEnabled()
isser for taxonomie filter enabled
buildQuestionList($sourceQuestionPoolId, $answerStatusActiveId)
getSourceQuestionPoolId()
getter for source question pool id
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initSelectionQuestionList()

ilTestDynamicQuestionSet::initSelectionQuestionList ( ilObjTestDynamicQuestionSetConfig  $dynamicQuestionSetConfig,
ilTestDynamicQuestionSetFilterSelection  $filterSelection 
)
Parameters
ilObjTestDynamicQuestionSetConfig$dynamicQuestionSetConfig
ilTestDynamicQuestionSetFilterSelection$filterSelection
Returns
ilAssQuestionList

Definition at line 161 of file class.ilTestDynamicQuestionSet.php.

References buildQuestionList(), ilTestDynamicQuestionSetFilterSelection\getAnswerStatusActiveId(), ilObjTestDynamicQuestionSetConfig\getSourceQuestionPoolId(), ilTestDynamicQuestionSetFilterSelection\getTaxonomySelection(), ilObjTaxonomy\getUsageOfObject(), and ilObjTestDynamicQuestionSetConfig\isTaxonomyFilterEnabled().

Referenced by load().

162  {
163  $questionList = $this->buildQuestionList(
164  $dynamicQuestionSetConfig->getSourceQuestionPoolId(),
165  $filterSelection->getAnswerStatusActiveId()
166  );
167 
168  if ($dynamicQuestionSetConfig->isTaxonomyFilterEnabled()) {
169  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
170 
171  $questionList->setAvailableTaxonomyIds(ilObjTaxonomy::getUsageOfObject(
172  $dynamicQuestionSetConfig->getSourceQuestionPoolId()
173  ));
174 
175  foreach ($filterSelection->getTaxonomySelection() as $taxId => $taxNodes) {
176  $questionList->addTaxonomyFilter(
177  $taxId,
178  $taxNodes,
179  $this->testOBJ->getId(),
180  $this->testOBJ->getType()
181  );
182  }
183  }
184 
185  $questionList->load();
186 
187  return $questionList;
188  }
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
isTaxonomyFilterEnabled()
isser for taxonomie filter enabled
buildQuestionList($sourceQuestionPoolId, $answerStatusActiveId)
getSourceQuestionPoolId()
getter for source question pool id
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ load()

ilTestDynamicQuestionSet::load ( ilObjTestDynamicQuestionSetConfig  $dynamicQuestionSetConfig,
ilTestDynamicQuestionSetFilterSelection  $filterSelection 
)

Definition at line 80 of file class.ilTestDynamicQuestionSet.php.

References ilTestDynamicQuestionSetFilterSelection\getAnswerStatusActiveId(), initActualQuestionSequence(), initCompleteQuestionList(), initFilteredQuestionList(), and initSelectionQuestionList().

81  {
82  $this->completeQuestionList = $this->initCompleteQuestionList(
83  $dynamicQuestionSetConfig,
84  $filterSelection->getAnswerStatusActiveId()
85  );
86 
87  $this->selectionQuestionList = $this->initSelectionQuestionList(
88  $dynamicQuestionSetConfig,
89  $filterSelection
90  );
91 
92  $this->filteredQuestionList = $this->initFilteredQuestionList(
93  $dynamicQuestionSetConfig,
94  $filterSelection
95  );
96 
97  $this->actualQuestionSequence = $this->initActualQuestionSequence(
98  $dynamicQuestionSetConfig,
99  $this->filteredQuestionList
100  );
101  }
initFilteredQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
initActualQuestionSequence(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilAssQuestionList $questionList)
initSelectionQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
initCompleteQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, $answerStatusActiveId)
+ Here is the call graph for this function:

◆ questionExists()

ilTestDynamicQuestionSet::questionExists (   $questionId)

Definition at line 276 of file class.ilTestDynamicQuestionSet.php.

277  {
278  $questionData = $this->completeQuestionList->getQuestionDataArray();
279  return isset($questionData[$questionId]);
280  }

Field Documentation

◆ $actualQuestionSequence

ilTestDynamicQuestionSet::$actualQuestionSequence = array()
private

Definition at line 62 of file class.ilTestDynamicQuestionSet.php.

Referenced by getActualQuestionSequence().

◆ $completeQuestionList

ilTestDynamicQuestionSet::$completeQuestionList = null
private

Definition at line 47 of file class.ilTestDynamicQuestionSet.php.

Referenced by getCompleteQuestionList().

◆ $db

ilTestDynamicQuestionSet::$db = null
private

Definition at line 22 of file class.ilTestDynamicQuestionSet.php.

Referenced by __construct().

◆ $filteredQuestionList

ilTestDynamicQuestionSet::$filteredQuestionList = null
private

Definition at line 57 of file class.ilTestDynamicQuestionSet.php.

Referenced by getFilteredQuestionList().

◆ $lng

ilTestDynamicQuestionSet::$lng = null
private

Definition at line 27 of file class.ilTestDynamicQuestionSet.php.

Referenced by __construct().

◆ $pluginAdmin

ilTestDynamicQuestionSet::$pluginAdmin = null
private

Definition at line 37 of file class.ilTestDynamicQuestionSet.php.

Referenced by __construct().

◆ $refinery

ilTestDynamicQuestionSet::$refinery
protected

Definition at line 32 of file class.ilTestDynamicQuestionSet.php.

Referenced by __construct().

◆ $selectionQuestionList

ilTestDynamicQuestionSet::$selectionQuestionList = null
private

Definition at line 52 of file class.ilTestDynamicQuestionSet.php.

Referenced by getSelectionQuestionList().

◆ $testOBJ

ilTestDynamicQuestionSet::$testOBJ = null
private

Definition at line 42 of file class.ilTestDynamicQuestionSet.php.

Referenced by __construct().


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