protected static function processPossibleContacts($owner, array $contactsList) { $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["CONTACT_XML_ID"]])) { ContactConnectTable::deleteByLink($linkId); } foreach ($contact["profile"] as $profile) { ContactConnectTable::add(array('LINK_ID' => $linkId, 'CONTACT_PROFILE_ID' => $profile['PROFILE_ID'], 'CONTACT_PORTAL' => $profile['PORTAL'], 'CONNECT_TYPE' => $profile['TYPE'])); } } } }