ILIAS  release_7 Revision v7.30-3-g800a261c036
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 11 of file class.ilTestPassesSelector.php.

Constructor & Destructor Documentation

◆ __construct()

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

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

26 {
27 $this->db = $db;
28 $this->testOBJ = $testOBJ;
29 }

References $db, and $testOBJ.

Member Function Documentation

◆ checkLastFinishedPassInitialised()

ilTestPassesSelector::checkLastFinishedPassInitialised ( )
private

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

225 {
226 if ($this->getLastFinishedPass() === null) {
227 throw new ilTestException('invalid object state: last finished pass was not set!');
228 }
229 }
Base Exception for all Exceptions relating to Modules/Test.

References getLastFinishedPass().

Referenced by isClosedPass().

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

◆ ensureLoadedPasses()

ilTestPassesSelector::ensureLoadedPasses ( )
private

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

58 {
59 if (!$this->passesLoaded()) {
60 $this->loadPasses();
61 }
62 }

References loadPasses(), and passesLoaded().

Referenced by getLazyLoadedPasses().

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

◆ fetchClosedPasses()

ilTestPassesSelector::fetchClosedPasses (   $existingPasses)
private

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

168 {
169 $closedPasses = array();
170
171 foreach ($existingPasses as $pass) {
172 if ($this->isClosedPass($pass)) {
173 $closedPasses[] = $pass;
174 }
175 }
176
177 return $closedPasses;
178 }

References $pass, and isClosedPass().

Referenced by getClosedPasses().

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

◆ fetchLastPass()

ilTestPassesSelector::fetchLastPass (   $existingPasses)
private

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

181 {
182 $lastPass = null;
183
184 foreach ($existingPasses as $pass) {
185 if ($lastPass === null || $pass > $lastPass) {
186 $lastPass = $pass;
187 }
188 }
189
190 return $lastPass;
191 }

References $pass.

Referenced by fetchReportablePasses().

+ Here is the caller graph for this function:

◆ fetchReportablePasses()

ilTestPassesSelector::fetchReportablePasses (   $existingPasses)
private

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

153 {
154 $lastPass = $this->fetchLastPass($existingPasses);
155
156 $reportablePasses = array();
157
158 foreach ($existingPasses as $pass) {
159 if ($this->isReportablePass($lastPass, $pass)) {
160 $reportablePasses[] = $pass;
161 }
162 }
163
164 return $reportablePasses;
165 }

References $pass, fetchLastPass(), and isReportablePass().

Referenced by getReportablePasses().

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

◆ getActiveId()

ilTestPassesSelector::getActiveId ( )

Definition at line 31 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 130 of file class.ilTestPassesSelector.php.

131 {
132 $existingPasses = $this->getExistingPasses();
133 $closedPasses = $this->fetchClosedPasses($existingPasses);
134
135 return $closedPasses;
136 }

References fetchClosedPasses(), and getExistingPasses().

Referenced by openPassExists().

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

◆ getExistingPasses()

ilTestPassesSelector::getExistingPasses ( )

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

111 {
112 return array_keys($this->getLazyLoadedPasses());
113 }

References getLazyLoadedPasses().

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

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

◆ getLastFinishedPass()

ilTestPassesSelector::getLastFinishedPass ( )

Definition at line 41 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 279 of file class.ilTestPassesSelector.php.

280 {
281 if ($this->getLastFinishedPass() === null) {
282 return null;
283 }
284
285 $passes = $this->getLazyLoadedPasses();
286 return $passes[$this->getLastFinishedPass()]['tstamp'];
287 }

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

+ Here is the call graph for this function:

◆ getLazyLoadedPasses()

ilTestPassesSelector::getLazyLoadedPasses ( )
private

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

88 {
89 $this->ensureLoadedPasses();
90 return $this->passes;
91 }

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 120 of file class.ilTestPassesSelector.php.

121 {
122 return count($this->getExistingPasses());
123 }

References getExistingPasses().

+ Here is the call graph for this function:

◆ getReportablePasses()

ilTestPassesSelector::getReportablePasses ( )

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

139 {
140 $existingPasses = $this->getExistingPasses();
141
142 $reportablePasses = $this->fetchReportablePasses($existingPasses);
143
144 return $reportablePasses;
145 }

References fetchReportablePasses(), and getExistingPasses().

Referenced by hasReportablePasses().

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

◆ hasExistingPasses()

ilTestPassesSelector::hasExistingPasses ( )

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

116 {
117 return (bool) count($this->getExistingPasses());
118 }

References getExistingPasses().

+ Here is the call graph for this function:

◆ hasReportablePasses()

ilTestPassesSelector::hasReportablePasses ( )

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

148 {
149 return (bool) count($this->getReportablePasses());
150 }

References getReportablePasses().

+ Here is the call graph for this function:

◆ hasTestPassedOnce()

ilTestPassesSelector::hasTestPassedOnce (   $activeId)

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

290 {
291 global $DIC; /* @var ILIAS\DI\Container $DIC */
292
293 if (!isset($this->testPassedOnceCache[$activeId])) {
294 $this->testPassedOnceCache[$activeId] = false;
295
296 $res = $DIC->database()->queryF(
297 "SELECT passed_once FROM tst_result_cache WHERE active_fi = %s",
298 array('integer'),
299 array($activeId)
300 );
301
302 while ($row = $DIC->database()->fetchAssoc($res)) {
303 $this->testPassedOnceCache[$activeId] = (bool) $row['passed_once'];
304 }
305 }
306
307 return $this->testPassedOnceCache[$activeId];
308 }
global $DIC
Definition: goto.php:24
foreach($_POST as $key=> $value) $res

References $activeId, $DIC, and $res.

Referenced by isReportablePass().

+ Here is the caller graph for this function:

◆ isClosedPass()

ilTestPassesSelector::isClosedPass (   $pass)
private

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

232 {
234
235 if ($pass <= $this->getLastFinishedPass()) {
236 return true;
237 }
238
239 if ($this->isProcessingTimeReached($pass)) {
240 return true;
241 }
242
243 return false;
244 }

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

Referenced by fetchClosedPasses(), and isReportablePass().

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

◆ isProcessingTimeReached()

ilTestPassesSelector::isProcessingTimeReached (   $pass)
private

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

262 {
263 if (!$this->testOBJ->getEnableProcessingTime()) {
264 return false;
265 }
266
267 $startingTime = $this->testOBJ->getStartingTimeOfUser($this->getActiveId(), $pass);
268
269 if ($startingTime === false) {
270 return false;
271 }
272
273 return $this->testOBJ->isMaxProcessingTimeReached($startingTime, $this->getActiveId());
274 }

References $pass, and getActiveId().

Referenced by isClosedPass().

+ 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 193 of file class.ilTestPassesSelector.php.

194 {
195 switch ($this->testOBJ->getScoreReporting()) {
197
198 return true;
199
201
202 return $this->isReportingDateReached();
203
205
206 if ($pass < $lastPass) {
207 return true;
208 }
209
210 return $this->isClosedPass($pass);
211
213
214 if (!$this->hasTestPassedOnce($this->getActiveId())) {
215 return false;
216 }
217
218 return $this->isClosedPass($pass);
219 }
220
221 return false;
222 }
const SCORE_REPORTING_IMMIDIATLY
const SCORE_REPORTING_FINISHED
const SCORE_REPORTING_AFTER_PASSED
const SCORE_REPORTING_DATE

References $pass, 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().

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

◆ isReportingDateReached()

ilTestPassesSelector::isReportingDateReached ( )
private

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

247 {
248 $reg = '/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/';
249 $date = $this->testOBJ->getReportingDate();
250 $matches = null;
251
252 if (!preg_match($reg, $date, $matches)) {
253 return false;
254 }
255
256 $repTS = mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
257
258 return time() >= $repTS;
259 }

Referenced by isReportablePass().

+ Here is the caller graph for this function:

◆ loadLastFinishedPass()

ilTestPassesSelector::loadLastFinishedPass ( )

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

94 {
95 $query = "
96 SELECT last_finished_pass FROM tst_active WHERE active_id = %s
97 ";
98
99 $res = $this->db->queryF(
100 $query,
101 array('integer'),
102 array($this->getActiveId())
103 );
104
105 while ($row = $this->db->fetchAssoc($res)) {
106 $this->setLastFinishedPass($row['last_finished_pass']);
107 }
108 }
setLastFinishedPass($lastFinishedPass)
$query

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

+ Here is the call graph for this function:

◆ loadPasses()

ilTestPassesSelector::loadPasses ( )
private

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

64 {
65 $query = "
66 SELECT DISTINCT tst_pass_result.* FROM tst_pass_result
67 LEFT JOIN tst_test_result
68 ON tst_pass_result.pass = tst_test_result.pass
69 AND tst_pass_result.active_fi = tst_test_result.active_fi
70 WHERE tst_pass_result.active_fi = %s
71 ORDER BY tst_pass_result.pass
72 ";
73
74 $res = $this->db->queryF(
75 $query,
76 array('integer'),
77 array($this->getActiveId())
78 );
79
80 $this->passes = array();
81
82 while ($row = $this->db->fetchAssoc($res)) {
83 $this->passes[$row['pass']] = $row;
84 }
85 }

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

Referenced by ensureLoadedPasses().

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

◆ openPassExists()

ilTestPassesSelector::openPassExists ( )

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

126 {
127 return count($this->getExistingPasses()) > count($this->getClosedPasses());
128 }

References getClosedPasses(), and getExistingPasses().

+ Here is the call graph for this function:

◆ passesLoaded()

ilTestPassesSelector::passesLoaded ( )
private

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

53 {
54 return is_array($this->passes);
55 }

Referenced by ensureLoadedPasses().

+ Here is the caller graph for this function:

◆ setActiveId()

ilTestPassesSelector::setActiveId (   $activeId)

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

37 {
38 $this->activeId = $activeId;
39 }

References $activeId.

◆ setLastFinishedPass()

ilTestPassesSelector::setLastFinishedPass (   $lastFinishedPass)

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

47 {
49 $this->lastFinishedPass = $lastFinishedPass;
50 }

References $lastFinishedPass.

Referenced by loadLastFinishedPass().

+ Here is the caller graph for this function:

Field Documentation

◆ $activeId

ilTestPassesSelector::$activeId
private

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

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

◆ $db

ilTestPassesSelector::$db
protected

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

Referenced by __construct().

◆ $lastFinishedPass

ilTestPassesSelector::$lastFinishedPass = null
private

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

Referenced by getLastFinishedPass(), and setLastFinishedPass().

◆ $passes

ilTestPassesSelector::$passes = null
private

◆ $testOBJ

ilTestPassesSelector::$testOBJ
protected

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

Referenced by __construct().

◆ $testPassedOnceCache

ilTestPassesSelector::$testPassedOnceCache = array()
private

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


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