ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
class.ilDataCollectionReferenceField.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 require_once 'class.ilDataCollectionRecordField.php';
6 require_once 'class.ilDataCollectionRecord.php';
7 require_once 'class.ilDataCollectionField.php';
8 require_once 'class.ilDataCollectionRecordViewGUI.php';
9 require_once("./Services/Link/classes/class.ilLink.php");
10 require_once("./Modules/DataCollection/classes/class.ilDataCollectionImporter.php");
11 
24 
28  protected $dcl_obj_id;
32  protected $properties = array();
33 
34 
40  parent::__construct($record, $field);
41  $dclTable = ilDataCollectionCache::getTableCache($this->getField()->getTableId());
42  $this->dcl_obj_id = $dclTable->getCollectionObject()->getId();
43  $this->properties = $this->field->getProperties();
44  }
45 
46 
50  public function getHTML() {
51  $value = $this->getValue();
52  $record_field = $this;
53 
54  if (!$value || $value == "-") {
55  return "";
56  }
57 
59  $html = "";
60  if (!$ref_record->getTableId() || !$record_field->getField() || !$record_field->getField()->getTableId()) {
61  //the referenced record_field does not seem to exist.
62  $record_field->setValue(NULL);
63  $record_field->doUpdate();
64  } else {
65  if ($this->properties[ilDataCollectionField::PROPERTYID_REFERENCE_LINK]) {
66  global $ilDB;
69  $ref_table = $ref_record->getTableId();
70  // Checks if a view exists
71  $query = "SELECT table_id FROM il_dcl_view WHERE table_id = " . $ref_table . " AND type = " . $ilDB->quote(0, "integer")
72  . " AND formtype = " . $ilDB->quote(0, "integer");
73  $set = $ilDB->query($query);
74  if ($ilDB->numRows($set)) {
75  $html = $this->getLinkHTML(NULL, $this->getValue());
76  } else {
77  $html = $ref_record->getRecordFieldHTML($record_field->getField()->getFieldRef());
78  }
79  } else {
80  $html = $ref_record->getRecordFieldHTML($record_field->getField()->getFieldRef());
81  }
82  }
83 
84  return $html;
85  }
86 
87 
94  protected function getLinkHTML($link_name = NULL, $value) {
95  global $ilCtrl;
96 
97  if (!$value || $value == "-") {
98  return "";
99  }
100  $record_field = $this;
102  if (!$link_name) {
103  $link_name = $ref_record->getRecordFieldHTML($record_field->getField()->getFieldRef());
104  }
105  $ilCtrl->setParameterByClass("ildatacollectionrecordviewgui", "record_id", $ref_record->getId());
106  $html = "<a href='" . $ilCtrl->getLinkTargetByClass("ilDataCollectionRecordViewGUI", "renderRecord") . "&disable_paging=1'>" . $link_name
107  . "</a>";
108 
109  return $html;
110  }
111 
112 
116  public function getExportValue() {
117  if ($this->getValue()) {
118  $ref_rec = ilDataCollectionCache::getRecordCache($this->getValue());
119  $exp_value = $ref_rec->getRecordField($this->getField()->getFieldRef())->getExportValue();
120  if ($exp_value instanceof stdClass) {
121  return json_encode($exp_value);
122  }
123  return $exp_value;
124  } else {
125  return "";
126  }
127  }
128 
129  public function getValueFromExcel($excel, $row, $col){
130  global $lng;
131  $value = $excel->val($row, $col);
132  $old = $value;
134  if (!$value) {
135  $warning = "(" . $col . ", " . ilDataCollectionImporter::getExcelCharForInteger($col) . ") " . $lng->txt("dcl_no_such_reference") . " "
136  . $old;
137  return array('warning' => $warning);
138  }
139 
140  return $value;
141  }
142 
149  public function getReferenceFromValue($value) {
150  $field = ilDataCollectionCache::getFieldCache($this->field->getFieldRef());
151  $table = ilDataCollectionCache::getTableCache($field->getTableId());
152  $record_id = 0;
153  foreach ($table->getRecords() as $record) {
154  $record_value = $record->getRecordField($field->getId())->getValue();
155  // in case of a url-field
156  if ($json = json_decode($record_value,true)) {
157  $record_value = array_shift($json);
158  }
159  if ($record_value == $value) {
160  $record_id = $record->getId();
161  }
162  }
163 
164  return $record_id;
165  }
166 }
167 
168 ?>
static getRecordCache($record_id=0)
__construct(ilDataCollectionRecord $record, ilDataCollectionField $field)
global $ilCtrl
Definition: ilias.php:18
Class ilDataCollectionRecord.
Class ilDataCollectionField.
global $ilDB
$html
Definition: example_001.php:87