Поддержка серверов

CGridOptions::GetFilter: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=169393

<?php 
//    /bitrix/modules/main/classes/general/grids.phpCGridOptions::GetFilter()
//    176:

    
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(
$_SESSION["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_datesel"]);
                    unset(
$_SESSION["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_from"]);
                    unset(
$_SESSION["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_to"]);
                    unset(
$_SESSION["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_days"]);
                }
                continue;
            }

            
//quick
            
if($_REQUEST[$field["id"]."_list"] <> '' && $_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(
$_SESSION["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(
$_SESSION["main.interface.grid"][$this->grid_id]["filter"][$field["id"]."_to"]);
            }

            
//filtered outside, we don't control the filter field value
            
if($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(
$_SESSION["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))
        {
            
$_SESSION["main.interface.grid"][$this->grid_id]["filter"] = $aRes;
        }
        elseif(
$_REQUEST["clear_filter"] <> '')
        {
            
$_SESSION["main.interface.grid"][$this->grid_id]["filter"] = array();
        }
        elseif(
is_array($_SESSION["main.interface.grid"][$this->grid_id]["filter"]))
        {
            
$aRes $_SESSION["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))
                {
                    
$_SESSION["main.interface.grid"][$this->grid_id]["filter"] = $aRes;
                }
            }
        }

        return 
$aRes;
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение