protected static function processContacts($owner, array $contactsList) { $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"]); $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(); } } 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']); $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"]); }