ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilDclReferenceRecordRepresentation.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22{
23 public function getHTML(bool $link = true, array $options = []): string
24 {
25 $value = $this->getRecordField()->getValue();
27
28 if (!$value || $value == "-") {
29 return "";
30 }
31
32 if (!is_array($value)) {
33 $value = [$value];
34 }
35
36 $items = [];
37
38 foreach ($value as $k => $v) {
39 $ref_record = ilDclCache::getRecordCache((int) $v);
40 if (!$ref_record->getId() || !$ref_record->getTableId() || !$record_field->getField() || !$record_field->getField()->getTableId()) {
41 //the referenced record_field does not seem to exist.
42 unset($value[$k]);
43 $value = array_values($value); // resets the keys
44 $record_field->setValue($value);
46 continue;
47 } else {
48 $field = $this->getRecordField()->getField();
49 if ($field->getProperty(ilDclBaseFieldModel::PROP_REFERENCE_LINK)) {
50 $ref_table = $ref_record->getTable();
51 $ref_id = $this->http->wrapper()->query()->retrieve('ref_id', $this->refinery->kindlyTo()->int());
52 if ($v !== null && $v !== '' && $v !== '-') {
53 $view = $ref_record->getTable()->getFirstTableViewId($this->user->getId(), true);
54 if ($view) {
55 $items[] = $this->getLinkHTML($ref_record, $view);
56 continue;
57 }
58 }
59 }
60 $items[] = $ref_record->getRecordFieldHTML($field->getProperty(ilDclBaseFieldModel::PROP_REFERENCE));
61 }
62 }
63 return implode('<br>', $items);
64 }
65
66 protected function getLinkHTML(ilDclBaseRecordModel $record, int $view): string
67 {
68 $this->ctrl->setParameterByClass(ilDclDetailedViewGUI::class, "table_id", $record->getTableId());
69 $this->ctrl->setParameterByClass(ilDclDetailedViewGUI::class, "record_id", $record->getId());
70 $this->ctrl->setParameterByClass(ilDclDetailedViewGUI::class, "tableview_id", $view);
71 $html = $this->factory->link()->standard(
72 $record->getRecordFieldHTML($this->getField()->getProperty(ilDclBaseFieldModel::PROP_REFERENCE)),
73 $this->ctrl->getLinkTargetByClass(
74 ilDclDetailedViewGUI::class,
75 "renderRecord"
76 )
77 );
78
79 return $this->renderer->render($html);
80 }
81
86 public function parseFormInput($value)
87 {
88 if (!$value || $value == []) {
89 return null;
90 }
91
92 return $value;
93 }
94}
renderer()
factory()
setValue($value, bool $omit_parsing=false)
Set value for record field.
doUpdate()
Update object in database.
getRecordFieldHTML($field_id, array $options=[])
static getRecordCache(?int $record_id)
getLinkHTML(ilDclBaseRecordModel $record, int $view)
parseFormInput($value)
function parses stored value to the variable needed to fill into the form for editing.
getHTML(bool $link=true, array $options=[])
Outputs html of a certain field.
$ref_id
Definition: ltiauth.php:66
static http()
Fetches the global http state from ILIAS.