ILIAS  release_8 Revision v8.24
class.ilScormPlaceholderValues.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22{
30
31 public function __construct(
32 ?ilDefaultPlaceholderValues $defaultPlaceholderValues = null,
33 ?ilLanguage $language = null,
39 ) {
40 if (null === $language) {
41 global $DIC;
42 $language = $DIC->language();
43 $language->loadLanguageModule('certificate');
44 }
45 $this->language = $language;
46
47 if (null === $defaultPlaceholderValues) {
48 $defaultPlaceholderValues = new ilDefaultPlaceholderValues();
49 }
50 $this->defaultPlaceholderValuesObject = $defaultPlaceholderValues;
51
52 if (null === $dateHelper) {
54 }
55 $this->dateHelper = $dateHelper;
56
57 if (null === $objectHelper) {
59 }
60 $this->objectHelper = $objectHelper;
61
62 if (null === $utilHelper) {
64 }
65 $this->utilHelper = $utilHelper;
66
67 if (null === $objectLPHelper) {
69 }
70 $this->objectLPHelper = $objectLPHelper;
71
72 if (null === $lpStatusHelper) {
74 }
75 $this->lpStatusHelper = $lpStatusHelper;
76 }
77
92 public function getPlaceholderValues(int $userId, int $objId): array
93 {
94 $this->language->loadLanguageModule('certificate');
95
96 $object = $this->objectHelper->getInstanceByObjId($objId);
97 $points = $object->getPointsInPercent();
98 if (is_null($points)) {
99 $txtPoints = $this->language->txt('certificate_points_notavailable');
100 } else {
101 $txtPoints = number_format(
102 $points,
103 1,
104 $this->language->txt('lang_sep_decimal'),
105 $this->language->txt('lang_sep_thousand')
106 ) . ' %';
107 }
108
109 $max_points = $object->getMaxPoints();
110 $txtMaxPoints = $max_points;
111 if (is_null($max_points)) {
112 $txtMaxPoints = $this->language->txt('certificate_points_notavailable');
113 } elseif ($max_points != floor($max_points)) {
114 $txtMaxPoints = number_format(
115 $max_points,
116 1,
117 $this->language->txt('lang_sep_decimal'),
118 $this->language->txt('lang_sep_thousand')
119 );
120 }
121
122 $completionDate = $this->lpStatusHelper->lookupStatusChanged($objId, $userId);
123
124 $placeHolders = $this->defaultPlaceholderValuesObject->getPlaceholderValues($userId, $objId);
125
126 $placeHolders['SCORM_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
127 $placeHolders['SCORM_POINTS'] = $txtPoints;
128 $placeHolders['SCORM_POINTS_MAX'] = $txtMaxPoints;
129
130 $placeHolders['DATE_COMPLETED'] = '';
131 $placeHolders['DATETIME_COMPLETED'] = '';
132
133 if ($completionDate !== '') {
134 $placeHolders['DATE_COMPLETED'] = $this->dateHelper->formatDate($completionDate);
135 $placeHolders['DATETIME_COMPLETED'] = $this->dateHelper->formatDateTime($completionDate);
136 }
137
138 $olp = $this->objectLPHelper->getInstance($object->getId());
139 $collection = $olp->getCollectionInstance();
140
141 if ($collection) {
142 $counter = 0;
143 foreach ($collection->getPossibleItems() as $item_id => $sahs_item) {
144 if ($collection->isAssignedEntry($item_id)) {
145 $placeHolders['SCO_T_' . $counter] = $sahs_item['title'];
146 $a_scores = $collection->getScoresForUserAndCP_Node_Id($item_id, $userId);
147
148 $placeHolders['SCO_P_' . $counter] = $this->language->txt('certificate_points_notavailable');
149 if ($a_scores['raw'] !== null) {
150 $placeHolders['SCO_P_' . $counter] = number_format(
151 (float) $a_scores['raw'],
152 1,
153 $this->language->txt('lang_sep_decimal'),
154 $this->language->txt('lang_sep_thousand')
155 );
156 }
157
158 $placeHolders['SCO_PM_' . $counter] = $this->language->txt('certificate_points_notavailable');
159 if ($a_scores['max'] !== null) {
160 $placeHolders['SCO_PM_' . $counter] = number_format(
161 (float) $a_scores['max'],
162 1,
163 $this->language->txt('lang_sep_decimal'),
164 $this->language->txt('lang_sep_thousand')
165 );
166 }
167
168 $placeHolders['SCO_PP_' . $counter] = $this->language->txt('certificate_points_notavailable');
169 if ($a_scores['scaled'] !== null) {
170 $placeHolders['SCO_PP_' . $counter] = number_format(
171 (float) ($a_scores['scaled'] * 100),
172 1,
173 $this->language->txt('lang_sep_decimal'),
174 $this->language->txt('lang_sep_thousand')
175 );
176
177 $placeHolders['SCO_PP_' . $counter] .= ' %';
178 }
179
180 $counter++;
181 }
182 }
183 }
184
185 return $placeHolders;
186 }
187
196 public function getPlaceholderValuesForPreview(int $userId, int $objId): array
197 {
198 $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValuesForPreview($userId, $objId);
199
200 $object = $this->objectHelper->getInstanceByObjId($objId);
201
202 $placeholders['SCORM_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
203
204 $placeholders['SCORM_POINTS'] = number_format(
205 80.7,
206 1,
207 $this->language->txt('lang_sep_decimal'),
208 $this->language->txt('lang_sep_thousand')
209 ) . ' %';
210
211 $placeholders['SCORM_POINTS_MAX'] = number_format(
212 90,
213 0,
214 $this->language->txt('lang_sep_decimal'),
215 $this->language->txt('lang_sep_thousand')
216 );
217
218 $insert_tags = [];
219 foreach ($placeholders as $id => $caption) {
220 $insert_tags[$id] = $caption;
221 }
222
223 $olp = $this->objectLPHelper->getInstance($objId);
224 $collection = $olp->getCollectionInstance();
225
226 if ($collection) {
227 $counter = 0;
228 foreach ($collection->getPossibleItems() as $item_id => $sahs_item) {
229 if ($collection->isAssignedEntry($item_id)) {
230 $insert_tags['SCO_T_' . $counter] = $sahs_item['title'];
231
232 $insert_tags['SCO_P_' . $counter] = number_format(
233 30.3,
234 1,
235 $this->language->txt('lang_sep_decimal'),
236 $this->language->txt('lang_sep_thousand')
237 );
238
239 $insert_tags['SCO_PM_' . $counter] = number_format(
240 90.9,
241 1,
242 $this->language->txt('lang_sep_decimal'),
243 $this->language->txt('lang_sep_thousand')
244 );
245
246 $insert_tags['SCO_PP_' . $counter] = number_format(
247 33.3333,
248 1,
249 $this->language->txt('lang_sep_decimal'),
250 $this->language->txt('lang_sep_thousand')
251 ) . ' %';
252
253 $counter++;
254 }
255 }
256 }
257
258 return $insert_tags;
259 }
260}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
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.
__construct(?ilDefaultPlaceholderValues $defaultPlaceholderValues=null, ?ilLanguage $language=null, ?ilCertificateDateHelper $dateHelper=null, ?ilCertificateObjectHelper $objectHelper=null, ?ilCertificateUtilHelper $utilHelper=null, ?ilCertificateObjectLPHelper $objectLPHelper=null, ?ilCertificateLPStatusHelper $lpStatusHelper=null)
getPlaceholderValuesForPreview(int $userId, int $objId)
This method is different then the 'getPlaceholderValues' method, this method is used to create a plac...
ilCertificateObjectLPHelper $objectLPHelper
ilDefaultPlaceholderValues $defaultPlaceholderValuesObject
getPlaceholderValues(int $userId, int $objId)
This method MUST return an array that contains the actual data for the given user of the given object...
ilCertificateLPStatusHelper $lpStatusHelper
ilCertificateObjectHelper $objectHelper
global $DIC
Definition: feed.php:28
$objId
Definition: xapitoken.php:57