ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilAdvancedMDFieldDefinitionText.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once "Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php";
5
15{
16 protected $max_length; // [int]
17 protected $multi; // [bool]
18
19
20 //
21 // generic types
22 //
23
24 public function getType()
25 {
26 return self::TYPE_TEXT;
27 }
28
29
30 //
31 // ADT
32 //
33
34 protected function initADTDefinition()
35 {
36 $def = ilADTFactory::getInstance()->getDefinitionInstanceByType("Text");
37
38 $max = $this->getMaxLength();
39 if (is_numeric($max)) {
40 $def->setMaxLength($max);
41 }
42
43 // multi-line is presentation property
44
45 return $def;
46 }
47
48
49 //
50 // properties
51 //
52
58 public function setMaxLength($a_value)
59 {
60 if ($a_value !== null) {
61 $a_value = (int) $a_value;
62 }
63 $this->max_length = $a_value;
64 }
65
71 public function getMaxLength()
72 {
73 return $this->max_length;
74 }
75
81 public function setMulti($a_value)
82 {
83 $this->multi = (bool) $a_value;
84 }
85
91 public function isMulti()
92 {
93 return $this->multi;
94 }
95
96
97 //
98 // definition (NOT ADT-based)
99 //
100
101 protected function importFieldDefinition(array $a_def)
102 {
103 $this->setMaxLength($a_def["max"]);
104 $this->setMulti($a_def["multi"]);
105 }
106
107 protected function getFieldDefinition()
108 {
109 return array(
110 "max" => $this->getMaxLength(),
111 "multi" => $this->isMulti()
112 );
113 }
114
116 {
117 global $DIC;
118
119 $lng = $DIC['lng'];
120
121 $res = array();
122
123 if ($this->getMaxLength() !== null) {
124 $res[$lng->txt("md_adv_text_max_length")] = $this->getMaxLength();
125 }
126 if ($this->isMulti()) {
127 $res[$lng->txt("md_adv_text_multi")] = $lng->txt("yes");
128 }
129
130 return $res;
131 }
132
139 public function addCustomFieldToDefinitionForm(ilPropertyFormGUI $a_form, $a_disabled = false)
140 {
141 global $DIC;
142
143 $lng = $DIC['lng'];
144
145 $max = new ilNumberInputGUI($lng->txt("md_adv_text_max_length"), "max");
146 $max->setValue($this->getMaxLength());
147 $max->setSize(10);
148 $max->setMinValue(1);
149 $max->setMaxValue(4000); // DB limit
150 $a_form->addItem($max);
151
152 $multi = new ilCheckboxInputGUI($lng->txt("md_adv_text_multi"), "multi");
153 $multi->setValue(1);
154 $multi->setChecked($this->isMulti());
155 $a_form->addItem($multi);
156
157 if ($a_disabled) {
158 $max->setDisabled(true);
159 $multi->setDisabled(true);
160 }
161 }
162
169 {
170 $max = $a_form->getInput("max");
171 $this->setMaxLength(($max !== "") ? $max : null);
172
173 $this->setMulti($a_form->getInput("multi"));
174 }
175
176 //
177 // import/export
178 //
179
180 protected function addPropertiesToXML(ilXmlWriter $a_writer)
181 {
182 $a_writer->xmlElement('FieldValue', array("id" => "max"), $this->getMaxLength());
183 $a_writer->xmlElement('FieldValue', array("id" => "multi"), $this->isMulti());
184 }
185
186 public function importXMLProperty($a_key, $a_value)
187 {
188 if ($a_key == "max") {
189 $this->setMaxLength($a_value != "" ? $a_value : null);
190 }
191 if ($a_key == "multi") {
192 $this->setMulti($a_value != "" ? $a_value : null);
193 }
194 }
195
196 public function getValueForXML(ilADT $element)
197 {
198 return $element->getText();
199 }
200
201 public function importValueFromXML($a_cdata)
202 {
203 $this->getADT()->setText($a_cdata);
204 }
205
206 public function importFromECS($a_ecs_type, $a_value, $a_sub_id)
207 {
208 switch ($a_ecs_type) {
210 $value = implode(',', (array) $a_value);
211 break;
212
214 $value = (int) $a_value;
215 break;
216
218 $value = (string) $a_value;
219 break;
220
222 if ($a_value instanceof ilECSTimePlace) {
223 $value = $a_value->{'get' . ucfirst($a_sub_id)}();
224 }
225 break;
226 }
227
228 if (trim($value)) {
229 $this->getADT()->setText($value);
230 return true;
231 }
232 return false;
233 }
234
235 //
236 // presentation
237 //
238
240 {
241 assert($a_text instanceof ilADTTextFormBridge);
242
243 // seems to be default in course info editor
244 $a_text->setMulti($this->isMulti(), 80, 6);
245 }
246
247
248 //
249 // search
250 //
251
252 public function getSearchQueryParserValue(ilADTSearchBridge $a_adt_search)
253 {
254 return $a_adt_search->getADT()->getText();
255 }
256
257 protected function parseSearchObjects(array $a_records, array $a_object_types)
258 {
259 global $DIC;
260
261 $ilDB = $DIC['ilDB'];
262
263 $res = array();
264
265 $obj_ids = array();
266 foreach ($a_records as $record) {
267 if ($record["sub_type"] == "-") {
268 // keep found information
269 $obj_ids[$record["obj_id"]] = $record;
270 }
271 }
272
273 $sql = "SELECT obj_id,type" .
274 " FROM object_data" .
275 " WHERE " . $ilDB->in("obj_id", array_keys($obj_ids), "", "integer") .
276 " AND " . $ilDB->in("type", $a_object_types, "", "text");
277 $set = $ilDB->query($sql);
278 while ($row = $ilDB->fetchAssoc($set)) {
279 $row["found"] = array();
280 foreach ($obj_ids[$row["obj_id"]] as $field => $value) {
281 if (substr($field, 0, 5) == "found") {
282 $row["found"][$field] = $value;
283 }
284 }
285 $res[] = $row;
286 }
287
288 return $res;
289 }
290
301 public function searchObjects(ilADTSearchBridge $a_adt_search, ilQueryParser $a_parser, array $a_object_types, $a_locate, $a_search_type)
302 {
303 // :TODO: search type (like, fulltext)
304
305 include_once('Services/ADT/classes/ActiveRecord/class.ilADTActiveRecordByType.php');
306 $condition = $a_adt_search->getSQLCondition(
309 $a_parser->getQuotedWords()
310 );
311 if ($condition) {
312 $objects = ilADTActiveRecordByType::find("adv_md_values", $this->getADT()->getType(), $this->getFieldId(), $condition, $a_locate);
313 if (sizeof($objects)) {
314 return $this->parseSearchObjects($objects, $a_object_types);
315 }
316 return array();
317 }
318 }
319}
An exception for terminatinating execution or to throw for unit testing.
static find($a_table, $a_type, $a_field_id, $a_condition, $a_additional_fields=null)
Find entries.
static getInstance()
Get singleton.
ADT form bridge base class.
ADT search bridge base class.
getSQLCondition($a_element_id)
Get SQL condition for current value(s)
ADT base class.
Definition: class.ilADT.php:12
parseSearchObjects(array $a_records, array $a_object_types)
Add object-data needed for global search to AMD search results.
searchObjects(ilADTSearchBridge $a_adt_search, ilQueryParser $a_parser, array $a_object_types, $a_locate, $a_search_type)
Search.
importXMLProperty($a_key, $a_value)
Import property from XML.
importFieldDefinition(array $a_def)
Import (type-specific) field definition from DB.
prepareElementForEditor(ilADTFormBridge $a_text)
Prepare editor form elements.
getFieldDefinition()
Get (type-specific) field definition.
addCustomFieldToDefinitionForm(ilPropertyFormGUI $a_form, $a_disabled=false)
Add input elements to definition form.
importFromECS($a_ecs_type, $a_value, $a_sub_id)
Import meta data from ECS.
importCustomDefinitionFormPostValues(ilPropertyFormGUI $a_form)
Import custom post values from definition form.
addPropertiesToXML(ilXmlWriter $a_writer)
Add (type-specific) properties to xml export.
getFieldDefinitionForTableGUI()
Parse properties for table gui.
getValueForXML(ilADT $element)
Parse ADT value for xml (export)
getSearchQueryParserValue(ilADTSearchBridge $a_adt_search)
Get value for search query parser.
This class represents a checkbox property in a property form.
Representation of ECS EContent Time Place.
const TYPE_TIMEPLACE
This class represents a number property in a property form.
This class represents a property form user interface.
addItem($a_item)
Add Item (Property, SectionHeader).
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
getQuotedWords($with_quotation=false)
XML writer class.
xmlElement($tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
$def
Definition: croninfo.php:21
$row
global $DIC
Definition: saml.php:7
$lng
foreach($_POST as $key=> $value) $res
global $ilDB