ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilADTDateTimeSearchBridgeRange.php
Go to the documentation of this file.
1<?php
2
3require_once "Services/ADT/classes/Bridges/class.ilADTSearchBridgeRange.php";
4
6{
7 protected function isValidADTDefinition(ilADTDefinition $a_adt_def)
8 {
9 return ($a_adt_def instanceof ilADTDateTimeDefinition);
10 }
11
12
13 // table2gui / filter
14
15 public function loadFilter()
16 {
17 $value = $this->readFilter();
18 if ($value !== null) {
19 if ($value["lower"]) {
20 $this->getLowerADT()->setDate(new ilDateTime($value["lower"], IL_CAL_DATETIME));
21 }
22 if ($value["upper"]) {
23 $this->getUpperADT()->setDate(new ilDateTime($value["upper"], IL_CAL_DATETIME));
24 }
25 }
26 }
27
28
29 // form
30
31 public function addToForm()
32 {
33 global $lng;
34
35 if ($this->getForm() instanceof ilPropertyFormGUI) {
36 // :TODO: use DateDurationInputGUI ?!
37
38 $check = new ilCustomInputGUI($this->getTitle());
39
40 $date_from = new ilDateTimeInputGUI($lng->txt('from'), $this->addToElementId("lower"));
41 $date_from->setShowTime(true);
42 $check->addSubItem($date_from);
43
44 if ($this->getLowerADT()->getDate() && !$this->getLowerADT()->isNull()) {
45 $date_from->setDate($this->getLowerADT()->getDate());
46 $checked = true;
47 }
48
49 $date_until = new ilDateTimeInputGUI($lng->txt('until'), $this->addToElementId("upper"));
50 $date_until->setShowTime(true);
51 $check->addSubItem($date_until);
52
53 if ($this->getUpperADT()->getDate() && !$this->getUpperADT()->isNull()) {
54 $date_until->setDate($this->getUpperADT()->getDate());
55 $checked = true;
56 }
57
58 $this->addToParentElement($check);
59 } else {
60 // see ilTable2GUI::addFilterItemByMetaType()
61 include_once("./Services/Form/classes/class.ilCombinationInputGUI.php");
62 include_once("./Services/Form/classes/class.ilDateTimeInputGUI.php");
63 $item = new ilCombinationInputGUI($this->getTitle(), $this->getElementId());
64
65 $lower = new ilDateTimeInputGUI("", $this->addToElementId("lower"));
66 $lower->setShowTime(true);
67 $item->addCombinationItem("lower", $lower, $lng->txt("from"));
68
69 if ($this->getLowerADT()->getDate() && !$this->getLowerADT()->isNull()) {
70 $lower->setDate($this->getLowerADT()->getDate());
71 }
72
73 $upper = new ilDateTimeInputGUI("", $this->addToElementId("upper"));
74 $upper->setShowTime(true);
75 $item->addCombinationItem("upper", $upper, $lng->txt("to"));
76
77 if ($this->getUpperADT()->getDate() && !$this->getUpperADT()->isNull()) {
78 $upper->setDate($this->getUpperADT()->getDate());
79 }
80
81 $item->setComparisonMode(ilCombinationInputGUI::COMPARISON_ASCENDING);
82
83 $this->addToParentElement($item);
84 }
85 }
86
87 protected function shouldBeImportedFromPost($a_post)
88 {
89 if ($this->getForm() instanceof ilPropertyFormGUI &&
90 !(bool) $this->text_input) {
91 return (bool) $a_post["tgl"];
92 }
93 return parent::shouldBeImportedFromPost($a_post);
94 }
95
96 public function importFromPost(array $a_post = null)
97 {
98 $post = $this->extractPostValues($a_post);
99
100 if ($post && $this->shouldBeImportedFromPost($post)) {
101 include_once "Services/Calendar/classes/class.ilCalendarUtil.php";
102 $start = ilCalendarUtil::parseIncomingDate($post["lower"], 1);
104
105 if ($start && $end && $start->get(IL_CAL_UNIX) > $end->get(IL_CAL_UNIX)) {
106 $tmp = $start;
107 $start = $end;
108 $end = $tmp;
109 }
110
111 if ($this->getForm() instanceof ilPropertyFormGUI) {
112 $item = $this->getForm()->getItemByPostVar($this->getElementId() . "[lower]");
113 $item->setDate($start);
114
115 $item = $this->getForm()->getItemByPostVar($this->getElementId() . "[upper]");
116 $item->setDate($end);
117 } elseif (array_key_exists($this->getElementId(), $this->table_filter_fields)) {
118 $this->table_filter_fields[$this->getElementId()]->getCombinationItem("lower")->setDate($start);
119 $this->table_filter_fields[$this->getElementId()]->getCombinationItem("upper")->setDate($end);
120 $this->writeFilter(array(
121 "lower" => (!$start || $start->isNull()) ? null: $start->get(IL_CAL_DATETIME),
122 "upper" => (!$end || $end->isNull()) ? null : $end->get(IL_CAL_DATETIME)
123 ));
124 }
125
126 $this->getLowerADT()->setDate($start);
127 $this->getUpperADT()->setDate($end);
128 } else {
129 $this->getLowerADT()->setDate();
130 $this->getUpperADT()->setDate();
131 }
132 }
133
134
135 // db
136
137 public function getSQLCondition($a_element_id)
138 {
139 global $ilDB;
140
141 if (!$this->isNull() && $this->isValid()) {
142 $sql = array();
143 if (!$this->getLowerADT()->isNull()) {
144 $sql[] = $a_element_id . " >= " . $ilDB->quote($this->getLowerADT()->getDate()->get(IL_CAL_DATETIME), "timestamp");
145 }
146 if (!$this->getUpperADT()->isNull()) {
147 $sql[] = $a_element_id . " <= " . $ilDB->quote($this->getUpperADT()->getDate()->get(IL_CAL_DATETIME), "timestamp");
148 }
149 return "(" . implode(" AND ", $sql) . ")";
150 }
151 }
152
153 public function isInCondition(ilADT $a_adt)
154 {
155 assert($a_adt instanceof ilADTDateTime);
156
157 if (!$this->getLowerADT()->isNull() && !$this->getUpperADT()->isNull()) {
158 return $a_adt->isInbetweenOrEqual($this->getLowerADT(), $this->getUpperADT());
159 } elseif (!$this->getLowerADT()->isNull()) {
160 return $a_adt->isLargerOrEqual($this->getLowerADT());
161 } else {
162 return $a_adt->isSmallerOrEqual($this->getUpperADT());
163 }
164 }
165
166
167 // import/export
168
169 public function getSerializedValue()
170 {
171 if (!$this->isNull() && $this->isValid()) {
172 $res = array();
173 if (!$this->getLowerADT()->isNull()) {
174 $res["lower"] = $this->getLowerADT()->getDate()->get(IL_CAL_DATETIME);
175 }
176 if (!$this->getUpperADT()->isNull()) {
177 $res["upper"] = $this->getUpperADT()->getDate()->get(IL_CAL_DATETIME);
178 }
179 return serialize($res);
180 }
181 }
182
183 public function setSerializedValue($a_value)
184 {
185 $a_value = unserialize($a_value);
186 if (is_array($a_value)) {
187 if (isset($a_value["lower"])) {
188 $this->getLowerADT()->setDate(new ilDateTime($a_value["lower"], IL_CAL_DATETIME));
189 }
190 if (isset($a_value["upper"])) {
191 $this->getUpperADT()->setDate(new ilDateTime($a_value["upper"], IL_CAL_DATETIME));
192 }
193 }
194 }
195}
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_UNIX
const IL_CAL_DATETIME
isValidADTDefinition(ilADTDefinition $a_adt_def)
Check if given ADT definition is valid.
getSQLCondition($a_element_id)
Get SQL condition for current value(s)
setSerializedValue($a_value)
Set current value(s) in serialized form (for easy persisting)
shouldBeImportedFromPost($a_post)
Check if incoming values should be imported at all.
isInCondition(ilADT $a_adt)
Compare directly against ADT.
importFromPost(array $a_post=null)
Import values from (search) form request POST data.
getSerializedValue()
Get current value(s) in serialized form (for easy persisting)
ADT definition base class.
readFilter()
Load value(s) from filter store (in session)
extractPostValues(array $a_post=null)
Extract data from (post) values.
addToElementId($a_add)
Add sub-element.
addToParentElement(ilFormPropertyGUI $a_field)
Add form field to parent element.
getElementId()
Get element id.
writeFilter($a_value=null)
Write value(s) to filter store (in session)
ADT base class.
Definition: class.ilADT.php:12
isSmallerOrEqual(ilADT $a_adt)
Check if given ADT is smaller or equal than self.
isLargerOrEqual(ilADT $a_adt)
Check if given ADT is larger or equal than self.
isInbetweenOrEqual(ilADT $a_adt_from, ilADT $a_adt_to)
Check if self is inbetween given ADTs (inclusive)
static parseIncomingDate($a_value, $a_add_time=null)
Try to parse incoming value to date object.
This class represents a number property in a property form.
This class represents a custom property in a property form.
This class represents a date/time property in a property form.
@classDescription Date and time handling
This class represents a property form user interface.
$end
Definition: saml1-acs.php:18
$post
Definition: post.php:34
global $lng
Definition: privfeed.php:17
foreach($_POST as $key=> $value) $res
global $ilDB