ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilScormPlaceholderValues.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2018 ILIAS open source, Extended GPL, see docs/LICENSE */
3
8{
12 private $language;
13
18
22 private $dateHelper;
23
28
32 private $utilHelper;
33
38
43
53 public function __construct(
54 ilDefaultPlaceholderValues $defaultPlaceholderValues = null,
55 ilLanguage $language = null,
61 ) {
62 if (null === $language) {
63 global $DIC;
64 $language = $DIC->language();
65 $language->loadLanguageModule('certificate');
66 }
67 $this->language = $language;
68
69 if (null === $defaultPlaceholderValues) {
70 $defaultPlaceholderValues = new ilDefaultPlaceholderValues();
71 }
72 $this->defaultPlaceholderValuesObject = $defaultPlaceholderValues;
73
74 if (null === $dateHelper) {
76 }
77 $this->dateHelper = $dateHelper;
78
79 if (null === $objectHelper) {
81 }
82 $this->objectHelper = $objectHelper;
83
84 if (null === $utilHelper) {
86 }
87 $this->utilHelper = $utilHelper;
88
89 if (null === $objectLPHelper) {
91 }
92 $this->objectLPHelper = $objectLPHelper;
93
94 if (null === $lpStatusHelper) {
96 }
97 $this->lpStatusHelper = $lpStatusHelper;
98 }
99
114 public function getPlaceholderValues(int $userId, int $objId) : array
115 {
116 $this->language->loadLanguageModule('certificate');
117
118 $object = $this->objectHelper->getInstanceByObjId($objId);
119 $points = $object->getPointsInPercent();
120 $txtPoints = number_format($points, 1, $this->language->txt('lang_sep_decimal'), $this->language->txt('lang_sep_thousand')) . ' %';
121 if (is_null($points)) {
122 $txtPoints = $this->language->txt('certificate_points_notavailable');
123 }
124
125 $max_points = $object->getMaxPoints();
126 $txtMaxPoints = $max_points;
127 if (is_null($max_points)) {
128 $txtMaxPoints = $this->language->txt('certificate_points_notavailable');
129 } elseif ($max_points != floor($max_points)) {
130 $txtMaxPoints = number_format($max_points, 1, $this->language->txt('lang_sep_decimal'), $this->language->txt('lang_sep_thousand'));
131 }
132
133 $completionDate = $this->lpStatusHelper->lookupStatusChanged($objId, $userId);
134
135 $placeHolders = $this->defaultPlaceholderValuesObject->getPlaceholderValues($userId, $objId);
136
137 $placeHolders['SCORM_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
138 $placeHolders['SCORM_POINTS'] = $txtPoints;
139 $placeHolders['SCORM_POINTS_MAX'] = $txtMaxPoints;
140
141 $placeHolders['DATE_COMPLETED'] = '';
142 $placeHolders['DATETIME_COMPLETED'] = '';
143
144 if ($completionDate !== false &&
145 $completionDate !== null &&
146 $completionDate !== ''
147 ) {
148 $placeHolders['DATE_COMPLETED'] = $this->dateHelper->formatDate($completionDate);
149 $placeHolders['DATETIME_COMPLETED'] = $this->dateHelper->formatDateTime($completionDate);
150 }
151
152 $olp = $this->objectLPHelper->getInstance($object->getId());
153 $collection = $olp->getCollectionInstance();
154
155 if ($collection) {
156 $counter = 0;
157 foreach ($collection->getPossibleItems() as $item_id => $sahs_item) {
158 if ($collection->isAssignedEntry($item_id)) {
159 $placeHolders['SCO_T_' . $counter] = $sahs_item['title'];
160 $a_scores = $collection->getScoresForUserAndCP_Node_Id($item_id, $userId);
161
162 $placeHolders['SCO_P_' . $counter] = $this->language->txt('certificate_points_notavailable');
163 if ($a_scores['raw'] !== null) {
164 $placeHolders['SCO_P_' . $counter] = number_format(
165 $a_scores['raw'],
166 1,
167 $this->language->txt('lang_sep_decimal'),
168 $this->language->txt('lang_sep_thousand')
169 );
170 }
171
172 $placeHolders['SCO_PM_' . $counter] = $this->language->txt('certificate_points_notavailable');
173 if ($a_scores['max'] !== null) {
174 $placeHolders['SCO_PM_' . $counter] = number_format(
175 $a_scores['max'],
176 1,
177 $this->language->txt('lang_sep_decimal'),
178 $this->language->txt('lang_sep_thousand')
179 );
180 }
181
182 $placeHolders['SCO_PP_' . $counter] = $this->language->txt('certificate_points_notavailable');
183 if ($a_scores['scaled'] !== null) {
184 $placeHolders['SCO_PP_' . $counter] = number_format(
185 ($a_scores['scaled'] * 100),
186 1,
187 $this->language->txt('lang_sep_decimal'),
188 $this->language->txt('lang_sep_thousand')
189 );
190
191 $placeHolders['SCO_PP_' . $counter] .= ' %';
192 }
193
194 $counter++;
195 }
196 }
197 }
198
199 return $placeHolders;
200 }
201
211 public function getPlaceholderValuesForPreview(int $userId, int $objId) : array
212 {
213 $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValuesForPreview($userId, $objId);
214
215 $object = $this->objectHelper->getInstanceByObjId($objId);
216
217 $placeholders['SCORM_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
218
219 $placeholders['SCORM_POINTS'] = number_format(
220 80.7,
221 1,
222 $this->language->txt('lang_sep_decimal'),
223 $this->language->txt('lang_sep_thousand')
224 ) . ' %';
225
226 $placeholders['SCORM_POINTS_MAX'] = number_format(
227 90,
228 0,
229 $this->language->txt('lang_sep_decimal'),
230 $this->language->txt('lang_sep_thousand')
231 );
232
233 $insert_tags = array();
234 foreach ($placeholders as $id => $caption) {
235 $insert_tags[$id] = $caption;
236 }
237
238 $olp = $this->objectLPHelper->getInstance($objId);
239 $collection = $olp->getCollectionInstance();
240
241 if ($collection) {
242 $counter = 0;
243 foreach ($collection->getPossibleItems() as $item_id => $sahs_item) {
244 if ($collection->isAssignedEntry($item_id)) {
245 $insert_tags['SCO_T_' . $counter] = $sahs_item['title'];
246
247 $insert_tags['SCO_P_' . $counter] = number_format(
248 30.3,
249 1,
250 $this->language->txt('lang_sep_decimal'),
251 $this->language->txt('lang_sep_thousand')
252 );
253
254 $insert_tags['SCO_PM_' . $counter] = number_format(
255 90.9,
256 1,
257 $this->language->txt('lang_sep_decimal'),
258 $this->language->txt('lang_sep_thousand')
259 );
260
261 $insert_tags['SCO_PP_' . $counter] = number_format(
262 33.3333,
263 1,
264 $this->language->txt('lang_sep_decimal'),
265 $this->language->txt('lang_sep_thousand')
266 ) . ' %';
267
268 $counter++;
269 }
270 }
271 }
272
273 return $insert_tags;
274 }
275}
An exception for terminatinating execution or to throw for unit testing.
Just a wrapper class to create Unit Test for other classes.
Collection of basic placeholder values that can be used.
language handling
__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...
getPlaceholderValues(int $userId, int $objId)
This method MUST return an array that contains the actual data for the given user of the given object...
language()
Definition: language.php:2
$DIC
Definition: xapitoken.php:46
$objId
Definition: xapitoken.php:41