• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/import/gmailcsvfileimport.php
  • Класс: Bitrix\Crm\Import\GMailCsvFileImport
  • Вызов: GMailCsvFileImport::prepareContact
public function prepareContact(&$data)
{
	$map = $this->headerMap;
	if($map === null)
	{
		throw new Main\SystemException("Invalid operation. HeaderMap is not assigned.");
	}

	$result = array();
	if(isset($map['Given Name']))
	{
		$k = $map['Given Name'];
		$result['NAME'] = isset($data[$k]) ? $data[$k] : '';
	}

	if(isset($map['Additional Name']))
	{
		$k = $map['Additional Name'];
		$result['SECOND_NAME'] = isset($data[$k]) ? $data[$k] : '';
	}

	if(isset($map['Family Name']))
	{
		$k = $map['Family Name'];
		$result['LAST_NAME'] = isset($data[$k]) ? $data[$k] : '';
	}

	if(isset($map['Notes']))
	{
		$k = $map['Notes'];
		$result['COMMENTS'] = isset($data[$k]) ? $data[$k] : '';
	}

	$emailInfos = $this->getMultipleField('E-mail', $data);
	foreach($emailInfos as &$emailInfo)
	{
		$valueType = mb_strtoupper($emailInfo['VALUE_TYPE']);
		if($valueType !== 'WORK' && $valueType !== 'HOME')
		{
			$valueType = 'OTHER';
		}
		$this->addMultifieldValue('EMAIL', $valueType, $emailInfo['VALUE'], $result);
	}
	unset($emailInfo);

	$phoneInfos = $this->getMultipleField('Phone', $data);
	foreach($phoneInfos as &$phoneInfo)
	{
		$valueType = mb_strtoupper($phoneInfo['VALUE_TYPE']);
		if($valueType !== 'WORK' && $valueType !== 'HOME' && $valueType !== 'MOBILE')
		{
			$valueType = 'OTHER';
		}
		$this->addMultifieldValue('PHONE', $valueType, $phoneInfo['VALUE'], $result);
	}
	unset($phoneInfo);

	$webInfos = $this->getMultipleField('Website', $data);
	foreach($webInfos as &$webInfo)
	{
		$valueType = mb_strtoupper($webInfo['VALUE_TYPE']);
		if($valueType === 'HOME PAGE')
		{
			$valueType = 'HOME';
		}
		elseif($valueType !== 'WORK')
		{
			$valueType = 'OTHER';
		}
		$this->addMultifieldValue('WEB', $valueType, $webInfo['VALUE'], $result);
	}
	unset($webInfo);

	$imInfos = $this->getInstantMessengers($data);
	foreach($imInfos as &$imInfo)
	{
		$valueType = mb_strtoupper($imInfo['VALUE_TYPE']);
		if($valueType !== 'SKYPE' && $valueType !== 'ICQ' && $valueType !== 'MSN' && $valueType !== 'JABBER')
		{
			$valueType = 'OTHER';
		}
		$this->addMultifieldValue('IM', $valueType, $imInfo['VALUE'], $result);
	}
	unset($imInfo);

	$addressInfos = $this->getAddresses($data);
	$firstAddress = '';
	$workAddress = '';
	$homeAddress = '';
	foreach($addressInfos as &$addressInfo)
	{
		$type = mb_strtoupper($addressInfo['VALUE_TYPE']);
		if($workAddress === '' && $type === 'WORK')
		{
			$workAddress = $addressInfo['VALUE'];
		}
		elseif($homeAddress === '' && $type === 'HOME')
		{
			$homeAddress = $addressInfo['VALUE'];
		}

		if($firstAddress === '')
		{
			$firstAddress = $addressInfo['VALUE'];
		}

		if($workAddress !== '' && $homeAddress !== '')
		{
			break;
		}
	}
	unset($addressInfo);

	if($workAddress !== '')
	{
		$result['ADDRESS'] = $workAddress;
	}
	elseif($homeAddress !== '')
	{
		$result['ADDRESS'] = $homeAddress;
	}
	elseif($firstAddress !== '')
	{
		$result['ADDRESS'] = $firstAddress;
	}

	$companyInfos = $this->getOrganizations($data);
	if(!empty($companyInfos))
	{
		$companyInfo = $companyInfos[0];
		$result['COMPANY_TITLE'] = $companyInfo['NAME'];
		$result['POST'] = $companyInfo['TITLE'];
	}
	return $result;
}