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