2009-10-08 22 views
5

Tuve una larga pregunta detallada sobre cómo obtener el feed de eventos de un calendario específico, pero pensé (creo) una solución antes de publicar. Sin embargo, incluso con la solución me pregunto qué es lo que me falta sobre este proceso. para conseguir imágenes de sucesos de un solo calendario (o para buscar que se alimentan) Yo lo siguiente:Obteniendo Feed Zend_GData para un Calendario de Google específico

  • la autenticación (obviamente)
  • obtener una lista de calendarios: getCalendarListFeed();
  • obtener la propiedad ID de uno de los 'calendario' objetos
  • Cambio: .../calendario/feeds/default/XXX% 40YYY
  • Para: .../calendario/feeds/XXX% 40YYY/privado/completo
  • Pase eso a getCalendarEventFeed() para consultar ese calendario.

¿Por qué tengo que manipular la identificación? Parece que la documentación de Zend_Gdata se extiende a los sitios de Google y Zend. No he localizado una buena referencia sobre las propiedades disponibles de getCalendarListFeed(), ¿así que tal vez debería tomar algo que no sea la ID?

Parece que tiene para ser una forma más directa - ¿Qué me falta aquí?

Respuesta

2

que estaba buscando una respuesta a esta misma pregunta y, finalmente, se le ocurrió la siguiente:

$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'); 

la parte que me confundió en un principio era que el "usuario" porti de la llamada es en realidad la ID del calendario. A continuación, puede hacer algo como:

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

(Lo anterior debería ser encerrada en un try/catch, pero yo soy demasiado perezoso para hacerlo aquí.)

+0

El calendarid es la dirección de correo electrónico de la calendario en la configuración privada. setVisibility -> ('private'); # para calendario privado (no público) –

Cuestiones relacionadas