Pergunta

Eu tinha uma pergunta longa detalhada sobre como obter um feed de eventos de calendário específico, mas imaginei (acho) uma solução antes de postar. No entanto, mesmo com a solução Fiquei me perguntando o que estou perdendo sobre esse processo. Para obter um único feed de eventos de um único calendário (ou para pesquisar esse feed), faço o seguinte:

  • Autenticar (obviamente)
  • Obtenha uma lista de calendários: getCalendarlistfeed ();
  • Obtenha a propriedade de identificação de um dos objetos 'calendário'
  • Mudança: .../calendário/feeds/default/xxx%40yyy
  • Para: .../calendário/feeds/xxx%40yyy/privado/completo
  • Passe isso para getcalendareventfeed () para consultar esse calendário.

Por que eu tenho que manipular o ID? Parece que a documentação para Zend_GData está espalhada pelos sites do Google e Zend. Não localizei uma boa referência sobre as propriedades disponíveis do getCalendarlistFeed (), então talvez eu deva pegar algo diferente do ID?

Parece que lá tem Para ser mais direto - o que estou perdendo aqui?

Foi útil?

Solução

Você não precisa manipular o ID.

Se você olhar para o Guia de protocolo, há um <link rel="alternate" .../> elemento que contém o URL que você deseja.

No cliente PHP, você pode recuperar este link ligando:

// $entry is an instance of Zend_Gdata_Calendar_ListEntry
$link = $entry->getAlternateLink()->getHref();

Além disso, a documentação que você está procurando está aqui:http://framework.zend.com/apidoc/1.9/zend_gdata/calendar/zend_gdata_calendar_listentry.html

Outras dicas

Eu estava procurando uma resposta para a mesma pergunta e, eventualmente, criei o seguinte:

$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$Client = Zend_Gdata_ClientLogin::getHttpClient('googleaccount','googlepass',$service);
$Service = new Zend_Gdata_Calendar($Client);

$Query = $Service->newEventQuery();
$Query->setUser('calendarid'); # As you know, you can obtain this with getCalendarListFeed()
$Query->setVisibility('public');
$Query->setProjection('full');
$Query->setOrderby('starttime');
$Query->setFutureevents('true');

A parte que me jogou no começo foi que a parte do "usuário" da chamada é na verdade o ID do calendário. Então você pode fazer algo como:

$events = $Service->getCalendarEventFeed($Query);
foreach ($events as $Event)
{
   // work with Event object here...
}

(O exposto acima deve realmente ser fechado em uma tentativa/captura, mas estou com preguiça de fazer isso aqui.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top