ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilTableGUI.php
Go to the documentation of this file.
1<?php
2
26{
27 protected string $sort_order;
28 protected string $link_params;
29 protected array $header_params;
33 protected $tpl;
34 protected ilLanguage $lng;
35
36 public string $title = ""; // table title name
37 public string $icon = ""; // table title icon
38 public string $icon_alt = ""; // table title icon alt text
39 public string $help_page = ""; // table help name
40 public string $help_icon = ""; // table help icon
41 public string $help_icon_alt = ""; // table help icon alt text
42 public array $header_names = []; // titles of header columns
43 public array $header_vars = []; // var names of header columns
44 public array $linkbar_vars = []; // additional variables for linkbar
45 public array $data = []; // table content
46 public int $column_count = 0; // no. of columns
47 public array $column_width = []; // column width of each column
48 public int $max_count = 0; // max. count of database query
49 public int $limit = 0; // max. count of dataset per page
50 public bool $max_limit = false;
51 public int $offset = 0; // dataset offset
52 public string $order_column = ""; // order column
53 public string $order_direction = ""; // order direction
54 public string $footer_style = ""; // css format for links
55 public string $footer_previous = ""; // value of previous link
56 public string $footer_next = ""; // value of next link
57 public bool $lang_support = true; // if a lang object is included
58 public bool $global_tpl = false; // uses global tpl (true) or a local one (false)
59 public string $form_name = ""; // the name of the parent form of the table
60 public string $select_all_checkbox = ""; // the name (or the first characters if unique) of a checkbox the should be toggled with a select all button
61 public array $action_buttons = []; // action buttons in the table footer
62
63 public string $prefix = ""; // prefix for sort and offset fields if you have two or more tables on a page that you want to sort separately
64 public string $base = ""; // base script (deprecated)
65
66 // default settings for enabled/disabled table modules
67 public array $enabled = array( "table" => true,
68 "title" => true,
69 "icon" => true,
70 "help" => false,
71 "content" => true,
72 "action" => false,
73 "header" => true,
74 "footer" => true,
75 "linkbar" => true,
76 "numinfo" => true,
77 "numinfo_header" => false,
78 "sort" => true,
79 "hits" => false,
80 "auto_sort" => true,
81 "select_all" => false
82 );
83
84 // tpl styles (only one so far)
85 public array $styles = array(
86 "table" => "fullwidth"
87 );
88
93 public function __construct(
94 array $a_data = [],
95 bool $a_global_tpl = true
96 ) {
97 global $DIC;
98
99 $tpl = $DIC->ui()->mainTemplate();
100 $lng = $DIC->language();
101
102 $this->global_tpl = $a_global_tpl;
103 $this->header_vars = array();
104 $this->header_params = array();
105 $this->enabled["form"] = true;
106 $this->action_buttons = array();
107 if ($this->global_tpl) {
108 $this->tpl = $tpl;
109 } else {
110 $this->tpl = new ilTemplate("tpl.table.html", true, true, "components/ILIAS/Table");
111 }
112
113 $this->lng = $lng;
114
115 if (!$this->lng) {
116 $this->lang_support = false;
117 }
118
119 $this->setData($a_data);
120 }
121
122 public function setTemplate(ilTemplate $a_tpl): void
123 {
124 $this->tpl = $a_tpl;
125 }
126
127 public function getTemplateObject(): ilTemplate
128 {
129 return $this->tpl;
130 }
131
135 public function setData(array $a_data): void
136 {
137 $this->data = $a_data;
138 }
139
140 public function getData(): array
141 {
142 return $this->data;
143 }
144
150 public function setTitle(string $a_title, string $a_icon = "", string $a_icon_alt = ""): void
151 {
152 $this->title = $a_title;
153 $this->icon = $a_icon;
154 $this->icon_alt = $a_icon_alt;
155
156 if (!$this->icon) {
157 $this->enabled["icon"] = false;
158
159 return;
160 }
161
162 if (!$this->icon_alt) {
163 $this->icon_alt = $this->icon;
164 }
165 $this->enabled["icon"] = true;
166 }
167
168 public function setHelp(string $a_help_page, string $a_help_icon, string $a_help_icon_alt = ""): void
169 {
170 $this->help_page = $a_help_page;
171 $this->help_icon = $a_help_icon;
172 $this->help_icon_alt = $a_help_icon_alt;
173
174 if (!$this->help_icon_alt) {
175 $this->help_icon_alt = $this->help_icon;
176 }
177 }
178
179 public function setHeaderNames(array $a_header_names): void
180 {
181 $this->header_names = $a_header_names;
182 $this->column_count = count($this->header_names);
183 }
184
185 public function getColumnCount(): int
186 {
187 return $this->column_count;
188 }
189
190 public function setHeaderVars(array $a_header_vars, array $a_header_params = []): void
191 {
192 $this->header_vars = $a_header_vars;
193 $this->header_params = $a_header_params;
194 $this->link_params = "";
195 foreach ($a_header_params as $key => $val) {
196 $this->link_params .= $key . "=" . $val . "&";
197 }
198 }
199
203 public function setColumnWidth(array $a_column_width): void
204 {
205 $this->column_width = $a_column_width;
206 }
207
208 public function setOneColumnWidth(string $a_column_width, int $a_column_number): void
209 {
210 $this->column_width[$a_column_number] = $a_column_width;
211 }
212
218 public function setMaxCount(int $a_max_count): void
219 {
220 $this->max_count = $a_max_count;
221
222 if ($this->max_limit) {
223 $this->limit = $this->max_count;
224 }
225 }
226
230 public function setLimit(int $a_limit = 0, int $a_default_limit = 0): void
231 {
232 $this->limit = ($a_limit) ?: $a_default_limit;
233
234 if ($this->limit == 0) {
235 $this->max_limit = true;
236 }
237 }
238
239 public function getLimit(): int
240 {
241 return $this->limit;
242 }
243
244
249 public function setPrefix(string $a_prefix): void
250 {
251 $this->prefix = $a_prefix ?: "";
252 }
253
257 public function setOffset(int $a_offset): void
258 {
259 $this->offset = ($a_offset) ?: 0;
260 }
261
262 public function getOffset(): int
263 {
264 return $this->offset;
265 }
266
267 public function setOrderColumn(
268 string $a_order_column = "",
269 string $a_default_column = ""
270 ): void {
271 // set default sort column to first column
272 if (empty($a_order_column)) {
273 if (!empty($a_default_column)) {
274 $oc = array_search($a_default_column, $this->header_vars);
275 } else {
276 $oc = "";
277 }
278 } else {
279 $oc = array_search($a_order_column, $this->header_vars);
280 }
281
282 $this->order_column = $oc ?: "";
283 }
284
285 public function getOrderColumn(): string
286 {
287 return $this->order_column;
288 }
289
290 public function setOrderDirection(string $a_order_direction): void
291 {
292 if (strtolower($a_order_direction) == "desc") {
293 $this->order_direction = "desc";
294 $this->sort_order = "asc";
295 } else {
296 $this->order_direction = "asc"; // set default sort order to "ASC"
297 $this->sort_order = "desc";
298 }
299 }
300
301 public function getOrderDirection(): string
302 {
303 return $this->order_direction;
304 }
305
306 public function setFooter(
307 string $a_style,
308 string $a_previous = "",
309 string $a_next = ""
310 ): void {
311 $this->footer_style = $a_style;
312 $this->footer_previous = $a_previous ?: "<<<";
313 $this->footer_next = $a_next ?: ">>>";
314 }
315
319 public function enable(string $a_module_name): void
320 {
321 if (!in_array($a_module_name, array_keys($this->enabled))) {
322 return;
323 }
324
325 $this->enabled[$a_module_name] = true;
326 }
327
331 public function disable(string $a_module_name): void
332 {
333 if (!in_array($a_module_name, array_keys($this->enabled))) {
334 return;
335 }
336
337 $this->enabled[$a_module_name] = false;
338 }
339
340
341 public function sortData(): void
342 {
343 if ($this->enabled["sort"]) {
344 $this->data = ilArrayUtil::sortArray($this->data, $this->order_column, $this->order_direction);
345 }
346 $this->data = array_slice($this->data, $this->offset, $this->limit);
347 }
348
349 public function render(): string
350 {
351 if ($this->enabled['table']) {
352 $this->tpl->setVariable("CSS_TABLE", "table table-striped" /* $this->getStyle("table") */);
353 }
354
355 // table title icon
356 if ($this->enabled["icon"] && $this->enabled["title"]) {
357 $this->tpl->setCurrentBlock("tbl_header_title_icon");
358 $this->tpl->setVariable("TBL_TITLE_IMG", ilUtil::getImagePath($this->icon));
359 $this->tpl->setVariable("TBL_TITLE_IMG_ALT", $this->icon_alt);
360 $this->tpl->parseCurrentBlock();
361 }
362 // table title help
363 if ($this->enabled["help"] && $this->enabled["title"]) {
364 $this->tpl->setCurrentBlock("tbl_header_title_help");
365 $this->tpl->setVariable("TBL_HELP_IMG", ilUtil::getImagePath($this->help_icon));
366 $this->tpl->setVariable("TBL_HELP_LINK", $this->help_page);
367 $this->tpl->setVariable("TBL_HELP_IMG_ALT", $this->help_icon_alt);
368 $this->tpl->parseCurrentBlock();
369 }
370
371 // table title
372 if ($this->enabled["title"]) {
373 $this->tpl->setCurrentBlock("tbl_header_title");
374 $this->tpl->setVariable("COLUMN_COUNT", $this->column_count);
375 $this->tpl->setVariable("TBL_TITLE", $this->title);
376 $this->tpl->parseCurrentBlock();
377 }
378
379 // table header
380 if ($this->enabled["header"]) {
381 $this->renderHeader();
382 }
383
384 // table data
385 // the table content may be skipped to use an individual template blockfile
386 // To do so don't set $this->data and parse your table content by yourself
387 // The template block name for the blockfile MUST be 'TBL_CONTENT'
388
389 if ($this->enabled["content"]) {
390 if ($this->enabled['auto_sort']) {
391 $this->setMaxCount(count($this->data));
392 $this->sortData();
393 }
394 $count = 0;
395
396 foreach ($this->data as $tbl_content_row) {
397 foreach ($tbl_content_row as $key => $tbl_content_cell) {
398 if (is_array($tbl_content_cell)) {
399 $this->tpl->setCurrentBlock("tbl_cell_subtitle");
400 $this->tpl->setVariable("TBL_CELL_SUBTITLE", $tbl_content_cell[1]);
401 $this->tpl->parseCurrentBlock();
402 $tbl_content_cell = "<b>" . $tbl_content_cell[0] . "</b>";
403 }
404
405 $this->tpl->setCurrentBlock("tbl_content_cell");
406 $this->tpl->setVariable("TBL_CONTENT_CELL", $tbl_content_cell);
407 $this->tpl->parseCurrentBlock();
408 }
409
410 $this->tpl->setCurrentBlock("tbl_content_row");
411 $this->tpl->setVariable("ROWCOLOR", " ");
412 $this->tpl->parseCurrentBlock();
413
414 $count++;
415 }
416 }
417 // select all checkbox
418 if ($this->enabled["select_all"]) {
419 if ((strlen($this->getFormName())) && (strlen($this->getSelectAllCheckbox()))) {
420 $this->tpl->setVariable('SELECT_PREFIX', $this->prefix);
421 $this->tpl->setVariable("SELECT_ALL_TXT_SELECT_ALL", $this->lng->txt("select_all"));
422 $this->tpl->setVariable("SELECT_ALL_CHECKBOX_NAME", $this->getSelectAllCheckbox());
423 $this->tpl->setVariable("SELECT_ALL_FORM_NAME", $this->getFormName());
424 if (!($this->enabled["numinfo"] && $this->enabled["footer"])) {
425 $this->tpl->setVariable("COLUMN_COUNT", $this->getColumnCount());
426 }
427 }
428 }
429
430 // table header numinfo
431 if ($this->enabled["numinfo_header"]) {
432 $start = $this->offset + 1; // compute num info
433 $end = $this->offset + $this->limit;
434
435 if ($end > $this->max_count or $this->limit == 0) {
436 $end = $this->max_count;
437 }
438
439 if ($this->lang_support) {
440 $numinfo = "(" . $this->lng->txt("dataset") . " " . $start . " - " . $end . " " . strtolower($this->lng->txt("of")) . " " . $this->max_count . ")";
441 } else {
442 $numinfo = "(Dataset " . $start . " - " . $end . " of " . $this->max_count . ")";
443 }
444 if ($this->max_count > 0) {
445 //$numinfo = $this->lng->txt("no_datasets");
446 $this->tpl->setCurrentBlock("tbl_header_numinfo");
447 $this->tpl->setVariable("NUMINFO_HEADER", $numinfo);
448 $this->tpl->setVariable("COLUMN_COUNT_HEADER", $this->getColumnCount());
449 $this->tpl->parseCurrentBlock();
450 }
451 }
452 // table footer numinfo
453 if ($this->enabled["numinfo"] && $this->enabled["footer"]) {
454 $start = $this->offset + 1; // compute num info
455 $end = $this->offset + $this->limit;
456
457 if ($end > $this->max_count or $this->limit == 0) {
458 $end = $this->max_count;
459 }
460
461 if ($this->lang_support) {
462 $numinfo = "(" . $this->lng->txt("dataset") . " " . $start . " - " . $end . " " . strtolower($this->lng->txt("of")) . " " . $this->max_count . ")";
463 } else {
464 $numinfo = "(Dataset " . $start . " - " . $end . " of " . $this->max_count . ")";
465 }
466 if ($this->max_count > 0) {
467 //$numinfo = $this->lng->txt("no_datasets");
468 $this->tpl->setCurrentBlock("tbl_footer_numinfo");
469 $this->tpl->setVariable("NUMINFO", $numinfo);
470 $this->tpl->parseCurrentBlock();
471 }
472 }
473 // table footer linkbar
474 if ($this->enabled["linkbar"] && $this->enabled["footer"] && $this->limit != 0
475 && $this->max_count > 0) {
476 $params = array(
477 $this->prefix . "sort_by" => $this->header_vars[$this->order_column],
478 $this->prefix . "sort_order" => $this->order_direction
479 );
480 $params = array_merge($this->header_params, $params);
481
482 $layout = array(
483 "link" => $this->footer_style,
484 "prev" => $this->footer_previous,
485 "next" => $this->footer_next,
486 );
487
488 $base = ($this->getBase() == "")
489 ? basename($_SERVER["PHP_SELF"])
490 : $this->getBase();
491
492 $linkbar = $this->linkbar($base, $this->max_count, $this->limit, $this->offset, $params, $layout, $this->prefix);
493 $this->tpl->setCurrentBlock("tbl_footer_linkbar");
494 $this->tpl->setVariable("LINKBAR", $linkbar);
495 $this->tpl->parseCurrentBlock();
496 }
497
498 // table footer
499 if ($this->enabled["footer"] && $this->max_count > 0) {
500 $this->tpl->setCurrentBlock("tbl_footer");
501 $this->tpl->setVariable("COLUMN_COUNT", $this->column_count);
502 $this->tpl->parseCurrentBlock();
503 }
504
505 // action buttons
506 if ($this->enabled["action"]) {
507 foreach ($this->action_buttons as $button) {
508 $this->tpl->setCurrentBlock("tbl_action_btn");
509 $this->tpl->setVariable("BTN_NAME", $button["name"]);
510 $this->tpl->setVariable("BTN_VALUE", $button["value"]);
511 $this->tpl->parseCurrentBlock();
512 }
513 $this->tpl->setCurrentBlock("tbl_action_row");
514 $this->tpl->setVariable("IMG_ARROW", ilUtil::getImagePath("nav/arrow_downright.svg"));
515 $this->tpl->setVariable("ALT_ARROW", $this->lng->txt("arrow_downright.svg"));
516 $this->tpl->setVariable("COLUMN_COUNT", $this->getColumnCount());
517 $this->tpl->parseCurrentBlock();
518 }
519
520 if ($this->enabled["form"]) {
521 $this->tpl->touchBlock("tbl_form_footer");
522 }
523
524 if ($this->enabled['table']) {
525 $this->tpl->touchBlock("tbl_table_end");
526 }
527
528 if (!$this->global_tpl) {
529 return $this->tpl->get();
530 }
531 return "";
532 }
533
534 public static function linkbar(
535 string $AScript,
536 int $AHits,
537 int $ALimit,
538 int $AOffset,
539 array $AParams = array(),
540 array $ALayout = array(),
541 string $prefix = ''
542 ): string {
543 $LinkBar = "";
544 $params = "";
545
546 $layout_link = "";
547 $layout_prev = "&lt;&lt;";
548 $layout_next = "&gt;&gt;";
549
550 // layout options
551 if ((is_array($ALayout) && (count($ALayout) > 0))) {
552 if ($ALayout["link"]) {
553 $layout_link = " class=\"" . $ALayout["link"] . "\"";
554 }
555
556 if ($ALayout["prev"]) {
557 $layout_prev = $ALayout["prev"];
558 }
559
560 if ($ALayout["next"]) {
561 $layout_next = $ALayout["next"];
562 }
563 }
564
565 // show links, if hits greater limit
566 // or offset > 0 (can be > 0 due to former setting)
567 if ($AHits > $ALimit || $AOffset > 0) {
568 if (!empty($AParams)) {
569 foreach ($AParams as $key => $value) {
570 $params .= $key . "=" . $value . "&";
571 }
572 }
573 // if ($params) $params = substr($params,0,-1);
574 if (strpos($AScript, '&')) {
575 $link = $AScript . "&" . $params . $prefix . "offset=";
576 } else {
577 $link = $AScript . "?" . $params . $prefix . "offset=";
578 }
579
580 // ?bergehe "zurck"-link, wenn offset 0 ist.
581 if ($AOffset >= 1) {
582 $prevoffset = $AOffset - $ALimit;
583 if ($prevoffset < 0) {
584 $prevoffset = 0;
585 }
586 $LinkBar .= "<a" . $layout_link . " href=\"" . $link . $prevoffset . "\">" . $layout_prev . "&nbsp;</a>";
587 }
588
589 // Ben?tigte Seitenzahl kalkulieren
590 $pages = intval($AHits / $ALimit);
591
592 // Wenn ein Rest bleibt, addiere eine Seite
593 if (($AHits % $ALimit)) {
594 $pages++;
595 }
596
597 // Bei Offset = 0 keine Seitenzahlen anzeigen : DEAKTIVIERT
598 // if ($AOffset != 0) {
599
600 // ansonsten zeige Links zu den anderen Seiten an
601 for ($i = 1 ;$i <= $pages ; $i++) {
602 $newoffset = $ALimit * ($i - 1);
603
604 if ($newoffset == $AOffset) {
605 $LinkBar .= "[" . $i . "] ";
606 } else {
607 $LinkBar .= '<a ' . $layout_link . ' href="' .
608 $link . $newoffset . '">[' . $i . ']</a> ';
609 }
610 }
611 // }
612
613 // Checken, ob letze Seite erreicht ist
614 // Wenn nicht, gebe einen "Weiter"-Link aus
615 if (!(($AOffset / $ALimit) == ($pages - 1)) && ($pages != 1)) {
616 $newoffset = $AOffset + $ALimit;
617 $LinkBar .= "<a" . $layout_link . " href=\"" . $link . $newoffset . "\">&nbsp;" . $layout_next . "</a>";
618 }
619
620 return $LinkBar;
621 }
622 return "";
623 }
624
625 public function renderHeader(): void
626 {
627 foreach ($this->header_names as $key => $tbl_header_cell) {
628 if (!$this->enabled["sort"]) {
629 $this->tpl->setCurrentBlock("tbl_header_no_link");
630 if ($this->column_width[$key]) {
631 $this->tpl->setVariable("TBL_COLUMN_WIDTH_NO_LINK", " width=\"" . $this->column_width[$key] . "\"");
632 }
633 $this->tpl->setVariable("TBL_HEADER_CELL_NO_LINK", $tbl_header_cell);
634 $this->tpl->parseCurrentBlock();
635 continue;
636 }
637 if (($key == $this->order_column) && ($this->order_direction != "")) {
638 if (strcmp($this->header_vars[$key], "") != 0) {
639 $this->tpl->setCurrentBlock("tbl_order_image");
640 $this->tpl->parseCurrentBlock();
641 }
642 }
643
644 $this->tpl->setCurrentBlock("tbl_header_cell");
645 $this->tpl->setVariable("TBL_HEADER_CELL", $tbl_header_cell);
646
647 // only set width if a value is given for that column
648 if ($this->column_width[$key]) {
649 $this->tpl->setVariable("TBL_COLUMN_WIDTH", " width=\"" . $this->column_width[$key] . "\"");
650 }
651
652 $lng_sort_column = ($this->lang_support) ? $this->lng->txt("sort_by_this_column") : "Sort by this column";
653 $this->tpl->setVariable("TBL_ORDER_ALT", $lng_sort_column);
654
655 $order_dir = "asc";
656
657 if ($key == $this->order_column) {
658 $order_dir = $this->sort_order;
659
660 $lng_change_sort = ($this->lang_support) ? $this->lng->txt("change_sort_direction") : "Change sort direction";
661 $this->tpl->setVariable("TBL_ORDER_ALT", $lng_change_sort);
662 }
663
664 $this->setOrderLink($key, $order_dir);
665 $this->tpl->parseCurrentBlock();
666 }
667
668 $this->tpl->setCurrentBlock("tbl_header");
669 $this->tpl->parseCurrentBlock();
670 }
671
672 public function setOrderLink(string $key, string $order_dir): void
673 {
674 $this->tpl->setVariable("TBL_ORDER_LINK", basename($_SERVER["PHP_SELF"]) . "?" . $this->link_params . $this->prefix . "sort_by=" . $this->header_vars[$key] . "&" . $this->prefix . "sort_order=" . $order_dir . "&" . $this->prefix . "offset=" . $this->offset);
675 }
676
677 public function setStyle(
678 string $a_element,
679 string $a_style
680 ): void {
681 $this->styles[$a_element] = $a_style;
682 }
683
684 public function getStyle(string $a_element): string
685 {
686 return $this->styles[$a_element];
687 }
688
692 public function setBase(string $a_base): void
693 {
694 $this->base = $a_base;
695 }
696
697 public function getBase(): string
698 {
699 return $this->base;
700 }
701
705 public function getFormName(): string
706 {
707 return $this->form_name;
708 }
709
710 public function setFormName(string $a_name = "cmd"): void
711 {
712 $this->form_name = $a_name;
713 }
714
718 public function getSelectAllCheckbox(): string
719 {
720 return $this->select_all_checkbox;
721 }
722
723 public function setSelectAllCheckbox(string $a_select_all_checkbox): void
724 {
725 $this->select_all_checkbox = $a_select_all_checkbox;
726 }
727
728 public function clearActionButtons(): void
729 {
730 $this->action_buttons = array();
731 }
732
733 public function addActionButton(string $btn_name, string $btn_value): void
734 {
735 $this->action_buttons[] = array(
736 "name" => $btn_name,
737 "value" => $btn_value
738 );
739 }
740}
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)
language handling
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getSelectAllCheckbox()
get the name of the checkbox that should be toggled with a select all button
string $footer_next
array $action_buttons
setColumnWidth(array $a_column_width)
set table column widths
setTitle(string $a_title, string $a_icon="", string $a_icon_alt="")
ilLanguage $lng
static linkbar(string $AScript, int $AHits, int $ALimit, int $AOffset, array $AParams=array(), array $ALayout=array(), string $prefix='')
string $sort_order
setFormName(string $a_name="cmd")
setOffset(int $a_offset)
set dataset offset
setData(array $a_data)
Set table data.
setPrefix(string $a_prefix)
set prefix for sort and offset fields (if you have two or more tables on a page that you want to sort...
setOrderColumn(string $a_order_column="", string $a_default_column="")
setLimit(int $a_limit=0, int $a_default_limit=0)
set max.
enable(string $a_module_name)
setOrderLink(string $key, string $order_dir)
setHelp(string $a_help_page, string $a_help_icon, string $a_help_icon_alt="")
__construct(array $a_data=[], bool $a_global_tpl=true)
setHeaderVars(array $a_header_vars, array $a_header_params=[])
string $order_direction
setTemplate(ilTemplate $a_tpl)
getFormName()
get the name of the parent form
array $header_params
setStyle(string $a_element, string $a_style)
disable(string $a_module_name)
setSelectAllCheckbox(string $a_select_all_checkbox)
getStyle(string $a_element)
string $select_all_checkbox
setMaxCount(int $a_max_count)
set max.
string $help_icon_alt
addActionButton(string $btn_name, string $btn_value)
setHeaderNames(array $a_header_names)
setFooter(string $a_style, string $a_previous="", string $a_next="")
string $footer_style
string $footer_previous
string $order_column
setBase(string $a_base)
setOneColumnWidth(string $a_column_width, int $a_column_number)
string $link_params
setOrderDirection(string $a_order_direction)
special template class to simplify handling of ITX/PEAR
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
if(! $DIC->user() ->getId()||!ilLTIConsumerAccess::hasCustomProviderCreationAccess()) $params
Definition: ltiregstart.php:31
$_SERVER['HTTP_HOST']
Definition: raiseError.php:26
if(!file_exists('../ilias.ini.php'))
global $DIC
Definition: shib_login.php:26