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
5require_once 'class.ilDataCollectionRecordField.php';
6require_once 'class.ilDataCollectionRecord.php';
7require_once 'class.ilDataCollectionField.php';
8require_once 'class.ilDataCollectionRecordViewGUI.php';
9require_once("./Services/Link/classes/class.ilLink.php");
10require_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 {
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()) {
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)
Class ilDataCollectionField.
Class ilDataCollectionRecord.
__construct(ilDataCollectionRecord $record, ilDataCollectionField $field)
$html
Definition: example_001.php:87
global $ilCtrl
Definition: ilias.php:18
global $ilDB