Domanda

Ho avuto una lunga domanda dettagliate su come per ottenere feed l'evento di un calendario specifico, ma figurati (credo) una soluzione prima che ho postato. Tuttavia, anche con la soluzione di ho lasciato chiedendo cosa mi manca su questo processo per ottenere feed caso di un singolo calendario (o per la ricerca che feed) faccio la seguente:.

  • autenticazione (ovviamente)
  • ottenere una lista dei calendari: getCalendarListFeed ();
  • Prendi la proprietà ID da uno degli oggetti 'calendario'
  • Modifica: ... / calendar / feed / default / XXX% 40YYY
  • A: ... / calendar / feed / XXX% 40YYY / private / pieno
  • passare che a getCalendarEventFeed () per interrogare per quel calendario.

Perché devo per manipolare l'ID? Sembra che la documentazione per Zend_Gdata si sviluppa su siti di Zend sia Google e. Non ho trova un buon riferimento sulle proprietà disponibili da getCalendarListFeed (), quindi forse dovrei prendere qualcosa di diverso l'ID?

Sembra che ci ha per essere il modo più semplice -? Quello che mi manca qui

È stato utile?

Soluzione

Non è necessario manipolare l'ID.

Se si guarda alla guida protocollo , c'è un elemento che <link rel="alternate" .../> contiene l'URL che si desidera.

Nel client PHP, è possibile recuperare questo link chiamando:

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

Inoltre, la documentazione che stai cercando è qui: http://framework.zend.com/apidoc/1.9/Zend_Gdata/ Calendario / Zend_Gdata_Calendar_ListEntry.html

Altri suggerimenti

Ero alla ricerca di una risposta a questa stessa domanda e, infine, si avvicinò con il seguente:

$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 che mi ha buttato fuori in un primo momento era che la parte "utente" della chiamata è in realtà l'ID del calendario. Poi si può fare qualcosa di simile:

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

(È possibile che in realtà dovrebbe essere racchiuso in un try / catch, ma sono troppo pigro per farlo qui.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top