ILIAS  release_4-3 Revision
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilNumberInputGUI.php
Go to the documentation of this file.
1 <?php
2 
3 /* Copyright (c) 1998-2012 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
5 include_once("./Services/Form/classes/class.ilSubEnabledFormPropertyGUI.php");
6 
15 {
16  protected $value;
17  protected $maxlength = 200;
18  protected $size = 40;
19  protected $suffix;
20  protected $minvalue = false;
21  protected $minvalueShouldBeGreater = false;
22  protected $maxvalue = false;
23  protected $maxvalueShouldBeLess = false;
24  protected $decimals;
25  protected $allow_decimals = false;
26 
33  function __construct($a_title = "", $a_postvar = "")
34  {
35  parent::__construct($a_title, $a_postvar);
36  }
37 
43  function setSuffix($a_value)
44  {
45  $this->suffix = $a_value;
46  }
47 
53  function getSuffix()
54  {
55  return $this->suffix;
56  }
57 
63  function setValue($a_value)
64  {
65  $this->value = str_replace(',', '.', $a_value);
66 
67  // empty strings are allowed
68  if($this->value != "")
69  {
70  // integer
71  if(!$this->areDecimalsAllowed())
72  {
73  $this->value = round($this->value);
74  }
75  // float
76  else if($this->getDecimals() > 0)
77  {
78  // get rid of unwanted decimals
79  $this->value = round($this->value, $this->getDecimals());
80 
81  // pad value to specified format
82  $this->value = number_format($this->value, $this->getDecimals(), ".", "");
83  }
84  }
85  }
86 
92  function getValue()
93  {
94  return $this->value;
95  }
96 
102  function setMaxLength($a_maxlength)
103  {
104  $this->maxlength = $a_maxlength;
105  }
106 
112  function getMaxLength()
113  {
114  return $this->maxlength;
115  }
116 
122  function setMinvalueShouldBeGreater($a_bool)
123  {
124  $this->minvalueShouldBeGreater = $a_bool;
125  }
126 
133  {
135  }
136 
142  function setMaxvalueShouldBeLess($a_bool)
143  {
144  $this->maxvalueShouldBeLess = $a_bool;
145  }
146 
153  {
155  }
156 
162  function setSize($a_size)
163  {
164  $this->size = $a_size;
165  }
166 
172  function setValueByArray($a_values)
173  {
174  $this->setValue($a_values[$this->getPostVar()]);
175  }
176 
182  function getSize()
183  {
184  return $this->size;
185  }
186 
192  function setMinValue($a_minvalue)
193  {
194  $this->minvalue = $a_minvalue;
195  }
196 
202  function getMinValue()
203  {
204  return $this->minvalue;
205  }
206 
212  function setMaxValue($a_maxvalue)
213  {
214  $this->maxvalue = $a_maxvalue;
215  }
216 
222  function getMaxValue()
223  {
224  return $this->maxvalue;
225  }
226 
232  function setDecimals($a_decimals)
233  {
234  $this->decimals = (int)$a_decimals;
235  if($this->decimals)
236  {
237  $this->allowDecimals(true);
238  }
239  }
240 
246  function getDecimals()
247  {
248  return $this->decimals;
249  }
250 
256  function allowDecimals($a_value)
257  {
258  $this->allow_decimals = (bool)$a_value;
259  }
260 
267  {
268  return $this->allow_decimals;
269  }
270 
276  function checkInput()
277  {
278  global $lng;
279 
280  $_POST[$this->getPostVar()] = ilUtil::stripSlashes($_POST[$this->getPostVar()]);
281  if ($this->getRequired() && trim($_POST[$this->getPostVar()]) == "")
282  {
283  $this->setAlert($lng->txt("msg_input_is_required"));
284 
285  return false;
286  }
287 
288  if (trim($_POST[$this->getPostVar()]) != "" &&
289  ! is_numeric(str_replace(',', '.', $_POST[$this->getPostVar()])))
290  {
291  $this->setAlert($lng->txt("form_msg_numeric_value_required"));
292 
293  return false;
294  }
295 
296  if ($this->minvalueShouldBeGreater())
297  {
298  if (trim($_POST[$this->getPostVar()]) != "" &&
299  $this->getMinValue() !== false &&
300  $_POST[$this->getPostVar()] <= $this->getMinValue())
301  {
302  $this->setAlert($lng->txt("form_msg_value_too_low"));
303 
304  return false;
305  }
306  }
307  else
308  {
309  if (trim($_POST[$this->getPostVar()]) != "" &&
310  $this->getMinValue() !== false &&
311  $_POST[$this->getPostVar()] < $this->getMinValue())
312  {
313  $this->setAlert($lng->txt("form_msg_value_too_low"));
314 
315  return false;
316  }
317  }
318 
319  if ($this->maxvalueShouldBeLess())
320  {
321  if (trim($_POST[$this->getPostVar()]) != "" &&
322  $this->getMaxValue() !== false &&
323  $_POST[$this->getPostVar()] >= $this->getMaxValue())
324  {
325  $this->setAlert($lng->txt("form_msg_value_too_high"));
326 
327  return false;
328  }
329  }
330  else
331  {
332  if (trim($_POST[$this->getPostVar()]) != "" &&
333  $this->getMaxValue() !== false &&
334  $_POST[$this->getPostVar()] > $this->getMaxValue())
335  {
336  $this->setAlert($lng->txt("form_msg_value_too_high"));
337 
338  return false;
339  }
340  }
341 
342  return $this->checkSubItemsInput();
343  }
344 
350  function insert(&$a_tpl)
351  {
352  $html = $this->render();
353 
354  $a_tpl->setCurrentBlock("prop_generic");
355  $a_tpl->setVariable("PROP_GENERIC", $html);
356  $a_tpl->parseCurrentBlock();
357  }
358 
362  function render()
363  {
364  global $lng;
365 
366  $tpl = new ilTemplate("tpl.prop_number.html", true, true, "Services/Form");
367 
368  if (strlen($this->getValue()))
369  {
370  $tpl->setCurrentBlock("prop_number_propval");
371  $tpl->setVariable("PROPERTY_VALUE", ilUtil::prepareFormOutput($this->getValue()));
372  $tpl->parseCurrentBlock();
373  }
374  $tpl->setCurrentBlock("prop_number");
375 
376  $tpl->setVariable("POST_VAR", $this->getPostVar());
377  $tpl->setVariable("ID", $this->getFieldId());
378  $tpl->setVariable("SIZE", $this->getSize());
379  $tpl->setVariable("MAXLENGTH", $this->getMaxLength());
380  if (strlen($this->getSuffix())) $tpl->setVariable("INPUT_SUFFIX", $this->getSuffix());
381  if ($this->getDisabled())
382  {
383  $tpl->setVariable("DISABLED",
384  " disabled=\"disabled\"");
385  }
386 
387  /*
388  $tpl->setVariable("JS_DECIMALS_ALLOWED", (int)$this->areDecimalsAllowed());
389  */
390 
391  // constraints
392  if ($this->areDecimalsAllowed() && $this->getDecimals() > 0)
393  {
394  $constraints = $lng->txt("form_format").": ###.".str_repeat("#", $this->getDecimals());
395  $delim = ", ";
396  }
397  if ($this->getMinValue() !== false)
398  {
399  $constraints.= $delim.$lng->txt("form_min_value").": ".(($this->minvalueShouldBeGreater()) ? "&gt; " : "").$this->getMinValue();
400  $delim = ", ";
401  }
402  if ($this->getMaxValue() !== false)
403  {
404  $constraints.= $delim.$lng->txt("form_max_value").": ".(($this->maxvalueShouldBeLess()) ? "&lt; " : "").$this->getMaxValue();
405  $delim = ", ";
406  }
407  if ($constraints != "")
408  {
409  $tpl->setVariable("TXT_NUMBER_CONSTRAINTS", $constraints);
410  }
411 
412  $tpl->parseCurrentBlock();
413 
414  return $tpl->get();
415  }
416 
423  {
425  if($value != "")
426  {
427  return (int)$value;
428  }
429  }
430 }
431 ?>