ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilTestDynamicQuestionSet Class Reference
+ Collaboration diagram for ilTestDynamicQuestionSet:

Public Member Functions

 __construct (ilDB $db, ilLanguage $lng, ilPluginAdmin $pluginAdmin, ilObjTest $testOBJ)
 Constructor. More...
 
 load (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
 
 getActualQuestionSequence ()
 
 questionExists ($questionId)
 
 getQuestionData ($questionId)
 
 getAllQuestionsData ()
 
 getCompleteQuestionList ()
 
 getFilteredQuestionList ()
 

Private Member Functions

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

Private Attributes

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

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilTestDynamicQuestionSet::__construct ( ilDB  $db,
ilLanguage  $lng,
ilPluginAdmin  $pluginAdmin,
ilObjTest  $testOBJ 
)

Constructor.

Parameters
ilObjTest$testOBJ

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

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

Member Function Documentation

◆ getActualQuestionSequence()

ilTestDynamicQuestionSet::getActualQuestionSequence ( )

◆ getAllQuestionsData()

ilTestDynamicQuestionSet::getAllQuestionsData ( )

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

252  {
253  return $this->completeQuestionList->getQuestionDataArray();
254  }

◆ getCompleteQuestionList()

ilTestDynamicQuestionSet::getCompleteQuestionList ( )

◆ getFilteredQuestionList()

ilTestDynamicQuestionSet::getFilteredQuestionList ( )

◆ getQuestionData()

ilTestDynamicQuestionSet::getQuestionData (   $questionId)

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

246  {
247  $questionData = $this->completeQuestionList->getQuestionDataArray();
248  return $questionData[$questionId];
249  }

◆ getQuestionSequenceStructuredByTaxonomy()

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

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

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

Referenced by initActualQuestionSequence().

154  {
155  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
156  $tax = new ilObjTaxonomy($orderingTaxId);
157 
158  require_once 'Modules/Test/classes/class.ilTestTaxonomyTree.php';
159  $tree = new ilTestTaxonomyTree($orderingTaxId);
160  $tree->initOrderedTreeIndex($tax);
161 
162  $questionsByNode = array();
163  $nodelessQuestions = array();
164 
165  foreach($questionList->getQuestionDataArray() as $qId => $qData)
166  {
167  if( isset($qData['taxonomies'][$orderingTaxId]) && count($qData['taxonomies'][$orderingTaxId]) )
168  {
169  foreach($qData['taxonomies'][$orderingTaxId] as $nodeId => $itemData)
170  {
171  $nodeOrderingPath = $tree->getNodeOrderingPathString($itemData['node_id']);
172 
173  if( !isset($questionsByNode[ $nodeOrderingPath ]) )
174  {
175  $questionsByNode[ $nodeOrderingPath ] = array();
176  }
177 
178  if($tax->getItemSorting() == ilObjTaxonomy::SORT_MANUAL)
179  {
180  $questionsByNode[ $nodeOrderingPath ][$itemData['order_nr']] = $qId;
181  }
182  else
183  {
184  $questionsByNode[ $nodeOrderingPath ][$qData['title'].'::'.$qId] = $qId;
185  }
186  }
187  }
188  else
189  {
190  $nodelessQuestions[$qData['tstamp'].'::'.$qId] = $qId;
191  }
192  }
193 
194  foreach($questionsByNode as $path => $questions)
195  {
196  if($tax->getItemSorting() == ilObjTaxonomy::SORT_MANUAL)
197  {
198  ksort($questions, SORT_NUMERIC);
199  }
200  else
201  {
202  ksort($questions, SORT_STRING);
203  }
204 
205  $questionsByNode[$path] = array_values($questions);
206  }
207 
208  ksort($questionsByNode, SORT_STRING);
209  $sequence = array_values($questionsByNode);
210 
211  ksort($nodelessQuestions);
212  $sequence[] = array_values($nodelessQuestions);
213 
214  return $sequence;
215  }
$path
Definition: index.php:22
+ 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 217 of file class.ilTestDynamicQuestionSet.php.

References ilAssQuestionList\getQuestionDataArray().

Referenced by initActualQuestionSequence().

218  {
219  $sequence = array();
220 
221  foreach($questionList->getQuestionDataArray() as $qId => $qData)
222  {
223  $sequence[ $qData['tstamp'].'::'.$qId ] = $qId;
224  }
225 
226  ksort($sequence);
227  $sequence = array_values($sequence);
228 
229  return array($sequence);
230  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initActualQuestionSequence()

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

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

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

Referenced by load().

140  {
141  if( $dynamicQuestionSetConfig->getOrderingTaxonomyId() )
142  {
144  $questionList, $dynamicQuestionSetConfig->getOrderingTaxonomyId()
145  );
146  }
147 
148  return $this->getQuestionSequenceStructuredByUpdateDate($questionList);
149  }
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 84 of file class.ilTestDynamicQuestionSet.php.

References ilObjTestDynamicQuestionSetConfig\getSourceQuestionPoolId().

Referenced by load().

85  {
86  $questionList = new ilAssQuestionList($this->db, $this->lng, $this->pluginAdmin);
87 
88  $questionList->setParentObjId($dynamicQuestionSetConfig->getSourceQuestionPoolId());
89 
90  $questionList->setAnswerStatusActiveId($answerStatusActiveId);
91 
92  $questionList->load();
93 
94  return $questionList;
95  }
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 97 of file class.ilTestDynamicQuestionSet.php.

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

Referenced by load().

98  {
99  $questionList = new ilAssQuestionList($this->db, $this->lng, $this->pluginAdmin);
100 
101  $questionList->setParentObjId($dynamicQuestionSetConfig->getSourceQuestionPoolId());
102 
103  $questionList->setAnswerStatusActiveId($filterSelection->getAnswerStatusActiveId());
104 
105  if( $dynamicQuestionSetConfig->isAnswerStatusFilterEnabled() )
106  {
107  $questionList->setAnswerStatusFilter($filterSelection->getAnswerStatusSelection());
108  }
109 
110  if( $dynamicQuestionSetConfig->isTaxonomyFilterEnabled() )
111  {
112  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
113 
114  $questionList->setAvailableTaxonomyIds( ilObjTaxonomy::getUsageOfObject(
115  $dynamicQuestionSetConfig->getSourceQuestionPoolId()
116  ));
117 
118  foreach($filterSelection->getTaxonomySelection() as $taxId => $taxNodes)
119  {
120  $questionList->addTaxonomyFilter(
121  $taxId, $taxNodes, $this->testOBJ->getId(), $this->testOBJ->getType()
122  );
123  }
124  }
125  elseif( $dynamicQuestionSetConfig->getOrderingTaxonomyId() )
126  {
127  $questionList->setAvailableTaxonomyIds( array(
128  $dynamicQuestionSetConfig->getOrderingTaxonomyId()
129  ));
130  }
131 
132  $questionList->setForcedQuestionIds($filterSelection->getForcedQuestionIds());
133 
134  $questionList->load();
135 
136  return $questionList;
137  }
static getUsageOfObject($a_obj_id, $a_include_titles=false)
Get usage of object.
isTaxonomyFilterEnabled()
isser for taxonomie filter enabled
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 67 of file class.ilTestDynamicQuestionSet.php.

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

68  {
69  $this->completeQuestionList = $this->initCompleteQuestionList(
70  $dynamicQuestionSetConfig, $filterSelection->getAnswerStatusActiveId()
71  );
72 
73  $this->filteredQuestionList = $this->initFilteredQuestionList(
74  $dynamicQuestionSetConfig, $filterSelection
75  );
76 
77  $this->actualQuestionSequence = $this->initActualQuestionSequence(
78  $dynamicQuestionSetConfig, $this->filteredQuestionList
79  );
80  }
initFilteredQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
initActualQuestionSequence(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilAssQuestionList $questionList)
initCompleteQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, $answerStatusActiveId)
+ Here is the call graph for this function:

◆ questionExists()

ilTestDynamicQuestionSet::questionExists (   $questionId)

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

240  {
241  $questionData = $this->completeQuestionList->getQuestionDataArray();
242  return isset($questionData[$questionId]);
243  }

Field Documentation

◆ $actualQuestionSequence

ilTestDynamicQuestionSet::$actualQuestionSequence = array()
private

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

Referenced by getActualQuestionSequence().

◆ $completeQuestionList

ilTestDynamicQuestionSet::$completeQuestionList = null
private

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

Referenced by getCompleteQuestionList().

◆ $db

ilTestDynamicQuestionSet::$db = null
private

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

Referenced by __construct().

◆ $filteredQuestionList

ilTestDynamicQuestionSet::$filteredQuestionList = null
private

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

Referenced by getFilteredQuestionList().

◆ $lng

ilTestDynamicQuestionSet::$lng = null
private

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

Referenced by __construct().

◆ $pluginAdmin

ilTestDynamicQuestionSet::$pluginAdmin = null
private

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

Referenced by __construct().

◆ $testOBJ

ilTestDynamicQuestionSet::$testOBJ = null
private

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

Referenced by __construct().


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