- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/classes/general/prop_datetime.php
- Класс: CIBlockPropertyDateTime
- Вызов: CIBlockPropertyDateTime::AddFilterFields
static function AddFilterFields($arProperty, $strHTMLControlName, &$arFilter, &$filtered)
{
$filtered = false;
$from = '';
$from_name = $strHTMLControlName['VALUE'] . '_from';
if (isset($strHTMLControlName['FILTER_ID']))
{
$filterOption = new FilterOptions($strHTMLControlName['FILTER_ID']);
$filterData = $filterOption->getFilter();
$from = !empty($filterData[$from_name]) ? $filterData[$from_name] : '';
}
elseif (isset($_REQUEST[$from_name]))
{
$from = $_REQUEST[$from_name];
}
elseif (
isset($strHTMLControlName['GRID_ID'])
&& isset($_SESSION['main.interface.grid'][$strHTMLControlName['GRID_ID']]['filter'][$from_name])
)
{
$from = $_SESSION['main.interface.grid'][$strHTMLControlName['GRID_ID']]['filter'][$from_name];
}
if ($from)
{
$filterKey = '>=PROPERTY_' . $arProperty['ID'];
if (CheckDateTime($from))
{
$from = static::ConvertToDB(
$arProperty,
['VALUE' => $from]
);
$arFilter[$filterKey] = $from['VALUE'];
}
else
{
$arFilter[$filterKey] = $from;
}
$filtered = true;
}
$to = '';
$to_name = $strHTMLControlName['VALUE'] . '_to';
if (isset($strHTMLControlName['FILTER_ID']))
{
$filterOption = new FilterOptions($strHTMLControlName['FILTER_ID']);
$filterData = $filterOption->getFilter();
$to = !empty($filterData[$to_name]) ? $filterData[$to_name] : '';
if ($to)
{
$dateFormat = Date::convertFormatToPhp(CSite::getDateFormat());
$dateParse = date_parse_from_format($dateFormat, $to);
if (!mb_strlen($dateParse['hour']) && !mb_strlen($dateParse['minute']) && !mb_strlen($dateParse['second']))
{
$timeFormat = Date::convertFormatToPhp(CSite::getTimeFormat());
$to .= ' ' . date($timeFormat, mktime(23, 59, 59, 0, 0, 0));
}
}
}
elseif (isset($_REQUEST[$to_name]))
{
$to = $_REQUEST[$to_name];
}
elseif (
isset($strHTMLControlName['GRID_ID'])
&& isset($_SESSION['main.interface.grid'][$strHTMLControlName['GRID_ID']]['filter'][$to_name])
)
{
$to = $_SESSION['main.interface.grid'][$strHTMLControlName['GRID_ID']]['filter'][$to_name];
}
if ($to)
{
$filterKey = '<=PROPERTY_'.$arProperty['ID'];
if (CheckDateTime($to))
{
$to = static::ConvertToDB(
$arProperty,
['VALUE' => $to]
);
$arFilter[$filterKey] = $to['VALUE'];
}
else
{
$arFilter[$filterKey] = $to;
}
$filtered = true;
}
}