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 
4 require_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 
239  public function prepareElementForEditor(ilADTFormBridge $a_text)
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 }
setValue($a_value)
Set Value.
Representation of ECS EContent Time Place.
This class represents a property form user interface.
getQuotedWords($with_quotation=false)
global $DIC
Definition: saml.php:7
ADT form bridge base class.
importCustomDefinitionFormPostValues(ilPropertyFormGUI $a_form)
Import custom post values from definition form.
searchObjects(ilADTSearchBridge $a_adt_search, ilQueryParser $a_parser, array $a_object_types, $a_locate, $a_search_type)
Search.
XML writer class.
This class represents a checkbox property in a property form.
addItem($a_item)
Add Item (Property, SectionHeader).
static getInstance()
Get singleton.
ADT base class.
Definition: class.ilADT.php:11
const TYPE_TIMEPLACE
static find($a_table, $a_type, $a_field_id, $a_condition, $a_additional_fields=null)
Find entries.
foreach($_POST as $key=> $value) $res
$lng
This class represents a number property in a property form.
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
getSearchQueryParserValue(ilADTSearchBridge $a_adt_search)
$row
addCustomFieldToDefinitionForm(ilPropertyFormGUI $a_form, $a_disabled=false)
Add input elements to definition form.
ADT search bridge base class.
xmlElement($tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
parseSearchObjects(array $a_records, array $a_object_types)
global $ilDB
$def
Definition: croninfo.php:21
getSQLCondition($a_element_id)
Get SQL condition for current value(s)