Ejemplo n.º 1
0
 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']));
             }
         }
     }
 }