- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/ads/adsaudience.php
- Класс: Bitrix\Crm\Ads\AdsAudience
- Вызов: AdsAudience::getAddresses
static function getAddresses($entityTypeId, $entityId)
{
$result = array();
$multiFieldTypeToAudienceContactTypeMap = array(
\CCrmFieldMulti::EMAIL => Audience::ENUM_CONTACT_TYPE_EMAIL,
\CCrmFieldMulti::PHONE => Audience::ENUM_CONTACT_TYPE_PHONE,
);
$entityFilterList = array();
if (in_array($entityTypeId, array(\CCrmOwnerType::Deal, \CCrmOwnerType::Quote, \CCrmOwnerType::Invoice)))
{
$companyFieldCode = 'COMPANY_ID';
$contactFieldCode = 'CONTACT_ID';
$subFilter = array('=ID' => $entityId, 'CHECK_PERMISSIONS' => 'N');
switch ($entityTypeId)
{
case \CCrmOwnerType::Deal:
$entityDb = \CCrmDeal::getListEx(array(), $subFilter);
break;
case \CCrmOwnerType::Quote:
$entityDb = \CCrmQuote::getList(array(), $subFilter);
break;
case \CCrmOwnerType::Invoice:
$companyFieldCode = 'UF_COMPANY_ID';
$contactFieldCode = 'UF_CONTACT_ID';
$entityDb = \CCrmInvoice::getList(array(), $subFilter);
break;
default:
return $result;
}
$entityData = $entityDb->fetch();
if (isset($entityData[$contactFieldCode]) && $entityData[$contactFieldCode])
{
$entityFilterList[\CCrmOwnerType::Contact] = $entityData[$contactFieldCode];
}
if (isset($entityData[$companyFieldCode]) && $entityData[$companyFieldCode])
{
$entityFilterList[\CCrmOwnerType::Company] = $entityData[$companyFieldCode];
}
}
else
{
$entityFilterList[$entityTypeId] = $entityId;
}
foreach ($entityFilterList as $entityTypeId => $entityId)
{
$entityTypeName = \CCrmOwnerType::ResolveName($entityTypeId);
if (!$entityTypeName)
{
continue;
}
if (!$entityId)
{
continue;
}
$multiFieldDb = \CCrmFieldMulti::GetListEx(
null,
array(
'ENTITY_ID' => $entityTypeName,
'ELEMENT_ID' => $entityId,
'TYPE_ID' => array(
\CCrmFieldMulti::EMAIL,
\CCrmFieldMulti::PHONE
)
)
);
while($multiField = $multiFieldDb->Fetch())
{
if (!isset($multiFieldTypeToAudienceContactTypeMap[$multiField['TYPE_ID']]))
{
continue;
}
$contactType = $multiFieldTypeToAudienceContactTypeMap[$multiField['TYPE_ID']];
if (!is_array($result[$contactType]))
{
$result[$contactType] = array();
}
$result[$contactType][] = $multiField['VALUE'];
}
}
return $result;
}