ILIAS  release_8 Revision v8.19-1-g4e8f2f9140c
All Data Structures Namespaces Files Functions Variables Modules Pages
ilTestDynamicQuestionSet Class Reference
+ Collaboration diagram for ilTestDynamicQuestionSet:

Public Member Functions

 __construct (ilDBInterface $db, ilLanguage $lng, Refinery $refinery, ilComponentRepository $component_repository, ilObjTest $testOBJ)
 
 load (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
 
 initSelectionQuestionList (ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)
 
 getActualQuestionSequence ()
 
 questionExists ($questionId)
 
 getQuestionData ($questionId)
 
 getAllQuestionsData ()
 
 getCompleteQuestionList ()
 
 getSelectionQuestionList ()
 
 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)
 
 buildQuestionList ($sourceQuestionPoolId, $answerStatusActiveId)
 

Private Attributes

ilDBInterface $db
 
ilLanguage $lng
 
Refinery $refinery
 
ilComponentRepository $component_repository
 
ilObjTest $testOBJ
 
ilAssQuestionList $completeQuestionList = null
 
ilAssQuestionList $selectionQuestionList = null
 
ilAssQuestionList $filteredQuestionList = null
 
array $actualQuestionSequence = []
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilTestDynamicQuestionSet::__construct ( ilDBInterface  $db,
ilLanguage  $lng,
Refinery  $refinery,
ilComponentRepository  $component_repository,
ilObjTest  $testOBJ 
)

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

References $component_repository, $db, $lng, $refinery, $testOBJ, ILIAS\Repository\lng(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

Member Function Documentation

◆ buildQuestionList()

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

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

References ILIAS\Repository\lng(), and ILIAS\Repository\refinery().

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

295  {
296  $questionList = new ilAssQuestionList($this->db, $this->lng, $this->refinery, $this->component_repository);
297  $questionList->setParentObjId($sourceQuestionPoolId);
298  $questionList->setAnswerStatusActiveId($answerStatusActiveId);
299  return $questionList;
300  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getActualQuestionSequence()

ilTestDynamicQuestionSet::getActualQuestionSequence ( )

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

References $actualQuestionSequence.

241  : array
242  {
244  }

◆ getAllQuestionsData()

ilTestDynamicQuestionSet::getAllQuestionsData ( )

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

258  : array
259  {
260  return $this->completeQuestionList->getQuestionDataArray();
261  }

◆ getCompleteQuestionList()

ilTestDynamicQuestionSet::getCompleteQuestionList ( )

◆ getFilteredQuestionList()

ilTestDynamicQuestionSet::getFilteredQuestionList ( )

◆ getQuestionData()

ilTestDynamicQuestionSet::getQuestionData (   $questionId)

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

253  {
254  $questionData = $this->completeQuestionList->getQuestionDataArray();
255  return $questionData[$questionId];
256  }

◆ getQuestionSequenceStructuredByTaxonomy()

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

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

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

Referenced by initActualQuestionSequence().

174  : array
175  {
176  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
177  $tax = new ilObjTaxonomy($orderingTaxId);
178 
179  require_once 'Modules/Test/classes/class.ilTestTaxonomyTree.php';
180  $tree = new ilTestTaxonomyTree($orderingTaxId);
181  $tree->initOrderedTreeIndex($tax);
182 
183  $questionsByNode = array();
184  $nodelessQuestions = array();
185 
186  foreach ($questionList->getQuestionDataArray() as $qId => $qData) {
187  if (isset($qData['taxonomies'][$orderingTaxId]) && count($qData['taxonomies'][$orderingTaxId])) {
188  foreach ($qData['taxonomies'][$orderingTaxId] as $nodeId => $itemData) {
189  $nodeOrderingPath = $tree->getNodeOrderingPathString($itemData['node_id']);
190 
191  if (!isset($questionsByNode[ $nodeOrderingPath ])) {
192  $questionsByNode[ $nodeOrderingPath ] = array();
193  }
194 
195  if ($tax->getItemSorting() == ilObjTaxonomy::SORT_MANUAL) {
196  $questionsByNode[ $nodeOrderingPath ][$itemData['order_nr']] = $qId;
197  } else {
198  $questionsByNode[ $nodeOrderingPath ][$qData['title'] . '::' . $qId] = $qId;
199  }
200  }
201  } else {
202  $nodelessQuestions[$qData['tstamp'] . '::' . $qId] = $qId;
203  }
204  }
205 
206  foreach ($questionsByNode as $path => $questions) {
207  if ($tax->getItemSorting() == ilObjTaxonomy::SORT_MANUAL) {
208  ksort($questions, SORT_NUMERIC);
209  } else {
210  ksort($questions, SORT_STRING);
211  }
212 
213  $questionsByNode[$path] = array_values($questions);
214  }
215 
216  ksort($questionsByNode, SORT_STRING);
217  $sequence = array_values($questionsByNode);
218 
219  ksort($nodelessQuestions);
220  $sequence[] = array_values($nodelessQuestions);
221 
222  return $sequence;
223  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$path
Definition: ltiservices.php:32
+ 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 225 of file class.ilTestDynamicQuestionSet.php.

References ilAssQuestionList\getQuestionDataArray().

Referenced by initActualQuestionSequence().

225  : array
226  {
227  $sequence = array();
228 
229  foreach ($questionList->getQuestionDataArray() as $qId => $qData) {
230  $sequence[ $qData['tstamp'] . '::' . $qId ] = $qId;
231  }
232 
233  ksort($sequence);
234  $sequence = array_values($sequence);
235 
236  return array($sequence);
237  }
+ 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 160 of file class.ilTestDynamicQuestionSet.php.

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

Referenced by load().

160  : array
161  {
162  if ($dynamicQuestionSetConfig->getOrderingTaxonomyId()) {
164  $questionList,
165  $dynamicQuestionSetConfig->getOrderingTaxonomyId()
166  );
167  }
168 
169  return $this->getQuestionSequenceStructuredByUpdateDate($questionList);
170  }
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 75 of file class.ilTestDynamicQuestionSet.php.

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

Referenced by load().

76  {
77  $questionList = $this->buildQuestionList(
78  $dynamicQuestionSetConfig->getSourceQuestionPoolId(),
79  $answerStatusActiveId
80  );
81 
82  $questionList->load();
83 
84  return $questionList;
85  }
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 87 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().

88  {
89  $questionList = $this->buildQuestionList(
90  $dynamicQuestionSetConfig->getSourceQuestionPoolId(),
91  $filterSelection->getAnswerStatusActiveId()
92  );
93 
94  if ($dynamicQuestionSetConfig->isAnswerStatusFilterEnabled()) {
95  $questionList->setAnswerStatusFilter($filterSelection->getAnswerStatusSelection());
96  }
97 
98  if ($dynamicQuestionSetConfig->isTaxonomyFilterEnabled()) {
99  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
100 
101  $questionList->setAvailableTaxonomyIds(ilObjTaxonomy::getUsageOfObject(
102  $dynamicQuestionSetConfig->getSourceQuestionPoolId()
103  ));
104 
105  foreach ($filterSelection->getTaxonomySelection() as $taxId => $taxNodes) {
106  $questionList->addTaxonomyFilter(
107  $taxId,
108  $taxNodes,
109  $this->testOBJ->getId(),
110  $this->testOBJ->getType()
111  );
112  }
113  } elseif ($dynamicQuestionSetConfig->getOrderingTaxonomyId()) {
114  $questionList->setAvailableTaxonomyIds(array(
115  $dynamicQuestionSetConfig->getOrderingTaxonomyId()
116  ));
117  }
118 
119  $questionList->setForcedQuestionIds($filterSelection->getForcedQuestionIds());
120 
121  $questionList->load();
122 
123  return $questionList;
124  }
isTaxonomyFilterEnabled()
isser for taxonomie filter enabled
static getUsageOfObject(int $a_obj_id, bool $a_include_titles=false)
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 131 of file class.ilTestDynamicQuestionSet.php.

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

Referenced by load().

132  {
133  $questionList = $this->buildQuestionList(
134  $dynamicQuestionSetConfig->getSourceQuestionPoolId(),
135  $filterSelection->getAnswerStatusActiveId()
136  );
137 
138  if ($dynamicQuestionSetConfig->isTaxonomyFilterEnabled()) {
139  require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php';
140 
141  $questionList->setAvailableTaxonomyIds(ilObjTaxonomy::getUsageOfObject(
142  $dynamicQuestionSetConfig->getSourceQuestionPoolId()
143  ));
144 
145  foreach ($filterSelection->getTaxonomySelection() as $taxId => $taxNodes) {
146  $questionList->addTaxonomyFilter(
147  $taxId,
148  $taxNodes,
149  $this->testOBJ->getId(),
150  $this->testOBJ->getType()
151  );
152  }
153  }
154 
155  $questionList->load();
156 
157  return $questionList;
158  }
isTaxonomyFilterEnabled()
isser for taxonomie filter enabled
static getUsageOfObject(int $a_obj_id, bool $a_include_titles=false)
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 50 of file class.ilTestDynamicQuestionSet.php.

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

50  : void
51  {
52  $this->completeQuestionList = $this->initCompleteQuestionList(
53  $dynamicQuestionSetConfig,
54  $filterSelection->getAnswerStatusActiveId()
55  );
56 
57  $this->selectionQuestionList = $this->initSelectionQuestionList(
58  $dynamicQuestionSetConfig,
59  $filterSelection
60  );
61 
62  $this->filteredQuestionList = $this->initFilteredQuestionList(
63  $dynamicQuestionSetConfig,
64  $filterSelection
65  );
66 
67  $this->actualQuestionSequence = $this->initActualQuestionSequence(
68  $dynamicQuestionSetConfig,
69  $this->filteredQuestionList
70  );
71  }
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 246 of file class.ilTestDynamicQuestionSet.php.

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

Field Documentation

◆ $actualQuestionSequence

array ilTestDynamicQuestionSet::$actualQuestionSequence = []
private

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

Referenced by getActualQuestionSequence().

◆ $completeQuestionList

ilAssQuestionList ilTestDynamicQuestionSet::$completeQuestionList = null
private

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

Referenced by getCompleteQuestionList().

◆ $component_repository

ilComponentRepository ilTestDynamicQuestionSet::$component_repository
private

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

Referenced by __construct().

◆ $db

ilDBInterface ilTestDynamicQuestionSet::$db
private

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

Referenced by __construct().

◆ $filteredQuestionList

ilAssQuestionList ilTestDynamicQuestionSet::$filteredQuestionList = null
private

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

Referenced by getFilteredQuestionList().

◆ $lng

ilLanguage ilTestDynamicQuestionSet::$lng
private

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

Referenced by __construct().

◆ $refinery

Refinery ilTestDynamicQuestionSet::$refinery
private

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

Referenced by __construct().

◆ $selectionQuestionList

ilAssQuestionList ilTestDynamicQuestionSet::$selectionQuestionList = null
private

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

Referenced by getSelectionQuestionList().

◆ $testOBJ

ilObjTest ilTestDynamicQuestionSet::$testOBJ
private

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

Referenced by __construct().


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