ILIAS  release_8 Revision v8.24
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 
)

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.

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 }

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

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

+ 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.

241 : array
242 {
244 }

References $actualQuestionSequence.

◆ getAllQuestionsData()

ilTestDynamicQuestionSet::getAllQuestionsData ( )

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

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

◆ getCompleteQuestionList()

ilTestDynamicQuestionSet::getCompleteQuestionList ( )
Returns
ilAssQuestionList

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

269 {
271 }

References $completeQuestionList.

◆ getFilteredQuestionList()

ilTestDynamicQuestionSet::getFilteredQuestionList ( )
Returns
ilAssQuestionList

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

285 {
287 }

References $filteredQuestionList.

◆ 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.

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

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

Referenced by initActualQuestionSequence().

+ 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.

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 }

References ilAssQuestionList\getQuestionDataArray().

Referenced by initActualQuestionSequence().

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

◆ getSelectionQuestionList()

ilTestDynamicQuestionSet::getSelectionQuestionList ( )
Returns
ilAssQuestionList

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

277 {
279 }

References $selectionQuestionList.

◆ initActualQuestionSequence()

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

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

160 : array
161 {
162 if ($dynamicQuestionSetConfig->getOrderingTaxonomyId()) {
164 $questionList,
165 $dynamicQuestionSetConfig->getOrderingTaxonomyId()
166 );
167 }
168
169 return $this->getQuestionSequenceStructuredByUpdateDate($questionList);
170 }
getQuestionSequenceStructuredByTaxonomy(ilAssQuestionList $questionList, $orderingTaxId)
getQuestionSequenceStructuredByUpdateDate(ilAssQuestionList $questionList)

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

Referenced by load().

+ 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.

76 {
77 $questionList = $this->buildQuestionList(
78 $dynamicQuestionSetConfig->getSourceQuestionPoolId(),
79 $answerStatusActiveId
80 );
81
82 $questionList->load();
83
84 return $questionList;
85 }
getSourceQuestionPoolId()
getter for source question pool id
buildQuestionList($sourceQuestionPoolId, $answerStatusActiveId)

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

Referenced by load().

+ 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.

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 }
static getUsageOfObject(int $a_obj_id, bool $a_include_titles=false)
isTaxonomyFilterEnabled()
isser for taxonomie filter enabled

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

Referenced by load().

+ 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.

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 }

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

Referenced by load().

+ 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.

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)
initCompleteQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, $answerStatusActiveId)
initActualQuestionSequence(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilAssQuestionList $questionList)
initSelectionQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection)

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

+ 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: