ILIAS  release_8 Revision v8.19-1-g4e8f2f9140c
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilTestPlaceholderValues.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
25 {
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 
102  public function getPlaceholderValues(int $userId, int $objId): array
103  {
105  $testObject = $this->objectHelper->getInstanceByObjId($objId);
106 
107  $active_id = $testObject->getActiveIdOfUser($userId);
108  $pass = (string) $this->testObjectHelper->getResultPass($active_id);
109 
110  $result_array = &$testObject->getTestResult($active_id);
111  if ($pass !== '') {
112  $result_array = &$testObject->getTestResult($active_id, $pass);
113  }
114 
115  $passed = $this->language->txt('certificate_failed');
116  if ($result_array['test']['passed']) {
117  $passed = $this->language->txt('certificate_passed');
118  }
119 
120  $percentage = 0;
121  if ($result_array['test']['total_max_points']) {
122  $percentage = ($result_array['test']['total_reached_points'] / $result_array['test']['total_max_points']) * 100;
123  }
124 
125  $mark_obj = $testObject->getMarkSchema()->getMatchingMark($percentage);
126  $user_data = $this->userObjectHelper->lookupFields($userId);
127 
128  $completionDate = false;
129  if ($user_data['usr_id'] > 0) {
130  $completionDate = $this->lpStatusHelper->lookupStatusChanged($objId, $userId);
131  }
132 
133  $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValues($userId, $objId);
134 
135  $placeholders['RESULT_PASSED'] = $this->utilHelper->prepareFormOutput($passed);
136  $placeholders['RESULT_POINTS'] = $this->utilHelper->prepareFormOutput((string) $result_array['test']['total_reached_points']);
137  $placeholders['RESULT_PERCENT'] = sprintf('%2.2f', $percentage) . '%';
138  $placeholders['MAX_POINTS'] = $this->utilHelper->prepareFormOutput((string) $result_array['test']['total_max_points']);
139  $placeholders['RESULT_MARK_SHORT'] = $this->utilHelper->prepareFormOutput($mark_obj->getShortName());
140  $placeholders['RESULT_MARK_LONG'] = $this->utilHelper->prepareFormOutput($mark_obj->getOfficialName());
141  $placeholders['TEST_TITLE'] = $this->utilHelper->prepareFormOutput($testObject->getTitle());
142  $placeholders['DATE_COMPLETED'] = '';
143  $placeholders['DATETIME_COMPLETED'] = '';
144 
145  if ($completionDate !== false && $completionDate !== '') {
146  $placeholders['DATE_COMPLETED'] = $this->dateHelper->formatDate($completionDate);
147  $placeholders['DATETIME_COMPLETED'] = $this->dateHelper->formatDateTime($completionDate);
148  }
149 
150  return $placeholders;
151  }
152 
161  public function getPlaceholderValuesForPreview(int $userId, int $objId): array
162  {
163  $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValuesForPreview($userId, $objId);
164 
165  $object = $this->objectHelper->getInstanceByObjId($objId);
166 
167  $placeholders['RESULT_PASSED'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_passed'));
168  $placeholders['RESULT_POINTS'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_points'));
169  $placeholders['RESULT_PERCENT'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_percent'));
170  $placeholders['MAX_POINTS'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_max_points'));
171  $placeholders['RESULT_MARK_SHORT'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_mark_short'));
172  $placeholders['RESULT_MARK_LONG'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_mark_long'));
173  $placeholders['TEST_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
174 
175  return $placeholders;
176  }
177 }
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.
ilCertificateLPStatusHelper $lpStatusHelper
$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)
loadLanguageModule(string $a_module)
Load language module.
global $DIC
Definition: feed.php:28
ilCertificateTestObjectHelper $testObjectHelper
ilCertificateUserObjectHelper $userObjectHelper
ilDefaultPlaceholderValues $defaultPlaceholderValuesObject
Just a wrapper class to create Unit Test for other classes.
ilCertificateObjectHelper $objectHelper
getPlaceholderValues(int $userId, int $objId)
This method MUST return an array that contains the actual data for the given user of the given object...