• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/crm/reader.php
  • Класс: BitrixImOpenLinesCrmReader
  • Вызов: Reader::extractFields
private function extractFields(): array
{
	$extractedFields = [
		'FIRST_NAME' => null,
		'LAST_NAME' => null,
		'PHONE' => null,
		'EMAIL' => null
	];

	$entityToExtract = null;
	$isDefaultName = false;
	if (isset($this->result[CCrmOwnerType::Lead]))
	{
		// first lead
		$entityToExtract = array_values($this->result[CCrmOwnerType::Lead])[0];
	}
	else if (isset($this->result[CCrmOwnerType::Contact]))
	{
		// first contact
		$entityToExtract = array_values($this->result[CCrmOwnerType::Contact])[0];
		if (
			$entityToExtract
			&& isset($entityToExtract['NAME'])
			&& CAllCrmContact::isDefaultName($entityToExtract['NAME'])
		)
		{
			$isDefaultName = true;
		}
	}

	if (!$entityToExtract)
	{
		return $extractedFields;
	}

	if ($entityToExtract['NAME'] !== '' && !$isDefaultName)
	{
		$extractedFields['FIRST_NAME'] = $entityToExtract['NAME'];
	}
	if ($entityToExtract['LAST_NAME'] !== '')
	{
		$extractedFields['LAST_NAME'] = $entityToExtract['LAST_NAME'];
	}

	if (isset($entityToExtract['FM']) && !empty($entityToExtract['FM']))
	{
		$phoneFieldKey = array_search('PHONE', array_column($entityToExtract['FM'], 'TYPE_ID'), true);
		if (is_numeric($phoneFieldKey))
		{
			$extractedFields['PHONE'] = $entityToExtract['FM'][$phoneFieldKey]['VALUE'];
		}

		$emailFieldKey = array_search('EMAIL', array_column($entityToExtract['FM'], 'TYPE_ID'), true);
		if (is_numeric($emailFieldKey))
		{
			$extractedFields['EMAIL'] = $entityToExtract['FM'][$emailFieldKey]['VALUE'];
		}
	}


	return $extractedFields;
}