• Модуль: 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;
	}
}