• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/iblockelementproperty.php
  • Класс: Bitrix\Crm\Integration\IBlockElementProperty
  • Вызов: IBlockElementProperty::addFilterFields
static function addFilterFields($property, $controlSettings, &$filter, &$filtered)
{
	$filtered = false;

	if(isset($_REQUEST[$controlSettings['VALUE']]))
	{
		$listEntityValue = $_REQUEST[$controlSettings['VALUE']];
	}
	elseif(isset($controlSettings["FILTER_ID"]))
	{
		$filterOption = new \Bitrix\Main\UI\Filter\Options($controlSettings["FILTER_ID"]);
		$filterData = $filterOption->getFilter();
		if(!empty($filterData[$controlSettings['VALUE']]))
			$listEntityValue = $filterData[$controlSettings['VALUE']];
	}

	if(!empty($listEntityValue))
	{
		$listEntityValue = (array) $listEntityValue;

		$values = [];
		foreach ($listEntityValue as $listEntityVal)
		{
			if (!is_string($listEntityVal))
			{
				continue;
			}

			try
			{
				$value = Json::decode($listEntityVal);
			}
			catch (\Bitrix\Main\ArgumentException $e)
			{
				$value = null;
			}

			if (is_array($value))
			{
				$values = array_merge_recursive($values, $value);
			}
		}
		if(empty($values))
		{
			return;
		}

		$usePrefix = self::isUsePrefix($property);

		$filter[$controlSettings['VALUE']] = array();
		foreach($values as $entityType => $listEntityId)
		{
			if($usePrefix)
			{
				$entityPrefix = \CCrmOwnerTypeAbbr::ResolveByTypeName($entityType);
				foreach($listEntityId as $entityId)
				{
					$filter[$controlSettings['VALUE']][] = $entityPrefix.'_'.$entityId;
				}
			}
			else
			{
				foreach($listEntityId as $entityId)
				{
					$filter[$controlSettings['VALUE']][] = $entityId;
				}
			}
		}
		$filtered = true;
	}
}