- Модуль: socialservices
- Путь к файлу: ~/bitrix/modules/socialservices/lib/contact.php
- Класс: BitrixSocialservicesContactTable
- Вызов: ContactTable::processPossibleContacts
static function processPossibleContacts($owner, array $contactsList)
{
if(!MainLoader::includeModule('rest'))
{
return;
}
$existedContacts = array();
$dbRes = UserLinkTable::getList(array(
'filter' => array(
'=SOCSERV_USER_ID' => $owner["ID"],
'=SOCSERV_USER.EXTERNAL_AUTH_ID' => CSocServBitrix24Net::ID,
),
'select' => array('ID', 'LINK_UID')
));
while($existedContact = $dbRes->fetch())
{
$existedContacts[$existedContact['LINK_UID']] = $existedContact['ID'];
}
foreach($contactsList as $contact)
{
$contactFields = array(
"USER_ID" => $owner["USER_ID"],
"SOCSERV_USER_ID" => $owner["ID"],
"LINK_UID" => $contact["CONTACT_ID"],
"LINK_NAME" => $contact["NAME"],
"LINK_LAST_NAME" => $contact["LAST_NAME"],
"LINK_PICTURE" => $contact["PHOTO"],
);
$linkId = false;
if(isset($existedContacts[$contactFields["LINK_UID"]]))
{
$linkId = $existedContacts[$contactFields["LINK_UID"]];
UserLinkTable::update($linkId, $contactFields);
}
else
{
$result = UserLinkTable::add($contactFields);
if($result->isSuccess())
{
$linkId = $result->getId();
}
}
if(
$linkId !== false
&& isset($contact["profile"])
&& count($contact["profile"]) > 0
)
{
if(isset($existedContacts[$contactFields["LINK_UID"]]))
{
ContactConnectTable::deleteByLink($linkId);
}
foreach($contact["profile"] as $profile)
{
$result = ContactConnectTable::add(array(
'LINK_ID' => $linkId,
'CONTACT_PROFILE_ID' => $profile['PROFILE_ID'],
'CONTACT_PORTAL' => $profile['PORTAL'],
'CONNECT_TYPE' => $profile['TYPE'],
'LAST_AUTHORIZE' => DateTime::createFromUserTime(CRestUtil::unConvertDateTime($profile['LAST_AUTHORIZE'])),
));
}
}
}
}