问题
We have written code in cakephp
to enter contacts in Google contacts
through api
,
Contacts have added in Google through Google xml
request , but how can we get total number
of contacts added or updated in Google contacts after code successfully executed
here is code:
public function addContact($token=null,$atContacts=null){
foreach ( $atContacts as $contact ) {
$xml = <<<'EOF'
<atom:entry xmlns:atom='http://www.w3.org/2005/Atom'
xmlns:gd='http://schemas.google.com/g/2005'>
<atom:category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/contact/2008#contact'/>
<title type="text">TITLE</title>
<gd:name>
<gd:givenName>First</gd:givenName>
<gd:additionalName>ADDITIONALNAME</gd:additionalName>
<gd:familyName>Last</gd:familyName>
<gd:namePrefix>NAMEPREFIX</gd:namePrefix>
<gd:nameSuffix>NAMESUFFIX</gd:nameSuffix>
</gd:name>
<gd:structuredPostalAddress rel='http://schemas.google.com/g/2005#work' primary='true'>
<gd:city>CITY</gd:city>
<gd:street>STREET</gd:street>
<gd:region>REGION</gd:region>
<gd:postcode>POSTCODE</gd:postcode>
<gd:country>COUNTRY</gd:country>
</gd:structuredPostalAddress>
<gd:phoneNumber rel='http://schemas.google.com/g/2005#home' primary='true'>
HOMEPHONENUMBER
</gd:phoneNumber>\
<gd:phoneNumber rel='http://schemas.google.com/g/2005#mobile'>MOBILENO</gd:phoneNumber>
<gd:phoneNumber rel='http://schemas.google.com/g/2005#work'>WORKPHONENO</gd:phoneNumber>
<gd:email label="home" address="EMAILADDRESS" displayName="DISPLAYNAME" />
</atom:entry>
EOF;
$xml = str_replace ( "TITLE", $contact->Title, $xml );
$xml = str_replace ( "EMAILADDRESS", $contact->EMailAddress, $xml );
$xml = str_replace ( "DISPLAYNAME", $contact->FirstName, $xml );
$xml = str_replace ( "HOMEPHONENUMBER", $contact->AlternatePhone,
$xml );
$xml = str_replace ( "MOBILENO", $contact->MobilePhone, $xml );
$xml = str_replace ( "WORKPHONENO", $contact->Phone, $xml );
$xml = str_replace ( "CITY", $contact->City, $xml );
$xml = str_replace ( "STREET", $contact->AddressLine, $xml );
$xml = str_replace ( "POSTCODE", $contact->ZipCode, $xml );
$xml = str_replace ( "REGION", $contact->State, $xml );
$xml = str_replace ( "COUNTRY", $contact->Country, $xml );
$auth_header = array ('Content-Type: application/atom+xml; charset=utf-8;',
'Authorization: GoogleLogin auth=' . trim ( $token ),
'Content-length:' . strlen ( $xml ) );
$url = 'https://www.google.com/m8/feeds/contacts/default/full';
$curl = curl_init ();
curl_setopt ( $curl, CURLOPT_URL, $url );
curl_setopt ( $curl, CURLOPT_POST, 5 );
curl_setopt ( $curl, CURLOPT_POSTFIELDS, $xml );
curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $curl, CURLOPT_HTTPHEADER, $auth_header );
$xmlresponse = curl_exec ( $curl );
}
return $xmlresponse;
}
回答1:
In your code it does not appear that you do any validation to check that the contact was added successfully and you don't catch any cURL errors either, so with your code as it currently stands just do ..
$number_of_contacts = count($atContact);
If taken a guess to the structure of your $atContact array.
That will give you number of contacts you are trying to add to Google. If you add some validation at some point and want to make that more accurate, then create a new variable...
public function addContact($token=null,$atContacts=null){
$number_of_contacts = 0;
foreach ( $atContacts as $contact ) {
$xml = <<<'EOF'
...
if(no_errors){
$number_of_contacts++;
}
来源:https://stackoverflow.com/questions/20760605/return-number-of-contacts-updated-in-google-contacts-through-api