19 $this->options =
array();
20 $this->filter =
array();
23 $aOptions = CUserOptions::GetOption(
"main.interface.grid", $this->grid_id,
array());
25 if(!is_array($aOptions))
29 if (!isset($aOptions[
"views"]) || !is_array($aOptions[
"views"]))
31 $aOptions[
"views"] = [];
34 if (!isset($aOptions[
"filters"]) || !is_array($aOptions[
"filters"]))
36 $aOptions[
"filters"] = [];
39 if(!isset($aOptions[
"current_view"]) || $aOptions[
"current_view"] ==
'' || !isset($aOptions[
"views"][$aOptions[
"current_view"]]))
41 $aOptions[
"current_view"] =
"default";
44 $defaultOptions = CUserOptions::GetOption(
"main.interface.grid.common", $this->grid_id,
array());
46 if (isset($defaultOptions[
"view"]) && is_array($defaultOptions[
"view"]) && !isset($aOptions[
"views"][
"default"]))
48 $aOptions[
"views"][
"default"] = $defaultOptions[
"view"];
50 if(!isset($aOptions[
"views"][
"default"]))
52 $aOptions[
"views"][
"default"] =
array(
"columns"=>
"");
55 $this->all_options = $aOptions;
56 $this->currentView = $aOptions[
"current_view"];
58 if(isset($aOptions[
"views"][$this->currentView]))
66 if(isset($this->options[
"saved_filter"]) && $this->options[
"saved_filter"] <>
'')
68 if(isset($this->all_options[
"filters"][$this->options[
"saved_filter"]]) && is_array($this->all_options[
"filters"][$this->options[
"saved_filter"]][
"fields"]))
70 $this->filter = $this->all_options[
"filters"][$this->options[
"saved_filter"]][
"fields"];
72 elseif(isset($this->filterPresets[$this->options[
"saved_filter"]]) && is_array($this->filterPresets[$this->options[
"saved_filter"]][
"fields"]))
74 $this->filter = $this->filterPresets[$this->options[
"saved_filter"]][
"fields"];
86 if (!isset($default[
"vars"]) || !is_array($default[
"vars"]))
88 $default[
"vars"] = [
"by" =>
"by",
"order" =>
"order"];
90 if (!isset($default[
"sort"]) || !is_array($default[
"sort"]))
92 $default[
"sort"] = [];
96 "sort" => $default[
"sort"],
97 "vars" => $default[
"vars"],
101 if(isset(
$_REQUEST[$default[
"vars"][
"by"]]))
103 Application::getInstance()->getSession()[
"main.interface.grid"][
$this->grid_id][
"sort_by"] =
$_REQUEST[$default[
"vars"][
"by"]];
105 elseif(!isset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"sort_by"]))
107 if(!empty($this->options[
"sort_by"]))
110 $key = $this->options[
"sort_by"];
112 elseif(!empty($this->options[
"last_sort_by"]))
115 $key = $this->options[
"last_sort_by"];
118 if(isset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"sort_by"]))
119 $key = Application::getInstance()->getSession()[
"main.interface.grid"][
$this->grid_id][
"sort_by"];
123 if(isset(
$_REQUEST[$default[
"vars"][
"order"]]))
125 Application::getInstance()->getSession()[
"main.interface.grid"][
$this->grid_id][
"sort_order"] =
$_REQUEST[$default[
"vars"][
"order"]];
127 elseif(!isset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"sort_order"]))
129 if(!empty($this->options[
"sort_order"]))
133 elseif(!empty($this->options[
"last_sort_order"]))
142 if(isset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"sort_order"]))
143 $arResult[
"sort"] =
array(
$key => Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"sort_order"]);
191 if(isset(
$_REQUEST[$field[
"id"].
"_datesel"]))
193 if(
$_REQUEST[$field[
"id"].
"_datesel"] <>
'')
195 $aRes[$field[
"id"].
"_datesel"] =
$_REQUEST[$field[
"id"].
"_datesel"];
200 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"][$field[
"id"].
"_datesel"]);
201 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"][$field[
"id"].
"_from"]);
202 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"][$field[
"id"].
"_to"]);
203 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"][$field[
"id"].
"_days"]);
211 &&
$_REQUEST[$field[
"id"] .
"_list"] <>
''
216 $aRes[$field[
"id"] .
"_list"] =
$_REQUEST[$field[
"id"] .
"_list"];
220 if(isset(
$_REQUEST[$field[
"id"].
"_from"]))
222 if(
$_REQUEST[$field[
"id"].
"_from"] <>
'')
223 $aRes[$field[
"id"].
"_from"] =
$_REQUEST[$field[
"id"].
"_from"];
225 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"][$field[
"id"].
"_from"]);
230 $aRes[$field[
"id"].
"_to"] =
$_REQUEST[$field[
"id"].
"_to"];
232 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"][$field[
"id"].
"_to"]);
236 if(isset($field[
"filtered"]) && $field[
"filtered"])
238 if(isset($field[
"filter_value"]))
239 $aRes[$field[
"id"]] = $field[
"filter_value"];
241 $aRes[$field[
"id"]] =
true;
249 $aRes[$field[
"id"]] =
$_REQUEST[$field[
"id"]];
251 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"][$field[
"id"]]);
258 $aRes[
"GRID_FILTER_APPLIED"] =
true;
259 $aRes[
"GRID_FILTER_ID"] =
$_REQUEST[
"grid_filter_id"];
265 Application::getInstance()->getSession()[
"main.interface.grid"][
$this->grid_id][
"filter"] = $aRes;
269 Application::getInstance()->getSession()[
"main.interface.grid"][
$this->grid_id][
"filter"] =
array();
272 isset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"])
273 && is_array(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"filter"])
276 $aRes = Application::getInstance()->getSession()[
"main.interface.grid"][
$this->grid_id][
"filter"];
281 if(!empty($this->filter))
285 if($this->filter[$field[
"id"].
"_datesel"] <>
'')
287 $aRes[$field[
"id"].
"_datesel"] = $this->filter[$field[
"id"].
"_datesel"];
291 if($this->filter[$field[
"id"].
"_list"] <>
'' && $this->filter[$field[
"id"]] <>
'')
293 $aRes[$field[
"id"].
"_list"] = $this->filter[$field[
"id"].
"_list"];
295 if($this->filter[$field[
"id"].
"_from"] <>
'')
297 $aRes[$field[
"id"].
"_from"] = $this->filter[$field[
"id"].
"_from"];
299 if($this->filter[$field[
"id"].
"_to"] <>
'')
301 $aRes[$field[
"id"].
"_to"] = $this->filter[$field[
"id"].
"_to"];
303 if(is_array($this->filter[$field[
"id"]]))
306 if(!empty($this->filter[$field[
"id"]]) && reset($this->filter[$field[
"id"]]) <>
'')
308 $aRes[$field[
"id"]] = array_values($this->filter[$field[
"id"]]);
311 elseif($this->filter[$field[
"id"]] <>
'')
313 $aRes[$field[
"id"]] = $this->filter[$field[
"id"]];
318 Application::getInstance()->getSession()[
"main.interface.grid"][
$this->grid_id][
"filter"] = $aRes;
411 if(!array_key_exists($view_id, $this->all_options[
"views"]))
412 $view_id =
"default";
414 $this->all_options[
"current_view"] = $view_id;
415 $this->currentView = $view_id;
418 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"sort_by"]);
419 unset(Application::getInstance()->getSession()[
"main.interface.grid"][$this->grid_id][
"sort_order"]);
477 public static function CalcDates($field_id, $aInput, &$aRes)
479 switch($aInput[$field_id.
"_datesel"])
482 $aRes[$field_id.
"_from"] = $aRes[$field_id.
"_to"] = ConvertTimeStamp();
485 $aRes[$field_id.
"_from"] = $aRes[$field_id.
"_to"] = ConvertTimeStamp(time()-86400);
488 $aRes[$field_id.
"_from"] = $aRes[$field_id.
"_to"] = ConvertTimeStamp(time()+86400);
494 $aRes[$field_id.
"_from"] = ConvertTimeStamp(time()-($day-1)*86400);
495 $aRes[$field_id.
"_to"] = ConvertTimeStamp(time()+(7-$day)*86400);
501 $aRes[$field_id.
"_from"] = ConvertTimeStamp(time()-($day-1+7)*86400);
502 $aRes[$field_id.
"_to"] = ConvertTimeStamp(time()-($day)*86400);
505 $aRes[$field_id.
"_from"] = ConvertTimeStamp(mktime(0, 0, 0, date(
"n"), 1));
506 $aRes[$field_id.
"_to"] = ConvertTimeStamp(mktime(0, 0, 0, (
int)date(
"n") + 1, 0));
509 $aRes[$field_id.
"_from"] = ConvertTimeStamp(mktime(0, 0, 0, (
int)date(
"n") - 1, 1));
510 $aRes[$field_id.
"_to"] = ConvertTimeStamp(mktime(0, 0, 0, date(
"n"), 0));
513 $aRes[$field_id.
"_days"] = $aInput[$field_id.
"_days"];
514 $aRes[$field_id.
"_from"] = ConvertTimeStamp(time() - intval($aRes[$field_id.
"_days"])*86400);
515 $aRes[$field_id.
"_to"] =
"";
518 $aRes[$field_id.
"_from"] = $aRes[$field_id.
"_to"] = $aInput[$field_id.
"_from"];
521 $aRes[$field_id.
"_from"] = $aInput[$field_id.
"_from"];
522 $aRes[$field_id.
"_to"] =
"";
525 $aRes[$field_id.
"_from"] =
"";
526 $aRes[$field_id.
"_to"] = $aInput[$field_id.
"_to"];
529 $aRes[$field_id.
"_from"] = $aInput[$field_id.
"_from"];
530 $aRes[$field_id.
"_to"] = $aInput[$field_id.
"_to"];