ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
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 {
41 $def->setMaxLength($max);
42 }
43
44 // multi-line is presentation property
45
46 return $def;
47 }
48
49
50 //
51 // properties
52 //
53
59 public function setMaxLength($a_value)
60 {
61 if($a_value !== null)
62 {
63 $a_value = (int)$a_value;
64 }
65 $this->max_length = $a_value;
66 }
67
73 public function getMaxLength()
74 {
75 return $this->max_length;
76 }
77
83 public function setMulti($a_value)
84 {
85 $this->multi = (bool)$a_value;
86 }
87
93 public function isMulti()
94 {
95 return $this->multi;
96 }
97
98
99 //
100 // definition (NOT ADT-based)
101 //
102
103 protected function importFieldDefinition(array $a_def)
104 {
105 $this->setMaxLength($a_def["max"]);
106 $this->setMulti($a_def["multi"]);
107 }
108
109 protected function getFieldDefinition()
110 {
111 return array(
112 "max" => $this->getMaxLength(),
113 "multi" => $this->isMulti()
114 );
115 }
116
118 {
119 global $lng;
120
121 $res = array();
122
123 if($this->getMaxLength() !== null)
124 {
125 $res[$lng->txt("md_adv_text_max_length")] = $this->getMaxLength();
126 }
127 if($this->isMulti())
128 {
129 $res[$lng->txt("md_adv_text_multi")] = $lng->txt("yes");
130 }
131
132 return $res;
133 }
134
141 public function addCustomFieldToDefinitionForm(ilPropertyFormGUI $a_form, $a_disabled = false)
142 {
143 global $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 {
159 $max->setDisabled(true);
160 $multi->setDisabled(true);
161 }
162 }
163
170 {
171 $max = $a_form->getInput("max");
172 $this->setMaxLength(($max !== "") ? $max : null);
173
174 $this->setMulti($a_form->getInput("multi"));
175 }
176
177 //
178 // import/export
179 //
180
181 protected function addPropertiesToXML(ilXmlWriter $a_writer)
182 {
183 $a_writer->xmlElement('FieldValue',array("id"=>"max"),$this->getMaxLength());
184 $a_writer->xmlElement('FieldValue',array("id"=>"multi"),$this->isMulti());
185 }
186
187 public function importXMLProperty($a_key, $a_value)
188 {
189 if($a_key == "max")
190 {
191 $this->setMaxLength($a_value != "" ? $a_value : null);
192 }
193 if($a_key == "multi")
194 {
195 $this->setMulti($a_value != "" ? $a_value : null);
196 }
197 }
198
199 public function getValueForXML(ilADT $element)
200 {
201 return $element->getText();
202 }
203
204 public function importValueFromXML($a_cdata)
205 {
206 $this->getADT()->setText($a_cdata);
207 }
208
209 public function importFromECS($a_ecs_type, $a_value, $a_sub_id)
210 {
211 switch($a_ecs_type)
212 {
214 $value = implode(',', (array)$a_value);
215 break;
216
218 $value = (int)$a_value;
219 break;
220
222 $value = (string)$a_value;
223 break;
224
226 if($a_value instanceof ilECSTimePlace)
227 {
228 $value = $a_value->{'get'.ucfirst($a_sub_id)}();
229 }
230 break;
231 }
232
233 if(trim($value))
234 {
235 $this->getADT()->setText($value);
236 return true;
237 }
238 return false;
239 }
240
241 //
242 // presentation
243 //
244
246 {
247 // seems to be default in course info editor
248 $a_text->setMulti($this->isMulti(), 80, 6);
249 }
250
251
252 //
253 // search
254 //
255
256 public function getSearchQueryParserValue(ilADTSearchBridge $a_adt_search)
257 {
258 return $a_adt_search->getADT()->getText();
259 }
260
261 protected function parseSearchObjects(array $a_records, array $a_object_types)
262 {
263 global $ilDB;
264
265 $res = array();
266
267 $obj_ids = array();
268 foreach($a_records as $record)
269 {
270 if($record["sub_type"] == "-")
271 {
272 // keep found information
273 $obj_ids[$record["obj_id"]] = $record;
274 }
275 }
276
277 $sql = "SELECT obj_id,type".
278 " FROM object_data".
279 " WHERE ".$ilDB->in("obj_id", array_keys($obj_ids), "", "integer").
280 " AND ".$ilDB->in("type", $a_object_types, "", "text");
281 $set = $ilDB->query($sql);
282 while($row = $ilDB->fetchAssoc($set))
283 {
284 $row["found"] = array();
285 foreach($obj_ids[$row["obj_id"]] as $field => $value)
286 {
287 if(substr($field, 0, 5) == "found")
288 {
289 $row["found"][$field] = $value;
290 }
291 }
292 $res[] = $row;
293 }
294
295 return $res;
296 }
297
308 public function searchObjects(ilADTSearchBridge $a_adt_search, ilQueryParser $a_parser, array $a_object_types, $a_locate, $a_search_type)
309 {
310 // :TODO: search type (like, fulltext)
311
312 include_once('Services/ADT/classes/ActiveRecord/class.ilADTActiveRecordByType.php');
313 $condition = $a_adt_search->getSQLCondition(
316 $a_parser->getQuotedWords());
317 if($condition)
318 {
319 $objects = ilADTActiveRecordByType::find("adv_md_values", $this->getADT()->getType(), $this->getFieldId(), $condition, $a_locate);
320 if(sizeof($objects))
321 {
322 return $this->parseSearchObjects($objects, $a_object_types);
323 }
324 return array();
325 }
326 }
327}
328
329?>
static find($a_table, $a_type, $a_field_id, $a_condition, $a_additional_fields=null)
Find entries.
static getInstance()
Get singleton.
ADT search bridge base class.
getSQLCondition($a_element_id)
Get SQL condition for current value(s)
setMulti($a_value, $a_cols=null, $a_rows=null)
Set multi-line.
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.
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)
global $lng
Definition: privfeed.php:40
global $ilDB