diff --git a/app/contacts/resources/functions/google_get_contacts.php b/app/contacts/resources/functions/google_get_contacts.php index 0e2fb6c1e8..7498ced9bc 100644 --- a/app/contacts/resources/functions/google_get_contacts.php +++ b/app/contacts/resources/functions/google_get_contacts.php @@ -24,91 +24,93 @@ Mark J Crane */ -function google_get_contacts($token, $max_results = 50) { - //global $records; - global $groups; +if (!function_exists('google_get_contacts')) { + function google_get_contacts($token, $max_results = 50) { + //global $records; + global $groups; - //$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&oauth_token='.$_SESSION['contact_auth']['token']; // all contacts as xml - //$url = 'https://www.google.com/m8/feeds/contacts/default/full/78967d550d3fdd99?alt=json&v=3.0&oauth_token='.$_SESSION['contact_auth']['token']; // single contact - $url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$token; // all contacts as json - $xml_response = curl_file_get_contents($url); - $records = json_decode($xml_response, true); + //$url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&oauth_token='.$_SESSION['contact_auth']['token']; // all contacts as xml + //$url = 'https://www.google.com/m8/feeds/contacts/default/full/78967d550d3fdd99?alt=json&v=3.0&oauth_token='.$_SESSION['contact_auth']['token']; // single contact + $url = 'https://www.google.com/m8/feeds/contacts/default/full?max-results='.$max_results.'&alt=json&v=3.0&oauth_token='.$token; // all contacts as json + $xml_response = curl_file_get_contents($url); + $records = json_decode($xml_response, true); - //check for authentication errors (logged out of google account, or app access permission revoked, etc) - if ($records['error']['code']) { - header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1)); - exit; + //check for authentication errors (logged out of google account, or app access permission revoked, etc) + if ($records['error']['code']) { + header("Location: contact_auth.php?source=google&target=".substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"],'/')+1)); + exit; + } + + //create new array of contacts + foreach($records['feed']['entry'] as $contact['number'] => $contact) { + $contact_id = substr($contact['id']['$t'], strrpos($contact['id']['$t'], "/")+1); + $contacts[$contact_id]['etag'] = $contact['gd$etag']; + $contacts[$contact_id]['updated'] = $contact['updated']['$t']; + $contacts[$contact_id]['name_prefix'] = $contact['gd$name']['gd$namePrefix']['$t']; + $contacts[$contact_id]['name_given'] = $contact['gd$name']['gd$givenName']['$t']; + $contacts[$contact_id]['name_middle'] = $contact['gd$name']['gd$additionalName']['$t']; + $contacts[$contact_id]['name_family'] = $contact['gd$name']['gd$familyName']['$t']; + $contacts[$contact_id]['name_suffix'] = $contact['gd$name']['gd$nameSuffix']['$t']; + $contacts[$contact_id]['nickname'] = $contact['gContact$nickname']['$t']; + $contacts[$contact_id]['title'] = $contact['gd$organization'][0]['gd$orgTitle']['$t']; + $contacts[$contact_id]['organization'] = $contact['gd$organization'][0]['gd$orgName']['$t']; + foreach ($contact['gd$email'] as $contact_email['number'] => $contact_email) { + if ($contact_email['label']) { + $contact_email_label = $contact_email['label']; + } + else { + $contact_email_label = substr($contact_email['rel'], strpos($contact_email['rel'], "#")+1); + $contact_email_label = ucwords(str_replace("_", " ", $contact_email_label)); + } + $contacts[$contact_id]['emails'][$contact_email['number']]['label'] = $contact_email_label; + $contacts[$contact_id]['emails'][$contact_email['number']]['address'] = $contact_email['address']; + $contacts[$contact_id]['emails'][$contact_email['number']]['primary'] = ($contact_email['primary']) ? 1 : 0; + } + foreach ($contact['gd$phoneNumber'] as $contact_phone['number'] => $contact_phone) { + if ($contact_phone['label']) { + $contact_phone_label = $contact_phone['label']; + } + else { + $contact_phone_label = substr($contact_phone['rel'], strpos($contact_phone['rel'], "#")+1); + $contact_phone_label = ucwords(str_replace("_", " ", $contact_phone_label)); + } + $contacts[$contact_id]['numbers'][$contact_phone['number']]['label'] = $contact_phone_label; + $contacts[$contact_id]['numbers'][$contact_phone['number']]['number'] = preg_replace('{\D}', '', $contact_phone['$t']); + } + foreach ($contact['gContact$website'] as $contact_website['number'] => $contact_website) { + $contact_website_label = ($contact_website['label']) ? $contact_website['label'] : ucwords(str_replace("_", " ", $contact_website['rel'])); + $contacts[$contact_id]['urls'][$contact_website['number']]['label'] = $contact_website_label; + $contacts[$contact_id]['urls'][$contact_website['number']]['url'] = $contact_website['href']; + } + foreach ($contact['gd$structuredPostalAddress'] as $contact_address['number'] => $contact_address) { + if ($contact_address['label']) { + $contact_address_label = $contact_address['label']; + } + else { + $contact_address_label = substr($contact_address['rel'], strpos($contact_address['rel'], "#")+1); + $contact_address_label = ucwords(str_replace("_", " ", $contact_address_label)); + } + $contacts[$contact_id]['addresses'][$contact_address['number']]['label'] = $contact_address_label; + $contacts[$contact_id]['addresses'][$contact_address['number']]['street'] = $contact_address['gd$street']['$t']; + $contacts[$contact_id]['addresses'][$contact_address['number']]['extended'] = $contact_address['gd$pobox']['$t']; + $contacts[$contact_id]['addresses'][$contact_address['number']]['community'] = $contact_address['gd$neighborhood']['$t']; + $contacts[$contact_id]['addresses'][$contact_address['number']]['locality'] = $contact_address['gd$city']['$t']; + $contacts[$contact_id]['addresses'][$contact_address['number']]['region'] = $contact_address['gd$region']['$t']; + $contacts[$contact_id]['addresses'][$contact_address['number']]['postal_code'] = $contact_address['gd$postcode']['$t']; + $contacts[$contact_id]['addresses'][$contact_address['number']]['country'] = $contact_address['gd$country']['$t']; + } + foreach ($contact['gContact$groupMembershipInfo'] as $contact_group['number'] => $contact_group) { + $contact_group_id = substr($contact_group['href'], strrpos($contact_group['href'], "/")+1); + $contacts[$contact_id]['groups'][$contact_group_id] = $groups[$contact_group_id]['name']; + } + $contacts[$contact_id]['notes'] = $contact['content']['$t']; + } + + //set account holder info + $_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t']; + $_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t']; + + return $contacts; } - - //create new array of contacts - foreach($records['feed']['entry'] as $contact['number'] => $contact) { - $contact_id = substr($contact['id']['$t'], strrpos($contact['id']['$t'], "/")+1); - $contacts[$contact_id]['etag'] = $contact['gd$etag']; - $contacts[$contact_id]['updated'] = $contact['updated']['$t']; - $contacts[$contact_id]['name_prefix'] = $contact['gd$name']['gd$namePrefix']['$t']; - $contacts[$contact_id]['name_given'] = $contact['gd$name']['gd$givenName']['$t']; - $contacts[$contact_id]['name_middle'] = $contact['gd$name']['gd$additionalName']['$t']; - $contacts[$contact_id]['name_family'] = $contact['gd$name']['gd$familyName']['$t']; - $contacts[$contact_id]['name_suffix'] = $contact['gd$name']['gd$nameSuffix']['$t']; - $contacts[$contact_id]['nickname'] = $contact['gContact$nickname']['$t']; - $contacts[$contact_id]['title'] = $contact['gd$organization'][0]['gd$orgTitle']['$t']; - $contacts[$contact_id]['organization'] = $contact['gd$organization'][0]['gd$orgName']['$t']; - foreach ($contact['gd$email'] as $contact_email['number'] => $contact_email) { - if ($contact_email['label']) { - $contact_email_label = $contact_email['label']; - } - else { - $contact_email_label = substr($contact_email['rel'], strpos($contact_email['rel'], "#")+1); - $contact_email_label = ucwords(str_replace("_", " ", $contact_email_label)); - } - $contacts[$contact_id]['emails'][$contact_email['number']]['label'] = $contact_email_label; - $contacts[$contact_id]['emails'][$contact_email['number']]['address'] = $contact_email['address']; - $contacts[$contact_id]['emails'][$contact_email['number']]['primary'] = ($contact_email['primary']) ? 1 : 0; - } - foreach ($contact['gd$phoneNumber'] as $contact_phone['number'] => $contact_phone) { - if ($contact_phone['label']) { - $contact_phone_label = $contact_phone['label']; - } - else { - $contact_phone_label = substr($contact_phone['rel'], strpos($contact_phone['rel'], "#")+1); - $contact_phone_label = ucwords(str_replace("_", " ", $contact_phone_label)); - } - $contacts[$contact_id]['numbers'][$contact_phone['number']]['label'] = $contact_phone_label; - $contacts[$contact_id]['numbers'][$contact_phone['number']]['number'] = preg_replace('{\D}', '', $contact_phone['$t']); - } - foreach ($contact['gContact$website'] as $contact_website['number'] => $contact_website) { - $contact_website_label = ($contact_website['label']) ? $contact_website['label'] : ucwords(str_replace("_", " ", $contact_website['rel'])); - $contacts[$contact_id]['urls'][$contact_website['number']]['label'] = $contact_website_label; - $contacts[$contact_id]['urls'][$contact_website['number']]['url'] = $contact_website['href']; - } - foreach ($contact['gd$structuredPostalAddress'] as $contact_address['number'] => $contact_address) { - if ($contact_address['label']) { - $contact_address_label = $contact_address['label']; - } - else { - $contact_address_label = substr($contact_address['rel'], strpos($contact_address['rel'], "#")+1); - $contact_address_label = ucwords(str_replace("_", " ", $contact_address_label)); - } - $contacts[$contact_id]['addresses'][$contact_address['number']]['label'] = $contact_address_label; - $contacts[$contact_id]['addresses'][$contact_address['number']]['street'] = $contact_address['gd$street']['$t']; - $contacts[$contact_id]['addresses'][$contact_address['number']]['extended'] = $contact_address['gd$pobox']['$t']; - $contacts[$contact_id]['addresses'][$contact_address['number']]['community'] = $contact_address['gd$neighborhood']['$t']; - $contacts[$contact_id]['addresses'][$contact_address['number']]['locality'] = $contact_address['gd$city']['$t']; - $contacts[$contact_id]['addresses'][$contact_address['number']]['region'] = $contact_address['gd$region']['$t']; - $contacts[$contact_id]['addresses'][$contact_address['number']]['postal_code'] = $contact_address['gd$postcode']['$t']; - $contacts[$contact_id]['addresses'][$contact_address['number']]['country'] = $contact_address['gd$country']['$t']; - } - foreach ($contact['gContact$groupMembershipInfo'] as $contact_group['number'] => $contact_group) { - $contact_group_id = substr($contact_group['href'], strrpos($contact_group['href'], "/")+1); - $contacts[$contact_id]['groups'][$contact_group_id] = $groups[$contact_group_id]['name']; - } - $contacts[$contact_id]['notes'] = $contact['content']['$t']; - } - - //set account holder info - $_SESSION['contact_auth']['name'] = $records['feed']['author'][0]['name']['$t']; - $_SESSION['contact_auth']['email'] = $records['feed']['author'][0]['email']['$t']; - - return $contacts; } -?> \ No newline at end of file +?>