- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/binding/leadcontact.php
- Класс: Bitrix\Crm\Binding\LeadContactTable
- Вызов: LeadContactTable::rebindAllLeads
static function rebindAllLeads($seedContactID, $targContactID)
{
$seedContactID = (int)$seedContactID;
if($seedContactID <= 0)
{
throw new Main\ArgumentException('Must be greater than zero', 'seedContactID');
}
$targContactID = (int)$targContactID;
if($targContactID <= 0)
{
throw new Main\ArgumentException('Must be greater than zero', 'targContactID');
}
if($seedContactID === $targContactID)
{
return;
}
$connection = Main\Application::getConnection();
$dbResult = $connection->query(
/** @lang text */
"SELECT LEAD_ID FROM b_crm_lead_contact WHERE CONTACT_ID = {$seedContactID}"
);
while($fields = $dbResult->fetch())
{
$leadID = (int)$fields['LEAD_ID'];
$bindings = self::getLeadBindings($leadID);
$seedIndex = $targIndex = -1;
for($i = 0, $l = count($bindings); $i < $l; $i++)
{
$binding = $bindings[$i];
$contactID = (int)$binding['CONTACT_ID'];
if($contactID === $seedContactID)
{
$seedIndex = $i;
}
elseif($contactID === $targContactID)
{
$targIndex = $i;
}
if($seedIndex >= 0 && $targIndex >= 0)
{
break;
}
}
$seedBinding = $seedIndex >= 0 ? $bindings[$seedIndex] : null;
$targBinding = $targIndex >= 0 ? $bindings[$targIndex] : null;
if(!is_array($seedBinding))
{
continue;
}
self::unbindContactIDs($leadID, array($seedContactID));
$isPrimary = isset($seedBinding['IS_PRIMARY']) && $seedBinding['IS_PRIMARY'] === 'Y';
if(!is_array($targBinding))
{
$seedBinding['CONTACT_ID'] = $targContactID;
self::bindContacts($leadID, array($seedBinding));
}
elseif($isPrimary)
{
$targBinding['IS_PRIMARY'] = 'Y';
self::bindContacts($leadID, array($targBinding));
}
}
}