Gruppi su GMail con Zend GData

Da qualche tempo ho realizzato un'integrazione tra l'anagrafica di Kroneos MP ed i contatti di GMail.
Ho utilizzato Zend Gdata visto che avevo già ottenuto buoni risultati nell'integrazione del calendario con GCalendar.
Per la gestione dei contatti però non ho trovato documentazione ed esempi come nel caso degli eventi.
La fonte migliore che ho trovato in rete è questa.
Nell'articolo non viene trattata la gestione dei gruppi, per cui condivido quello che ho concluso spulciando direttamente le API del protocollo di Google.
Supponendo che abbiate a disposizione un oggetto DOMDocument come descritto nell'articolo:


$doc = new DOMDocument();
$doc->formatOutput = true;
$entry = $doc->createElement('atom:entry');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:atom', 'http://www.w3.org/2005/Atom');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:gd', 'http://schemas.google.com/g/2005');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:gContact', 'http://schemas.google.com/contact/2008');
$doc->appendChild($entry);

per associare il contatto ad un gruppo basta aggiungere questo codice:


$gMembership = $doc->createElement('gContact:groupMembershipInfo');
$gMembership->setAttribute('href', $groupUrl );
$gMembership->setAttribute('deleted', 'false' );
$entry->appendChild($gMembership);

La variabile $groupUrl contiene il riferimento al gruppo che ci interessa.
Se il gruppo non esiste occorre crearlo con una procedura del genere:

$doc = new DOMDocument();
$doc->formatOutput = true;
$entry = $doc->createElement('atom:entry');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' , 'xmlns:atom', 'http://www.w3.org/2005/Atom');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' , 'xmlns:gd', 'http://schemas.google.com/g/2005');
$doc->appendChild($entry);
// add category
$cat = $doc->createElement('atom:category');
$cat->setAttribute('scheme', 'http://schemas.google.com/g/2005#kind' );
$cat->setAttribute('term', 'http://schemas.google.com/contact/2008#group' );
$entry->appendChild($cat);
// add group name element
$name = $doc->createElement('atom:title', );
$name->setAttribute('type', 'text' );
$entry->appendChild($name);
//
$extProp = $doc->createElement('gd:extendedProperty');
$extProp->setAttribute('name', );
$entry->appendChild($extProp);
$info = $doc->createElement('info', );
$extProp->appendChild($info);
//
$entryResult = $gdata->insertEntry($doc->saveXML(), 'http://www.google.com/m8/feeds/groups/default/full' );

Il riferimento al gruppo si ottiene con

$groupUrl = $entryResult->id;




Commenti

Post popolari in questo blog

Jolie on Azure Functions

Gateway Consorzio Triveneto per WP e-commerce

Jolie micro services on Kubernetes