- Модуль: socialservices
- Путь к файлу: ~/bitrix/modules/socialservices/lib/contact.php
- Класс: BitrixSocialservicesContactTable
- Вызов: ContactTable::processContacts
static function processContacts($owner, array $contactsList)
{
if(!MainLoader::includeModule('rest'))
{
return;
}
$existedContacts = array();
$dbRes = ContactTable::getList(array(
'filter' => array(
'=USER_ID' => $owner["USER_ID"],
),
'select' => array('ID', 'CONTACT_XML_ID')
));
while($existedContact = $dbRes->fetch())
{
$existedContacts[$existedContact['CONTACT_XML_ID']] = $existedContact['ID'];
}
foreach($contactsList as $contact)
{
$contactFields = array(
"USER_ID" => $owner["USER_ID"],
"CONTACT_XML_ID" => $contact["CONTACT_ID"],
"CONTACT_NAME" => $contact["NAME"],
"CONTACT_LAST_NAME" => $contact["LAST_NAME"],
"CONTACT_PHOTO" => $contact["PHOTO"],
"NOTIFY" => $contact["NOTIFY"],
"LAST_AUTHORIZE" => DateTime::createFromUserTime(CRestUtil::unConvertDateTime($contact['LAST_AUTHORIZE'])),
);
$contactId = false;
if(isset($existedContacts[$contactFields["CONTACT_XML_ID"]]))
{
$contactId = $existedContacts[$contactFields["CONTACT_XML_ID"]];
$result = static::update($contactId, $contactFields);
if(!$result->isSuccess())
{
AddMessage2Log($result->getErrorMessages());
}
}
else
{
$result = static::add($contactFields);
if($result->isSuccess())
{
$contactId = $result->getId();
}
else
{
AddMessage2Log($result->getErrorMessages());
}
}
if(
$contactId > 0
&& isset($contact["profile"])
&& count($contact["profile"]) > 0
)
{
if(isset($existedContacts[$contactFields["CONTACT_XML_ID"]]))
{
ContactConnectTable::deleteByContact($contactId);
}
foreach($contact["profile"] as $profile)
{
$connectFields = array(
'CONTACT_ID' => $contactId,
'CONTACT_PROFILE_ID' => $profile['PROFILE_ID'],
'CONTACT_PORTAL' => $profile['PORTAL'],
'CONNECT_TYPE' => $profile['TYPE'],
'LAST_AUTHORIZE' => DateTime::createFromUserTime(CRestUtil::unConvertDateTime($profile['LAST_AUTHORIZE'])),
);
$r = ContactConnectTable::add($connectFields);
if($r->isSuccess())
{
if(!isset($contactFields["CONNECT"]))
{
$contactFields["CONNECT"] = array($connectFields);
}
else
{
$contactFields["CONNECT"][] = $connectFields;
}
}
}
if(!isset($existedContacts[$contactFields["CONTACT_XML_ID"]]))
{
static::notifyJoin($contactId, $contactFields);
}
}
}
static::notifyJoinFinish($owner["USER_ID"]);
}