ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilTestSequenceRandomQuestionSet.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Modules/Test/classes/class.ilTestSequence.php';
5 require_once 'Modules/Test/interfaces/interface.ilTestRandomQuestionSequence.php';
6 
7 
15 {
17 
18  public function loadQuestions(ilTestQuestionSetConfig $testQuestionSetConfig = null, $taxonomyFilterSelection = array())
19  {
20  global $DIC;
21  $ilDB = $DIC['ilDB'];
22 
23  $this->questions = array();
24 
25  $result = $ilDB->queryF(
26  "SELECT tst_test_rnd_qst.* FROM tst_test_rnd_qst, qpl_questions WHERE tst_test_rnd_qst.active_fi = %s AND qpl_questions.question_id = tst_test_rnd_qst.question_fi AND tst_test_rnd_qst.pass = %s ORDER BY sequence",
27  array('integer','integer'),
28  array($this->active_id, $this->pass)
29  );
30  // The following is a fix for random tests prior to ILIAS 3.8. If someone started a random test in ILIAS < 3.8, there
31  // is only one test pass (pass = 0) in tst_test_rnd_qst while with ILIAS 3.8 there are questions for every test pass.
32  // To prevent problems with tests started in an older version and continued in ILIAS 3.8, the first pass should be taken if
33  // no questions are present for a newer pass.
34  if ($result->numRows() == 0) {
35  $result = $ilDB->queryF(
36  "SELECT tst_test_rnd_qst.* FROM tst_test_rnd_qst, qpl_questions WHERE tst_test_rnd_qst.active_fi = %s AND qpl_questions.question_id = tst_test_rnd_qst.question_fi AND tst_test_rnd_qst.pass = 0 ORDER BY sequence",
37  array('integer'),
38  array($this->active_id)
39  );
40  }
41 
42  $index = 1;
43 
44  while ($data = $ilDB->fetchAssoc($result)) {
45  $this->questions[$index++] = $data["question_fi"];
46 
47  $this->responsibleSourcePoolDefinitionByQuestion[$data['question_fi']] = $data['src_pool_def_fi'];
48  }
49  }
50 
62  {
63  global $DIC;
64  $ilDB = $DIC['ilDB'];
65  $result = $ilDB->queryF(
66  "SELECT test_random_question_id FROM tst_test_rnd_qst WHERE active_fi = %s AND pass = %s",
67  array('integer','integer'),
68  array($active_id, $pass)
69  );
70  return ($result->numRows() > 0) ? true : false;
71  }
72 
73  public function getResponsibleSourcePoolDefinitionId($questionId)
74  {
75  if (isset($this->responsibleSourcePoolDefinitionByQuestion[$questionId])) {
76  return $this->responsibleSourcePoolDefinitionByQuestion[$questionId];
77  }
78 
79  return null;
80  }
81 }
loadQuestions(ilTestQuestionSetConfig $testQuestionSetConfig=null, $taxonomyFilterSelection=array())
$result
global $DIC
Definition: saml.php:7
$index
Definition: metadata.php:60
Test sequence handler.
global $ilDB
hasRandomQuestionsForPass($active_id, $pass)
!!! LEGACY CODE !!!
$data
Definition: bench.php:6