ILIAS  release_8 Revision v8.24
class.ilTestPlaceholderValues.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
25{
34
35 public function __construct(
36 ?ilDefaultPlaceholderValues $defaultPlaceholderValues = null,
37 ?ilLanguage $language = 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) {
59 }
60 $this->objectHelper = $objectHelper;
61
62 if (null === $testObjectHelper) {
64 }
65 $this->testObjectHelper = $testObjectHelper;
66
67 if (null === $userObjectHelper) {
69 }
70 $this->userObjectHelper = $userObjectHelper;
71
72 if (null === $lpStatusHelper) {
74 }
75 $this->lpStatusHelper = $lpStatusHelper;
76
77 if (null === $utilHelper) {
79 }
80 $this->utilHelper = $utilHelper;
81
82 if (null === $dateHelper) {
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}
Just a wrapper class to create Unit Test for other classes.
Collection of basic placeholder values that can be used.
language handling
loadLanguageModule(string $a_module)
Load language module.
ilCertificateUserObjectHelper $userObjectHelper
ilCertificateTestObjectHelper $testObjectHelper
getPlaceholderValuesForPreview(int $userId, int $objId)
This method is different then the 'getPlaceholderValues' method, this method is used to create a plac...
ilDefaultPlaceholderValues $defaultPlaceholderValuesObject
ilCertificateLPStatusHelper $lpStatusHelper
__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)
ilCertificateObjectHelper $objectHelper
global $DIC
Definition: feed.php:28
getPlaceholderValues(int $userId, int $objId)
This method MUST return an array that contains the actual data for the given user of the given object...
$objId
Definition: xapitoken.php:57