ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilTestPassFinishTasks.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
26 {
27  public function __construct(
28  private readonly ilTestSession $test_session,
29  private readonly ilObjTest $obj_test,
30  ) {
31  }
32 
33  public function performFinishTasks(ilTestProcessLocker $process_locker)
34  {
35  $process_locker->executeTestFinishOperation(function () {
36  if (!$this->test_session->isSubmitted()) {
37  $this->test_session->setSubmitted();
38  $this->test_session->setSubmittedTimestamp();
39  $this->test_session->saveToDb();
40  }
41 
42  $last_started_pass = (
43  $this->test_session->getLastStartedPass() === null ? -1 : $this->test_session->getLastStartedPass()
44  );
45 
46  $last_finished_pass = (
47  $this->test_session->getLastFinishedPass() === null ? -1 : $this->test_session->getLastFinishedPass()
48  );
49 
50  if ($last_started_pass > -1 && $last_finished_pass < $last_started_pass) {
51  $this->test_session->setLastFinishedPass($this->test_session->getPass());
52  $this->test_session->increaseTestPass(); // saves to db
53  }
54  });
55 
56  $this->obj_test->updateTestResultCache($this->test_session->getActiveId(), null);
57 
59  }
60 
62  {
63  $obj_id = $this->obj_test->getId();
65  $obj_id,
66  ilObjTestAccess::_getParticipantId($this->test_session->getActiveId())
67  );
68 
69  $caller = $this->getCaller();
70  $lp = ilLPStatus::_lookupStatus($obj_id, $this->test_session->getUserId());
71  $debug = "finPass={$this->test_session->getLastFinishedPass()} / Lp={$lp}";
72 
74  $this->test_session->getUserId(),
75  $obj_id,
76  "updateLearningProgressAfterPassFinishedIsWritten has been called from {$caller} ({$debug})",
77  true
78  );
79  }
80 
81  protected function getCaller()
82  {
83  return (new Exception())->getTrace()[3]['class'];
84  }
85 }
static _addLog( $user_id, $object_id, $logtext, $question_id=0, $original_id=0, $test_only=false, $test_ref_id=0)
Add an assessment log entry.
Class ilTestPassFinishTasks.
static _getParticipantId($active_id)
Get user id for active id.
__construct(private readonly ilTestSession $test_session, private readonly ilObjTest $obj_test,)
static _lookupStatus(int $a_obj_id, int $a_user_id, bool $a_create=true)
Lookup status.
executeTestFinishOperation(callable $operation)
performFinishTasks(ilTestProcessLocker $process_locker)
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)