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

Public Member Functions

 __construct (ilDBInterface $db, ilObjTest $testOBJ)
 
 getActiveId ()
 
 setActiveId ($activeId)
 
 getLastFinishedPass ()
 
 setLastFinishedPass ($lastFinishedPass)
 
 loadLastFinishedPass ()
 
 getExistingPasses ()
 
 hasExistingPasses ()
 
 getNumExistingPasses ()
 
 openPassExists ()
 
 getClosedPasses ()
 
 getReportablePasses ()
 
 hasReportablePasses ()
 
 getLastFinishedPassTimestamp ()
 
 hasTestPassedOnce ($activeId)
 

Protected Attributes

 $db
 
 $testOBJ
 

Private Member Functions

 passesLoaded ()
 
 ensureLoadedPasses ()
 
 loadPasses ()
 
 getLazyLoadedPasses ()
 
 fetchReportablePasses ($existingPasses)
 
 fetchClosedPasses ($existingPasses)
 
 fetchLastPass ($existingPasses)
 
 isReportablePass ($lastPass, $pass)
 
 checkLastFinishedPassInitialised ()
 
 isClosedPass ($pass)
 
 isReportingDateReached ()
 
 isProcessingTimeReached ($pass)
 

Private Attributes

 $activeId
 
 $lastFinishedPass = null
 
 $passes = null
 
 $testPassedOnceCache = array()
 

Detailed Description

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

Constructor & Destructor Documentation

◆ __construct()

ilTestPassesSelector::__construct ( ilDBInterface  $db,
ilObjTest  $testOBJ 
)

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

References $db, and $testOBJ.

40  {
41  $this->db = $db;
42  $this->testOBJ = $testOBJ;
43  }

Member Function Documentation

◆ checkLastFinishedPassInitialised()

ilTestPassesSelector::checkLastFinishedPassInitialised ( )
private

Definition at line 238 of file class.ilTestPassesSelector.php.

References getLastFinishedPass().

Referenced by isClosedPass().

239  {
240  if ($this->getLastFinishedPass() === null) {
241  throw new ilTestException('invalid object state: last finished pass was not set!');
242  }
243  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ensureLoadedPasses()

ilTestPassesSelector::ensureLoadedPasses ( )
private

Definition at line 71 of file class.ilTestPassesSelector.php.

References loadPasses(), and passesLoaded().

Referenced by getLazyLoadedPasses().

72  {
73  if (!$this->passesLoaded()) {
74  $this->loadPasses();
75  }
76  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fetchClosedPasses()

ilTestPassesSelector::fetchClosedPasses (   $existingPasses)
private

Definition at line 181 of file class.ilTestPassesSelector.php.

References isClosedPass().

Referenced by getClosedPasses().

181  : array
182  {
183  $closedPasses = array();
184 
185  foreach ($existingPasses as $pass) {
186  if ($this->isClosedPass($pass)) {
187  $closedPasses[] = $pass;
188  }
189  }
190 
191  return $closedPasses;
192  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fetchLastPass()

ilTestPassesSelector::fetchLastPass (   $existingPasses)
private

Definition at line 194 of file class.ilTestPassesSelector.php.

Referenced by fetchReportablePasses().

195  {
196  $lastPass = null;
197 
198  foreach ($existingPasses as $pass) {
199  if ($lastPass === null || $pass > $lastPass) {
200  $lastPass = $pass;
201  }
202  }
203 
204  return $lastPass;
205  }
+ Here is the caller graph for this function:

◆ fetchReportablePasses()

ilTestPassesSelector::fetchReportablePasses (   $existingPasses)
private

Definition at line 166 of file class.ilTestPassesSelector.php.

References fetchLastPass(), and isReportablePass().

Referenced by getReportablePasses().

166  : array
167  {
168  $lastPass = $this->fetchLastPass($existingPasses);
169 
170  $reportablePasses = array();
171 
172  foreach ($existingPasses as $pass) {
173  if ($this->isReportablePass($lastPass, $pass)) {
174  $reportablePasses[] = $pass;
175  }
176  }
177 
178  return $reportablePasses;
179  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getActiveId()

ilTestPassesSelector::getActiveId ( )

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

References $activeId.

Referenced by isProcessingTimeReached(), isReportablePass(), loadLastFinishedPass(), and loadPasses().

+ Here is the caller graph for this function:

◆ getClosedPasses()

ilTestPassesSelector::getClosedPasses ( )

Definition at line 144 of file class.ilTestPassesSelector.php.

References fetchClosedPasses(), and getExistingPasses().

Referenced by openPassExists().

144  : array
145  {
146  $existingPasses = $this->getExistingPasses();
147  $closedPasses = $this->fetchClosedPasses($existingPasses);
148 
149  return $closedPasses;
150  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getExistingPasses()

ilTestPassesSelector::getExistingPasses ( )

Definition at line 124 of file class.ilTestPassesSelector.php.

References getLazyLoadedPasses().

Referenced by getClosedPasses(), getNumExistingPasses(), getReportablePasses(), hasExistingPasses(), and openPassExists().

124  : array
125  {
126  return array_keys($this->getLazyLoadedPasses());
127  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLastFinishedPass()

ilTestPassesSelector::getLastFinishedPass ( )

Definition at line 55 of file class.ilTestPassesSelector.php.

References $lastFinishedPass.

Referenced by checkLastFinishedPassInitialised(), getLastFinishedPassTimestamp(), and isClosedPass().

+ Here is the caller graph for this function:

◆ getLastFinishedPassTimestamp()

ilTestPassesSelector::getLastFinishedPassTimestamp ( )
Returns
int timestamp

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

References $passes, getLastFinishedPass(), and getLazyLoadedPasses().

284  : ?int
285  {
286  $last_finished_pass = $this->getLastFinishedPass();
287  if ($last_finished_pass === null || $last_finished_pass === -1) {
288  return null;
289  }
290 
291  $passes = $this->getLazyLoadedPasses();
292  if (!isset($passes[$last_finished_pass])) {
293  return null;
294  }
295  return $passes[$last_finished_pass]['tstamp'];
296  }
+ Here is the call graph for this function:

◆ getLazyLoadedPasses()

ilTestPassesSelector::getLazyLoadedPasses ( )
private

Definition at line 101 of file class.ilTestPassesSelector.php.

References $passes, and ensureLoadedPasses().

Referenced by getExistingPasses(), and getLastFinishedPassTimestamp().

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

◆ getNumExistingPasses()

ilTestPassesSelector::getNumExistingPasses ( )

Definition at line 134 of file class.ilTestPassesSelector.php.

References getExistingPasses().

134  : int
135  {
136  return count($this->getExistingPasses());
137  }
+ Here is the call graph for this function:

◆ getReportablePasses()

ilTestPassesSelector::getReportablePasses ( )

Definition at line 152 of file class.ilTestPassesSelector.php.

References fetchReportablePasses(), and getExistingPasses().

Referenced by hasReportablePasses().

152  : array
153  {
154  $existingPasses = $this->getExistingPasses();
155 
156  $reportablePasses = $this->fetchReportablePasses($existingPasses);
157 
158  return $reportablePasses;
159  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasExistingPasses()

ilTestPassesSelector::hasExistingPasses ( )

Definition at line 129 of file class.ilTestPassesSelector.php.

References getExistingPasses().

129  : bool
130  {
131  return (bool) count($this->getExistingPasses());
132  }
+ Here is the call graph for this function:

◆ hasReportablePasses()

ilTestPassesSelector::hasReportablePasses ( )

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

References getReportablePasses().

161  : bool
162  {
163  return (bool) count($this->getReportablePasses());
164  }
+ Here is the call graph for this function:

◆ hasTestPassedOnce()

ilTestPassesSelector::hasTestPassedOnce (   $activeId)

Definition at line 298 of file class.ilTestPassesSelector.php.

References $activeId, $DIC, and $res.

Referenced by isReportablePass().

298  : bool
299  {
300  global $DIC; /* @var ILIAS\DI\Container $DIC */
301 
302  if (!isset($this->testPassedOnceCache[$activeId])) {
303  $this->testPassedOnceCache[$activeId] = false;
304 
305  $res = $DIC->database()->queryF(
306  "SELECT passed_once FROM tst_result_cache WHERE active_fi = %s",
307  array('integer'),
308  array($activeId)
309  );
310 
311  while ($row = $DIC->database()->fetchAssoc($res)) {
312  $this->testPassedOnceCache[$activeId] = (bool) $row['passed_once'];
313  }
314  }
315 
316  return $this->testPassedOnceCache[$activeId];
317  }
$res
Definition: ltiservices.php:69
global $DIC
Definition: feed.php:28
+ Here is the caller graph for this function:

◆ isClosedPass()

ilTestPassesSelector::isClosedPass (   $pass)
private

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

References checkLastFinishedPassInitialised(), getLastFinishedPass(), and isProcessingTimeReached().

Referenced by fetchClosedPasses(), and isReportablePass().

245  : bool
246  {
248 
249  if ($pass <= $this->getLastFinishedPass()) {
250  return true;
251  }
252 
253  if ($this->isProcessingTimeReached($pass)) {
254  return true;
255  }
256 
257  return false;
258  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isProcessingTimeReached()

ilTestPassesSelector::isProcessingTimeReached (   $pass)
private

Definition at line 266 of file class.ilTestPassesSelector.php.

References getActiveId().

Referenced by isClosedPass().

266  : bool
267  {
268  if (!$this->testOBJ->getEnableProcessingTime()) {
269  return false;
270  }
271 
272  $startingTime = $this->testOBJ->getStartingTimeOfUser($this->getActiveId(), $pass);
273 
274  if ($startingTime === false) {
275  return false;
276  }
277 
278  return $this->testOBJ->isMaxProcessingTimeReached($startingTime, $this->getActiveId());
279  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isReportablePass()

ilTestPassesSelector::isReportablePass (   $lastPass,
  $pass 
)
private

Definition at line 207 of file class.ilTestPassesSelector.php.

References getActiveId(), hasTestPassedOnce(), isClosedPass(), isReportingDateReached(), ilObjTest\SCORE_REPORTING_AFTER_PASSED, ilObjTest\SCORE_REPORTING_DATE, ilObjTest\SCORE_REPORTING_FINISHED, and ilObjTest\SCORE_REPORTING_IMMIDIATLY.

Referenced by fetchReportablePasses().

207  : bool
208  {
209  switch ($this->testOBJ->getScoreReporting()) {
211 
212  return true;
213 
215 
216  return $this->isReportingDateReached();
217 
219 
220  if ($pass < $lastPass) {
221  return true;
222  }
223 
224  return $this->isClosedPass($pass);
225 
227 
228  if (!$this->hasTestPassedOnce($this->getActiveId())) {
229  return false;
230  }
231 
232  return $this->isClosedPass($pass);
233  }
234 
235  return false;
236  }
const SCORE_REPORTING_AFTER_PASSED
const SCORE_REPORTING_IMMIDIATLY
const SCORE_REPORTING_FINISHED
const SCORE_REPORTING_DATE
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isReportingDateReached()

ilTestPassesSelector::isReportingDateReached ( )
private

Definition at line 260 of file class.ilTestPassesSelector.php.

Referenced by isReportablePass().

260  : bool
261  {
262  $reporting_date = $this->testOBJ->getScoreSettings()->getResultSummarySettings()->getReportingDate();
263  return $reporting_date <= new DateTimeImmutable('now', new DateTimeZone('UTC'));
264  }
+ Here is the caller graph for this function:

◆ loadLastFinishedPass()

ilTestPassesSelector::loadLastFinishedPass ( )

Definition at line 107 of file class.ilTestPassesSelector.php.

References $query, $res, getActiveId(), and setLastFinishedPass().

108  {
109  $query = "
110  SELECT last_finished_pass FROM tst_active WHERE active_id = %s
111  ";
112 
113  $res = $this->db->queryF(
114  $query,
115  array('integer'),
116  array($this->getActiveId())
117  );
118 
119  while ($row = $this->db->fetchAssoc($res)) {
120  $this->setLastFinishedPass($row['last_finished_pass']);
121  }
122  }
$res
Definition: ltiservices.php:69
setLastFinishedPass($lastFinishedPass)
$query
+ Here is the call graph for this function:

◆ loadPasses()

ilTestPassesSelector::loadPasses ( )
private

Definition at line 77 of file class.ilTestPassesSelector.php.

References $query, $res, and getActiveId().

Referenced by ensureLoadedPasses().

78  {
79  $query = "
80  SELECT DISTINCT tst_pass_result.* FROM tst_pass_result
81  LEFT JOIN tst_test_result
82  ON tst_pass_result.pass = tst_test_result.pass
83  AND tst_pass_result.active_fi = tst_test_result.active_fi
84  WHERE tst_pass_result.active_fi = %s
85  ORDER BY tst_pass_result.pass
86  ";
87 
88  $res = $this->db->queryF(
89  $query,
90  array('integer'),
91  array($this->getActiveId())
92  );
93 
94  $this->passes = array();
95 
96  while ($row = $this->db->fetchAssoc($res)) {
97  $this->passes[$row['pass']] = $row;
98  }
99  }
$res
Definition: ltiservices.php:69
$query
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ openPassExists()

ilTestPassesSelector::openPassExists ( )

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

References getClosedPasses(), and getExistingPasses().

139  : bool
140  {
141  return count($this->getExistingPasses()) > count($this->getClosedPasses());
142  }
+ Here is the call graph for this function:

◆ passesLoaded()

ilTestPassesSelector::passesLoaded ( )
private

Definition at line 66 of file class.ilTestPassesSelector.php.

Referenced by ensureLoadedPasses().

66  : bool
67  {
68  return is_array($this->passes);
69  }
+ Here is the caller graph for this function:

◆ setActiveId()

ilTestPassesSelector::setActiveId (   $activeId)

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

References $activeId.

Referenced by ilTestSession\hasSinglePassReportable(), ilObjTest\removeQuestionFromSequences(), and ilTestScoring\updatePassAndTestResults().

51  {
52  $this->activeId = $activeId;
53  }
+ Here is the caller graph for this function:

◆ setLastFinishedPass()

ilTestPassesSelector::setLastFinishedPass (   $lastFinishedPass)

Definition at line 60 of file class.ilTestPassesSelector.php.

References $lastFinishedPass.

Referenced by loadLastFinishedPass().

61  {
63  $this->lastFinishedPass = $lastFinishedPass;
64  }
+ Here is the caller graph for this function:

Field Documentation

◆ $activeId

ilTestPassesSelector::$activeId
private

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

Referenced by getActiveId(), hasTestPassedOnce(), and setActiveId().

◆ $db

ilTestPassesSelector::$db
protected

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

Referenced by __construct().

◆ $lastFinishedPass

ilTestPassesSelector::$lastFinishedPass = null
private

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

Referenced by getLastFinishedPass(), and setLastFinishedPass().

◆ $passes

ilTestPassesSelector::$passes = null
private

◆ $testOBJ

ilTestPassesSelector::$testOBJ
protected

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

Referenced by __construct().

◆ $testPassedOnceCache

ilTestPassesSelector::$testPassedOnceCache = array()
private

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


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