ILIAS  release_9 Revision v9.13-25-g2c18ec4c24f
class.ilTestPlaceholderValues.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
25 {
33  private readonly ilLanguage $language;
34 
35  public function __construct(
36  ?ilDefaultPlaceholderValues $defaultPlaceholderValues = null,
37  ?ilLanguage $language = null,
38  ?ilCertificateObjectHelper $objectHelper = null,
39  ?ilCertificateTestObjectHelper $testObjectHelper = null,
40  ?ilCertificateUserObjectHelper $userObjectHelper = null,
41  ?ilCertificateLPStatusHelper $lpStatusHelper = null,
42  ?ilCertificateUtilHelper $utilHelper = null,
43  ?ilCertificateDateHelper $dateHelper = null
44  ) {
45  if (null === $language) {
46  global $DIC;
47  $language = $DIC->language();
48  $language->loadLanguageModule('certificate');
49  }
50  $this->language = $language;
51 
52  if (null === $defaultPlaceholderValues) {
53  $defaultPlaceholderValues = new ilDefaultPlaceholderValues();
54  }
55  $this->defaultPlaceholderValuesObject = $defaultPlaceholderValues;
56 
57  if (null === $objectHelper) {
58  $objectHelper = new ilCertificateObjectHelper();
59  }
60  $this->objectHelper = $objectHelper;
61 
62  if (null === $testObjectHelper) {
63  $testObjectHelper = new ilCertificateTestObjectHelper();
64  }
65  $this->testObjectHelper = $testObjectHelper;
66 
67  if (null === $userObjectHelper) {
68  $userObjectHelper = new ilCertificateUserObjectHelper();
69  }
70  $this->userObjectHelper = $userObjectHelper;
71 
72  if (null === $lpStatusHelper) {
73  $lpStatusHelper = new ilCertificateLPStatusHelper();
74  }
75  $this->lpStatusHelper = $lpStatusHelper;
76 
77  if (null === $utilHelper) {
78  $utilHelper = new ilCertificateUtilHelper();
79  }
80  $this->utilHelper = $utilHelper;
81 
82  if (null === $dateHelper) {
83  $dateHelper = new ilCertificateDateHelper();
84  }
85  $this->dateHelper = $dateHelper;
86  }
87 
99  public function getPlaceholderValues(int $userId, int $objId): array
100  {
102  $testObject = $this->objectHelper->getInstanceByObjId($objId);
103 
104  $active_id = $testObject->getActiveIdOfUser($userId);
105  if ($active_id === null) {
106  throw new ilInvalidCertificateException('No active id found for user ' . $userId . ' and object ' . $objId);
107  }
108 
109  $pass = $this->testObjectHelper->getResultPass($active_id);
110 
111  $result_array = &$testObject->getTestResult($active_id);
112  if ($pass !== null) {
113  $result_array = &$testObject->getTestResult($active_id, $pass);
114  }
115 
116  $passed = $this->language->txt('certificate_failed');
117  if ($result_array['test']['passed']) {
118  $passed = $this->language->txt('certificate_passed');
119  }
120 
121  $percentage = 0;
122  if ($result_array['test']['total_max_points']) {
123  $percentage = ($result_array['test']['total_reached_points'] / $result_array['test']['total_max_points']) * 100;
124  }
125 
126  $mark_obj = $testObject->getMarkSchema()->getMatchingMark($percentage);
127  $user_data = $this->userObjectHelper->lookupFields($userId);
128 
129  $completionDate = false;
130  if ($user_data['usr_id'] > 0) {
131  $completionDate = $this->lpStatusHelper->lookupStatusChanged($objId, $userId);
132  }
133 
134  $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValues($userId, $objId);
135 
136  $placeholders['RESULT_PASSED'] = $this->utilHelper->prepareFormOutput($passed);
137  $placeholders['RESULT_POINTS'] = $this->utilHelper->prepareFormOutput((string) $result_array['test']['total_reached_points']);
138  $placeholders['RESULT_PERCENT'] = sprintf('%2.2f', $percentage) . '%';
139  $placeholders['MAX_POINTS'] = $this->utilHelper->prepareFormOutput((string) $result_array['test']['total_max_points']);
140  $placeholders['RESULT_MARK_SHORT'] = $this->utilHelper->prepareFormOutput($mark_obj->getShortName());
141  $placeholders['RESULT_MARK_LONG'] = $this->utilHelper->prepareFormOutput($mark_obj->getOfficialName());
142  $placeholders['TEST_TITLE'] = $this->utilHelper->prepareFormOutput($testObject->getTitle());
143  $placeholders['DATE_COMPLETED'] = '';
144  $placeholders['DATETIME_COMPLETED'] = '';
145 
146  if ($completionDate !== false && $completionDate !== '') {
147  $placeholders['DATE_COMPLETED'] = $this->dateHelper->formatDate($completionDate);
148  $placeholders['DATETIME_COMPLETED'] = $this->dateHelper->formatDateTime($completionDate);
149  }
150 
151  return $placeholders;
152  }
153 
159  public function getPlaceholderValuesForPreview(int $userId, int $objId): array
160  {
161  $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValuesForPreview($userId, $objId);
162 
163  $object = $this->objectHelper->getInstanceByObjId($objId);
164 
165  $placeholders['RESULT_PASSED'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_passed'));
166  $placeholders['RESULT_POINTS'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_points'));
167  $placeholders['RESULT_PERCENT'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_percent'));
168  $placeholders['MAX_POINTS'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_max_points'));
169  $placeholders['RESULT_MARK_SHORT'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_mark_short'));
170  $placeholders['RESULT_MARK_LONG'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_mark_long'));
171  $placeholders['TEST_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
172 
173  return $placeholders;
174  }
175 }
getPlaceholderValuesForPreview(int $userId, int $objId)
This method is different then the &#39;getPlaceholderValues&#39; method, this method is used to create a plac...
Collection of basic placeholder values that can be used.
$objId
Definition: xapitoken.php:57
__construct(?ilDefaultPlaceholderValues $defaultPlaceholderValues=null, ?ilLanguage $language=null, ?ilCertificateObjectHelper $objectHelper=null, ?ilCertificateTestObjectHelper $testObjectHelper=null, ?ilCertificateUserObjectHelper $userObjectHelper=null, ?ilCertificateLPStatusHelper $lpStatusHelper=null, ?ilCertificateUtilHelper $utilHelper=null, ?ilCertificateDateHelper $dateHelper=null)
readonly ilCertificateLPStatusHelper $lpStatusHelper
global $DIC
Definition: feed.php:28
readonly ilCertificateTestObjectHelper $testObjectHelper
readonly ilDefaultPlaceholderValues $defaultPlaceholderValuesObject
readonly ilCertificateUtilHelper $utilHelper
Just a wrapper class to create Unit Test for other classes.
getPlaceholderValues(int $userId, int $objId)
This method MUST return an array that contains the actual data for the given user of the given object...
readonly ilCertificateUserObjectHelper $userObjectHelper
readonly ilCertificateDateHelper $dateHelper
readonly ilCertificateObjectHelper $objectHelper