- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/grids.php
- Класс: CGridOptions
- Вызов: CGridOptions::GetFilter
public function GetFilter($arFilter)
{
$aRes = array();
foreach($arFilter as $field)
{
//date
if(isset($_REQUEST[$field["id"]."_datesel"]))
{
if($_REQUEST[$field["id"]."_datesel"] <> '')
{
$aRes[$field["id"]."_datesel"] = $_REQUEST[$field["id"]."_datesel"];
CGridOptions::CalcDates($field["id"], $_REQUEST, $aRes);
}
else
{
unset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_datesel"]);
unset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_from"]);
unset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_to"]);
unset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_days"]);
}
continue;
}
//quick
if (
isset($_REQUEST[$field["id"] . "_list"])
&& $_REQUEST[$field["id"] . "_list"] <> ''
&& isset($_REQUEST[$field["id"]])
&& $_REQUEST[$field["id"]] <> ''
)
{
$aRes[$field["id"] . "_list"] = $_REQUEST[$field["id"] . "_list"];
}
//number interval
if(isset($_REQUEST[$field["id"]."_from"]))
{
if($_REQUEST[$field["id"]."_from"] <> '')
$aRes[$field["id"]."_from"] = $_REQUEST[$field["id"]."_from"];
else
unset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_from"]);
}
if(isset($_REQUEST[$field["id"]."_to"]))
{
if($_REQUEST[$field["id"]."_to"] <> '')
$aRes[$field["id"]."_to"] = $_REQUEST[$field["id"]."_to"];
else
unset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_to"]);
}
//filtered outside, we don't control the filter field value
if(isset($field["filtered"]) && $field["filtered"] == true)
{
if(isset($field["filter_value"]))
$aRes[$field["id"]] = $field["filter_value"];
else
$aRes[$field["id"]] = true;
continue;
}
//list or string
if(isset($_REQUEST[$field["id"]]))
{
if(is_array($_REQUEST[$field["id"]]) && !empty($_REQUEST[$field["id"]]) && reset($_REQUEST[$field["id"]]) <> '' || !is_array($_REQUEST[$field["id"]]) && $_REQUEST[$field["id"]] <> '')
$aRes[$field["id"]] = $_REQUEST[$field["id"]];
else
unset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"][$field["id"]]);
}
}
//Check for filter ID -->
if(isset($_REQUEST["apply_filter"]) && $_REQUEST["apply_filter"] === 'Y' && isset($_REQUEST["grid_filter_id"]))
{
$aRes["GRID_FILTER_APPLIED"] = true;
$aRes["GRID_FILTER_ID"] = $_REQUEST["grid_filter_id"];
}
//<-- Check for filter ID
if(!empty($aRes))
{
Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"] = $aRes;
}
elseif(isset($_REQUEST["clear_filter"]) && $_REQUEST["clear_filter"] <> '')
{
Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"] = array();
}
elseif(
isset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"])
&& is_array(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"])
)
{
$aRes = Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"];
}
else
{
$this->InitFilter();
if(!empty($this->filter))
{
foreach($arFilter as $field)
{
if($this->filter[$field["id"]."_datesel"] <> '')
{
$aRes[$field["id"]."_datesel"] = $this->filter[$field["id"]."_datesel"];
CGridOptions::CalcDates($field["id"], $this->filter, $aRes);
continue;
}
if($this->filter[$field["id"]."_list"] <> '' && $this->filter[$field["id"]] <> '')
{
$aRes[$field["id"]."_list"] = $this->filter[$field["id"]."_list"];
}
if($this->filter[$field["id"]."_from"] <> '')
{
$aRes[$field["id"]."_from"] = $this->filter[$field["id"]."_from"];
}
if($this->filter[$field["id"]."_to"] <> '')
{
$aRes[$field["id"]."_to"] = $this->filter[$field["id"]."_to"];
}
if(is_array($this->filter[$field["id"]]))
{
//multiselect values
if(!empty($this->filter[$field["id"]]) && reset($this->filter[$field["id"]]) <> '')
{
$aRes[$field["id"]] = array_values($this->filter[$field["id"]]);
}
}
elseif($this->filter[$field["id"]] <> '')
{
$aRes[$field["id"]] = $this->filter[$field["id"]];
}
}
if(!empty($aRes))
{
Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["filter"] = $aRes;
}
}
}
return $aRes;
}