Добавьте контакт в группу с помощью Zend_GData и Google Contacts API.

У меня есть приложение, использующее zend_gdata, и я создаю контакт с помощью приведенного ниже кода.

$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 name element
$name = $doc->createElement('gd:name');
$entry->appendChild($name);

$fullName = $doc->createElement('gd:fullName', htmlentities($data->firstname . ' ' . $data->lastname));
$name->appendChild($fullName);

// insert entry
$entryResult = $gdata->insertEntry($doc->saveXML(), 'http://www.google.com/m8/feeds/contacts/default/full');

Есть ли возможность, функция добавления группы в только что созданный контакт?


person Ced    schedule 26.05.2011    source источник
comment
что значит добавить группу в контакт? Добавить контакт в группу?   -  person Lenin Raj Rajasekaran    schedule 26.05.2011


Ответы (2)


У меня большой класс и я не могу все это вставить, нужно как-то это собрать

шаг 1)

получить все группы ( http://raiyaraj.wordpress.com/2008/09/17/gmail-gdata-contacts-group-via-proxy/) и найдите идентификатор своей группы или создайте ее (вы можете сделать это с помощью Zend Framework), если это не так. не существует

шаг 2)

сгенерировать xml

// create new entry
        $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);

...add various stuff....
    $name = $doc->createElement('gd:name');
            $entry->appendChild($name);
            $fullName = $doc->createElement('gd:fullName', $this->name);
            $name->appendChild($fullName);
.....

        $group = $doc->createElement('gContact:groupMembershipInfo');
        $group->setAttribute('deleted' ,'false');
        $group->setAttribute('href' ,'http://www.google.com/m8/feeds/groups/' .urlencode($this->email) . '/base/'.$this->group_id);
        $entry->appendChild($group);

шаг 3)

подключиться к gmail и выполнить запрос

$service = $this->service;
// perform login and set protocol version to 3.0
$client = $service;
$gdata = new Zend_Gdata($client);
$gdata->setMajorProtocolVersion(3);
$entryResult = $gdata->insertEntry($this->getXML(), 'https://www.google.com/m8/feeds/contacts/default/full');

return $entryResult->getLink('edit');

обратите внимание, что вы возвращаете ссылку на редактирование, так что, если вы ее сохраните, вы можете обновить контакт или или проверить наличие изменений

person max4ever    schedule 11.10.2011

Да, это возможно. См. следующую документацию для того же самого.

http://code.google.com/apis/contacts/docs/3.0/reference.html#groupMembershipInfo

person Lenin Raj Rajasekaran    schedule 26.05.2011
comment
@max4ever, можете ли вы опубликовать свой исходный код (или образец кода), чтобы он был полезен другим? - person Lenin Raj Rajasekaran; 11.10.2011