ILIAS  trunk Revision v11.0_alpha-1715-g7fc467680fb
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
class.ilDclReferenceRecordRepresentation.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
22 {
23  public function getHTML(bool $link = true, array $options = []): string
24  {
25  $value = $this->getRecordField()->getValue();
26  $record_field = $this->getRecordField();
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($ref_id, $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 }
getRecordFieldHTML($field_id, array $options=[])
setValue($value, bool $omit_parsing=false)
Set value for record field.
factory()
renderer()
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
parseFormInput($value)
function parses stored value to the variable needed to fill into the form for editing.
static http()
Fetches the global http state from ILIAS.
$ref_id
Definition: ltiauth.php:65
doUpdate()
Update object in database.
static getRecordCache(?int $record_id)
getLinkHTML(ilDclBaseRecordModel $record, int $view)