• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/ui/calendarfilter.php
  • Класс: BitrixCalendarUiCalendarFilter
  • Вызов: CalendarFilter::resolveFilterFields
static function resolveFilterFields(string $filterId): array
{
	$filterOptions = new BitrixMainUIFilterOptions($filterId);
	$fields = $filterOptions->getFilter();

	$preset = $fields['PRESET_ID'] ?? null;
	$meetingStatus = $fields['MEETING_STATUS'] ?? null;
	if ($meetingStatus === 'Q')
	{
		$preset = self::PRESET_INVITED;
	}
	if ($meetingStatus === 'N')
	{
		$preset = self::PRESET_DECLINED;
	}

	$result = [
		'search' => $filterOptions->getSearchString(),
		'presetId' => $preset,
		'fields' => []
	];
	$connection = Application::getConnection();
	$sqlHelper = $connection->getSqlHelper();

	$fieldNames = self::getAvailableFields();
	foreach ($fields as $key => $value)
	{
		if ($key === 'DATE_from')
		{
			$result['fields']['DATE_FROM'] = $value;
		}
		else if ($key === 'DATE_to')
		{
			$result['fields']['DATE_TO'] = $value;
		}
		else if ($key === 'ATTENDEES' || $key === 'CREATED_BY' || $key === 'SECTION_ID')
		{
			$valueList = [];
			foreach ($value as $code)
			{
				$valueList[] = (int)$code;
			}
			$result['fields'][$key] = $valueList;
		}
		else if ($key === 'MEETING_STATUS')
		{
			$result['fields']['MEETING_STATUS'] = $sqlHelper->forSql($value);
		}
		else if (in_array($key, $fieldNames, true))
		{
			$result['fields'][$key] = $value;
		}
	}

	return $result;
}