ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
class.ilTestPlaceholderValues.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 {
13 
17  private $objectHelper;
18 
23 
28 
32  private $utilHelper;
33 
37  private $lpStatusHelper;
38 
42  private $dateHelper;
43 
47  private $language;
48 
59  public function __construct(
60  ilDefaultPlaceholderValues $defaultPlaceholderValues = null,
61  ilLanguage $language = null,
68  ) {
69  if (null === $language) {
70  global $DIC;
71  $language = $DIC->language();
72  $language->loadLanguageModule('certificate');
73  }
74  $this->language = $language;
75 
76  if (null === $defaultPlaceholderValues) {
77  $defaultPlaceholderValues = new ilDefaultPlaceholderValues();
78  }
79  $this->defaultPlaceholderValuesObject = $defaultPlaceholderValues;
80 
81  if (null === $objectHelper) {
83  }
84  $this->objectHelper = $objectHelper;
85 
86  if (null === $testObjectHelper) {
88  }
89  $this->testObjectHelper = $testObjectHelper;
90 
91  if (null === $userObjectHelper) {
93  }
94  $this->userObjectHelper = $userObjectHelper;
95 
96  if (null === $lpStatusHelper) {
98  }
99  $this->lpStatusHelper = $lpStatusHelper;
100 
101  if (null === $utilHelper) {
103  }
104  $this->utilHelper = $utilHelper;
105 
106  if (null === $dateHelper) {
108  }
109  $this->dateHelper = $dateHelper;
110  }
111 
126  public function getPlaceholderValues(int $userId, int $objId) : array
127  {
129  $testObject = $this->objectHelper->getInstanceByObjId($objId);
130 
131  $active_id = $testObject->getActiveIdOfUser($userId);
132  $pass = $this->testObjectHelper->getResultPass($active_id);
133 
134  $result_array = &$testObject->getTestResult($active_id);
135  if (strlen($pass)) {
136  $result_array = &$testObject->getTestResult($active_id, $pass);
137  }
138 
139  $passed = $this->language->txt('certificate_failed');
140  if ($result_array['test']['passed']) {
141  $passed = $this->language->txt('certificate_passed');
142  }
143 
144  $percentage = 0;
145  if ($result_array['test']['total_max_points']) {
146  $percentage = ($result_array['test']['total_reached_points'] / $result_array['test']['total_max_points']) * 100;
147  }
148 
149  $mark_obj = $testObject->getMarkSchema()->getMatchingMark($percentage);
150  $user_data = $this->userObjectHelper->lookupFields($userId);
151 
152  $completionDate = false;
153  if ($user_data['usr_id'] > 0) {
154  $completionDate = $this->lpStatusHelper->lookupStatusChanged($objId, $userId);
155  }
156 
157  $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValues($userId, $objId);
158 
159  $placeholders['RESULT_PASSED'] = $this->utilHelper->prepareFormOutput($passed);
160  $placeholders['RESULT_POINTS'] = $this->utilHelper->prepareFormOutput($result_array['test']['total_reached_points']);
161  $placeholders['RESULT_PERCENT'] = sprintf('%2.2f', $percentage) . '%';
162  $placeholders['MAX_POINTS'] = $this->utilHelper->prepareFormOutput($result_array['test']['total_max_points']);
163  $placeholders['RESULT_MARK_SHORT'] = $this->utilHelper->prepareFormOutput($mark_obj->getShortName());
164  $placeholders['RESULT_MARK_LONG'] = $this->utilHelper->prepareFormOutput($mark_obj->getOfficialName());
165  $placeholders['TEST_TITLE'] = $this->utilHelper->prepareFormOutput($testObject->getTitle());
166  $placeholders['DATE_COMPLETED'] = '';
167  $placeholders['DATETIME_COMPLETED'] = '';
168 
169  if ($completionDate !== false &&
170  $completionDate !== null &&
171  $completionDate !== ''
172  ) {
173  $placeholders['DATE_COMPLETED'] = $this->dateHelper->formatDate($completionDate);
174  $placeholders['DATETIME_COMPLETED'] = $this->dateHelper->formatDateTime($completionDate);
175  }
176 
177  return $placeholders;
178  }
179 
189  public function getPlaceholderValuesForPreview(int $userId, int $objId) : array
190  {
191  $placeholders = $this->defaultPlaceholderValuesObject->getPlaceholderValuesForPreview($userId, $objId);
192 
193  $object = $this->objectHelper->getInstanceByObjId($objId);
194 
195  $placeholders['RESULT_PASSED'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_passed'));
196  $placeholders['RESULT_POINTS'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_points'));
197  $placeholders['RESULT_PERCENT'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_percent'));
198  $placeholders['MAX_POINTS'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_max_points'));
199  $placeholders['RESULT_MARK_SHORT'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_mark_short'));
200  $placeholders['RESULT_MARK_LONG'] = $this->utilHelper->prepareFormOutput($this->language->txt('certificate_var_result_mark_long'));
201  $placeholders['TEST_TITLE'] = $this->utilHelper->prepareFormOutput($object->getTitle());
202 
203  return $placeholders;
204  }
205 }
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.
$objId
Definition: xapitoken.php:39
__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)
global $DIC
Definition: goto.php:24
Just a wrapper class to create Unit Test for other classes.
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