ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.ilScormPlaceholderValues.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 {
23  private readonly ilLanguage $language;
30 
31  public function __construct(
32  ?ilDefaultPlaceholderValues $defaultPlaceholderValues = null,
33  ?ilLanguage $language = null,
34  ?ilCertificateDateHelper $dateHelper = null,
35  ?ilCertificateObjectHelper $objectHelper = null,
36  ?ilCertificateUtilHelper $utilHelper = null,
37  ?ilCertificateObjectLPHelper $objectLPHelper = null,
38  ?ilCertificateLPStatusHelper $lpStatusHelper = 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) {
53  $dateHelper = new ilCertificateDateHelper();
54  }
55  $this->dateHelper = $dateHelper;
56 
57  if (null === $objectHelper) {
58  $objectHelper = new ilCertificateObjectHelper();
59  }
60  $this->objectHelper = $objectHelper;
61 
62  if (null === $utilHelper) {
63  $utilHelper = new ilCertificateUtilHelper();
64  }
65  $this->utilHelper = $utilHelper;
66 
67  if (null === $objectLPHelper) {
68  $objectLPHelper = new ilCertificateObjectLPHelper();
69  }
70  $this->objectLPHelper = $objectLPHelper;
71 
72  if (null === $lpStatusHelper) {
73  $lpStatusHelper = new ilCertificateLPStatusHelper();
74  }
75  $this->lpStatusHelper = $lpStatusHelper;
76  }
77 
89  public function getPlaceholderValues(int $userId, int $objId): array
90  {
91  $this->language->loadLanguageModule('certificate');
92 
93  $object = $this->objectHelper->getInstanceByObjId($objId);
94  $points = $object->getPointsInPercent();
95  if (is_null($points)) {
96  $txtPoints = $this->language->txt('certificate_points_notavailable');
97  } else {
98  $txtPoints = number_format(
99  $points,
100  1,
101  $this->language->txt('lang_sep_decimal'),
102  $this->language->txt('lang_sep_thousand')
103  ) . ' %';
104  }
105 
106  $max_points = $object->getMaxPoints();
107  $txtMaxPoints = (string) $max_points;
108  if (is_null($max_points)) {
109  $txtMaxPoints = $this->language->txt('certificate_points_notavailable');
110  } elseif ($max_points != floor($max_points)) {
111  $txtMaxPoints = number_format(
112  $max_points,
113  1,
114  $this->language->txt('lang_sep_decimal'),
115  $this->language->txt('lang_sep_thousand')
116  );
117  }
118 
119  $completionDate = $this->lpStatusHelper->lookupStatusChanged($objId, $userId);
120 
121  $placeHolders = $this->defaultPlaceholderValuesObject->getPlaceholderValues($userId, $objId);
122 
123  $placeHolders['SCORM_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
124  $placeHolders['SCORM_POINTS'] = $txtPoints;
125  $placeHolders['SCORM_POINTS_MAX'] = $txtMaxPoints;
126 
127  $placeHolders['DATE_COMPLETED'] = '';
128  $placeHolders['DATETIME_COMPLETED'] = '';
129 
130  if ($completionDate !== '') {
131  $placeHolders['DATE_COMPLETED'] = $this->dateHelper->formatDate($completionDate);
132  $placeHolders['DATETIME_COMPLETED'] = $this->dateHelper->formatDateTime($completionDate);
133  }
134 
135  $olp = $this->objectLPHelper->getInstance($object->getId());
136  $collection = $olp->getCollectionInstance();
137 
138  if ($collection !== null) {
139  $counter = 0;
140  foreach ($collection->getPossibleItems() as $item_id => $sahs_item) {
141  if ($collection->isAssignedEntry($item_id)) {
142  $placeHolders['SCO_T_' . $counter] = $sahs_item['title'];
143  $a_scores = $collection->getScoresForUserAndCP_Node_Id($item_id, $userId);
144 
145  $placeHolders['SCO_P_' . $counter] = $this->language->txt('certificate_points_notavailable');
146  if ($a_scores['raw'] !== null) {
147  $placeHolders['SCO_P_' . $counter] = number_format(
148  (float) $a_scores['raw'],
149  1,
150  $this->language->txt('lang_sep_decimal'),
151  $this->language->txt('lang_sep_thousand')
152  );
153  }
154 
155  $placeHolders['SCO_PM_' . $counter] = $this->language->txt('certificate_points_notavailable');
156  if ($a_scores['max'] !== null) {
157  $placeHolders['SCO_PM_' . $counter] = number_format(
158  (float) $a_scores['max'],
159  1,
160  $this->language->txt('lang_sep_decimal'),
161  $this->language->txt('lang_sep_thousand')
162  );
163  }
164 
165  $placeHolders['SCO_PP_' . $counter] = $this->language->txt('certificate_points_notavailable');
166  if ($a_scores['scaled'] !== null) {
167  $placeHolders['SCO_PP_' . $counter] = number_format(
168  (float) ($a_scores['scaled'] * 100),
169  1,
170  $this->language->txt('lang_sep_decimal'),
171  $this->language->txt('lang_sep_thousand')
172  );
173 
174  $placeHolders['SCO_PP_' . $counter] .= ' %';
175  }
176 
177  $counter++;
178  }
179  }
180  }
181 
182  return $placeHolders;
183  }
184 
190  public function getPlaceholderValuesForPreview(int $userId, int $objId): array
191  {
192  $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValuesForPreview($userId, $objId);
193 
194  $object = $this->objectHelper->getInstanceByObjId($objId);
195 
196  $placeholders['SCORM_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
197 
198  $placeholders['SCORM_POINTS'] = number_format(
199  80.7,
200  1,
201  $this->language->txt('lang_sep_decimal'),
202  $this->language->txt('lang_sep_thousand')
203  ) . ' %';
204 
205  $placeholders['SCORM_POINTS_MAX'] = number_format(
206  90,
207  0,
208  $this->language->txt('lang_sep_decimal'),
209  $this->language->txt('lang_sep_thousand')
210  );
211 
212  $insert_tags = [];
213  foreach ($placeholders as $id => $caption) {
214  $insert_tags[$id] = $caption;
215  }
216 
217  $olp = $this->objectLPHelper->getInstance($objId);
218  $collection = $olp->getCollectionInstance();
219 
220  if ($collection !== null) {
221  $counter = 0;
222  foreach ($collection->getPossibleItems() as $item_id => $sahs_item) {
223  if ($collection->isAssignedEntry($item_id)) {
224  $insert_tags['SCO_T_' . $counter] = $sahs_item['title'];
225 
226  $insert_tags['SCO_P_' . $counter] = number_format(
227  30.3,
228  1,
229  $this->language->txt('lang_sep_decimal'),
230  $this->language->txt('lang_sep_thousand')
231  );
232 
233  $insert_tags['SCO_PM_' . $counter] = number_format(
234  90.9,
235  1,
236  $this->language->txt('lang_sep_decimal'),
237  $this->language->txt('lang_sep_thousand')
238  );
239 
240  $insert_tags['SCO_PP_' . $counter] = number_format(
241  33.3333,
242  1,
243  $this->language->txt('lang_sep_decimal'),
244  $this->language->txt('lang_sep_thousand')
245  ) . ' %';
246 
247  $counter++;
248  }
249  }
250  }
251 
252  return $insert_tags;
253  }
254 }
readonly ilCertificateObjectLPHelper $objectLPHelper
readonly ilCertificateLPStatusHelper $lpStatusHelper
$objId
Definition: xapitoken.php:57
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
getPlaceholderValuesForPreview(int $userId, int $objId)
This method is different then the &#39;getPlaceholderValues&#39; method, this method is used to create a plac...
global $DIC
Definition: shib_login.php:22
readonly ilDefaultPlaceholderValues $defaultPlaceholderValuesObject
readonly ilCertificateUtilHelper $utilHelper
readonly ilCertificateDateHelper $dateHelper
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
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 ilCertificateObjectHelper $objectHelper
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
__construct(?ilDefaultPlaceholderValues $defaultPlaceholderValues=null, ?ilLanguage $language=null, ?ilCertificateDateHelper $dateHelper=null, ?ilCertificateObjectHelper $objectHelper=null, ?ilCertificateUtilHelper $utilHelper=null, ?ilCertificateObjectLPHelper $objectLPHelper=null, ?ilCertificateLPStatusHelper $lpStatusHelper=null)