ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
class.ilSCORMTrackingItemsTableGUI.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
27 {
28  private int $obj_id;
29  private int $user_id = 0;
30  private bool $bySCO = false;
31  private array $scosSelected;
32  private array $userSelected;
33  private bool $allowExportPrivacy = false;
34  private string $lmTitle = "";
35  private string $report;
36 
40  public function __construct(int $a_obj_id, ?object $a_parent_obj, string $a_parent_cmd, array $a_userSelected, array $a_scosSelected, string $a_report)
41  {
42  global $DIC;
43  $ilCtrl = $DIC->ctrl();
44  $lng = $DIC->language();
45  $ilAccess = $DIC->access();
46  $lng = $DIC->language();
47  $rbacsystem = $DIC->rbac();
48  $lng->loadLanguageModule("scormtrac");
49 
50  $this->obj_id = $a_obj_id;
51  $this->report = $a_report;
52  $this->scosSelected = $a_scosSelected;
53  $this->userSelected = $a_userSelected;
54  if ($a_parent_cmd === "showTrackingItemsBySco") {
55  $this->bySCO = true;
56  }
57  if ($a_parent_obj !== null) {
58  $this->lmTitle = $a_parent_obj->getObject()->getTitle();
59  }
60 
61  $this->setId('AICC' . $this->report);
62  parent::__construct($a_parent_obj, $a_parent_cmd);
63  $privacy = ilPrivacySettings::getInstance();
64  $this->allowExportPrivacy = $privacy->enabledExportSCORM();
65 
66 
67  // if($a_print_view)
68  // {
69  // $this->setPrintMode(true);
70  // }
71 
72 
73  foreach ($this->getSelectedColumns() as $c) {
74  $l = $c;
75  if (in_array($l, array("status", "time", "score"))) {
76  $l = "cont_" . $l;
77  // } else {
78  // $l =
79  }
80  $s = $this->lng->txt($l);
81  if (substr($l, 0, 14) === "interaction_id") {
82  $s = $this->lng->txt(substr($l, 0, 14)) . ' ' . substr($l, 14);
83  }
84  if (substr($l, 0, 17) === "interaction_value") {
85  $s = sprintf($this->lng->txt(substr($l, 0, 17)), substr($l, 17, (strpos($l, ' ') - 17))) . substr($l, strpos($l, ' '));
86  }
87  if (substr($l, 0, 23) === "interaction_description") {
88  $s = $this->lng->txt(substr($l, 0, 23)) . ' ' . substr($l, 23);
89  }
90  $this->addColumn($s, $c);
91  }
92 
93  $this->setRowTemplate('tpl.scorm_tracking_items.html', 'components/ILIAS/ScormAicc');
94  $this->setFormAction($ilCtrl->getFormAction($this->getParentObject()));
95 
96  $this->setExternalSorting(true);
97  // $this->setExternalSegmentation(true);
98  $this->setEnableHeader(true);
99  $this->setEnableTitle(true);
100  // $this->setDefaultOrderField("cp_node_id, user_id");
101  $this->setDefaultOrderField("");
102  $this->setDefaultOrderDirection("asc");
103  $this->setShowTemplates(true);
104 
105  $this->setExportFormats(array(self::EXPORT_CSV, self::EXPORT_EXCEL));
106  // $this->initFilter();
107  $this->getItems();
108  }
109 
113  public function getSelectableColumns(): array
114  {
115  // default fields
116  $cols = array();
117 
118  switch ($this->report) {
119  case "exportSelectedCore":
120  $cols = ilSCORMTrackingItems::exportSelectedCoreColumns($this->bySCO, $this->allowExportPrivacy);
121  break;
122  case "exportSelectedRaw":
124  break;
125  case "exportSelectedInteractions":
127  break;
128  case "exportSelectedObjectives":
130  break;
131  // case "tracInteractionItem":
132  // $cols = ilSCORMTrackingItems::tracInteractionItemColumns($this->bySCO, $this->allowExportPrivacy);
133  // break;
134  // case "tracInteractionUser":
135  // $cols = ilSCORMTrackingItems::tracInteractionUserColumns($this->bySCO, $this->allowExportPrivacy);
136  // break;
137  // case "tracInteractionUserAnswers":
138  // $cols = ilSCORMTrackingItems::tracInteractionUserAnswersColumns($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy);
139  // break;
140  case "exportSelectedSuccess":
142  break;
143  }
144 
145  return $cols;
146  }
147 
148  public function getObjId(): int
149  {
150  return $this->obj_id;
151  }
152 
153  public function getItems(): void
154  {
155  global $DIC;
156  $lng = $DIC->language();
157 
158  $this->determineOffsetAndOrder(true);
159  $this->determineLimit();
160 
161  $ilSCORMTrackingItems = new ilSCORMTrackingItems();
162  switch ($this->report) {
163  case "exportSelectedCore":
164  $tr_data = $ilSCORMTrackingItems->exportSelectedCore($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
165  break;
166  case "exportSelectedRaw":
167  $tr_data = $ilSCORMTrackingItems->exportSelectedRaw($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
168  break;
169  case "exportSelectedInteractions":
170  $tr_data = $ilSCORMTrackingItems->exportSelectedInteractions($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
171  break;
172  case "exportSelectedObjectives":
173  $tr_data = $ilSCORMTrackingItems->exportSelectedObjectives($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
174  break;
175  case "tracInteractionItem":
176  $tr_data = $ilSCORMTrackingItems->tracInteractionItem($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
177  break;
178  case "tracInteractionUser":
179  $tr_data = $ilSCORMTrackingItems->tracInteractionUser($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
180  break;
181  case "tracInteractionUserAnswers":
182  $tr_data = $ilSCORMTrackingItems->tracInteractionUserAnswers($this->userSelected, $this->scosSelected, $this->bySCO, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
183  break;
184  case "exportSelectedSuccess":
185  $tr_data = $ilSCORMTrackingItems->exportSelectedSuccess($this->userSelected, $this->allowExportPrivacy, $this->getObjId(), $this->lmTitle);
186  break;
187  }
188  // $this->setMaxCount($tr_data["cnt"]);
189  if (ilUtil::stripSlashes($this->getOrderField()) != "") {
190  $tr_data = ilArrayUtil::stableSortArray(
191  $tr_data,
194  );
195  }
196 
197  $this->setData($tr_data);
198  }
199 
200  protected function parseValue(string $id, string|float|int|null $value, string $type): string|float|int|null
201  {
202  global $DIC;
203  $lng = $DIC->language();
204  $lng->loadLanguageModule("trac");
205  if ($id === "status") {
207  $path = $icons->getImagePathForStatus((int) $value);
209  $value = ilUtil::img($path, $text);
210  }
211  //BLUM round
212  if ($id === "launch_data" || $id === "suspend_data") {
213  return $value;
214  }
215  if (is_numeric($value)) {
216  return round((float)$value, 2);
217  }
218  return $value;
219  }
220 
225  protected function fillRow(array $a_set): void
226  {
227  global $DIC;
228  $ilCtrl = $DIC->ctrl();
229  $lng = $DIC->language();
230  foreach ($this->getSelectedColumns() as $c) {
231  $this->tpl->setCurrentBlock("user_field");
232  $val = $this->parseValue($c, $a_set[$c], "scormtrac");
233  $this->tpl->setVariable("VAL_UF", $val);
234  $this->tpl->parseCurrentBlock();
235  }
236  }
237 
238  protected function fillHeaderExcel(ilExcel $a_excel, int &$a_row): void
239  {
240  $labels = $this->getSelectableColumns();
241  $cnt = 0;
242  foreach ($this->getSelectedColumns() as $c) {
243  $a_excel->setCell($a_row, $cnt, $labels[$c]["txt"]);
244  $cnt++;
245  }
246  }
247 
248  protected function fillRowExcel(ilExcel $a_excel, int &$a_row, array $a_set): void
249  {
250  global $DIC;
251  $lng = $DIC->language();
252  $lng->loadLanguageModule("trac");
253  $cnt = 0;
254  foreach ($this->getSelectedColumns() as $c) {
255  if ($c !== 'status') {
256  $val = $this->parseValue($c, $a_set[$c], "user");
257  } else {
258  $val = ilLearningProgressBaseGUI::_getStatusText((int) $a_set[$c]);
259  }
260  $a_excel->setCell($a_row, $cnt, $val);
261  $cnt++;
262  }
263  }
264 
265  protected function fillHeaderCSV(ilCSVWriter $a_csv): void
266  {
267  $labels = $this->getSelectableColumns();
268  foreach ($this->getSelectedColumns() as $c) {
269  $a_csv->addColumn($labels[$c]["txt"]);
270  }
271 
272  $a_csv->addRow();
273  }
274 
275  protected function fillRowCSV(ilCSVWriter $a_csv, array $a_set): void
276  {
277  global $DIC;
278  $lng = $DIC->language();
279  $lng->loadLanguageModule("trac");
280  foreach ($this->getSelectedColumns() as $c) {
281  if ($c !== 'status') {
282  $val = $this->parseValue($c, $a_set[$c], "user");
283  } else {
284  $val = ilLearningProgressBaseGUI::_getStatusText((int) $a_set[$c]);
285  }
286  $a_csv->addColumn($val);
287  }
288 
289  $a_csv->addRow();
290  }
291 }
setData(array $a_data)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
fillHeaderExcel(ilExcel $a_excel, int &$a_row)
addColumn(string $a_col)
setExportFormats(array $formats)
Set available export formats.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setFormAction(string $a_form_action, bool $a_multipart=false)
setEnableTitle(bool $a_enabletitle)
fillRowCSV(ilCSVWriter $a_csv, array $a_set)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
setShowTemplates(bool $a_value)
static getInstance(int $variant=ilLPStatusIcons::ICON_VARIANT_DEFAULT, ?\ILIAS\UI\Renderer $renderer=null, ?\ILIAS\UI\Factory $factory=null)
static exportSelectedCoreColumns(bool $b_orderBySCO, bool $b_allowExportPrivacy)
loadLanguageModule(string $a_module)
Load language module.
$c
Definition: deliver.php:9
static img(string $a_src, ?string $a_alt=null, $a_width="", $a_height="", $a_border=0, $a_id="", $a_class="")
Build img tag.
ilLanguage $lng
setId(string $a_val)
$path
Definition: ltiservices.php:30
setExternalSorting(bool $a_val)
setCell(int $a_row, int $col, $value, ?string $datatype=null, bool $disable_strip_tags_for_strings=false)
Set cell value.
setDefaultOrderField(string $a_defaultorderfield)
__construct(int $a_obj_id, ?object $a_parent_obj, string $a_parent_cmd, array $a_userSelected, array $a_scosSelected, string $a_report)
$text
Definition: xapiexit.php:21
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
global $DIC
Definition: shib_login.php:25
setDefaultOrderDirection(string $a_defaultorderdirection)
static _getStatusText(int $a_status, ?ilLanguage $a_lng=null)
Get status alt text.
static stableSortArray(array $array, string $a_array_sortby, string $a_array_sortorder="asc", bool $a_numeric=false)
Sort an aray using a stable sort algorithm, which preveserves the sequence of array elements which ha...
fillRowExcel(ilExcel $a_excel, int &$a_row, array $a_set)
__construct(Container $dic, ilPlugin $plugin)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
parseValue(string $id, string|float|int|null $value, string $type)
determineOffsetAndOrder(bool $a_omit_offset=false)
setEnableHeader(bool $a_enableheader)