Domanda

Sono nel processo di creazione di un blog per qualcuno. Vogliono tirare in un sacco di dati e integrare abbastanza saldamente nel design, i widget in modo standard sono un no-no. Questo è stato bene fino ad ora.

Hanno un accesso pubblico Google Calendar con vari eventi su di esso e voglio afferrare i prossimi 5 eventi (da "ora" in poi) e visualizzare il titolo dell'evento, quando tale istanza della manifestazione inizia, la sua posizione e un collegamento alla voce Gcal.

Da quello che posso vedere, ci sono tre opzioni per afferrare gcal feed: XML, iCal o HTML (contenente alcuni davvero whack JSON). XML sembra la scelta più logica, giusta?

Bene il feed XML è (dopo la descrizione feed Atom) in realtà solo un sacco di Faffy HTML. L'analisi di questo è possibile, ma è un dolore enorme nel sedere perché gli eventi (di cui ci sono diversi sul calendario) ricorrenti mostrano solo la prima istanza di tale evento e (apparentemente) senza informazioni su quando l'istanza successiva è.

Quindi, io sono solo di essere un po 'denso? C'è un modo per mostrare quello che voglio solo l'hacking attraverso l'API XML?

O dovrei avere più fortuna con iCal? Non ho mai fatto alcuna iCal con PHP, quindi se avete, Per qualsiasi proposta di librerie che hai usato per rendere le cose più semplici per te stesso.

Modifica , grazie alla risposta, ho scaricato il pacchetto Zend Gdata (che, per fortuna, è separato per il resto della Zend Framework). Fare ciò che mi serve è stato facile come questo:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_HttpClient');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
$service = new Zend_Gdata_Calendar();
$query = $service->newEventQuery();

$query->setUser('your_user@googlemail.com');

$query->setVisibility('public');
$query->setProjection('full');
$query->setStartMin(date('Y-n-j'));
$query->setStartMax(date('Y-n-j', time() + (60*60 *24*8)));
$query->setOrderby('starttime');

try { $eventFeed = $service->getCalendarEventFeed($query); }
catch (Zend_Gdata_App_Exception $e) { return; }

foreach ($eventFeed as $event) 
    echo $event; // do something real here

Questo dovrebbe farti valore di una settimana di eventi (sì setStartMax è esclusivo in modo impostazione 8 giorni in futuro è richiesto).

Spero che questo aiuti qualcun altro in futuro.

È stato utile?

Soluzione

Un'altra opzione è quella di utilizzare la libreria calendario Zend Google, si tratta di una parte separata del Zend Framework in modo non è necessario l'intero Zend Framework

http://framework.zend.com/manual/en /zend.gdata.calendar.html

Non è così difficile una volta che hai uno sguardo agli esempi.

Altri suggerimenti

Nel caso in cui aiuta chiunque altro, ho capito come ottenere i calendari diversi da quello di default. Se vai in Google Calendar e cercare impostazioni del calendario, in fondo c'è un ID di calendario che è formattato come un indirizzo di posta elettronica molto lungo. (Esempio: adg5jcq8gk7lsp6rrbmrm8c@group.calendar.google.com) Usare che con $ query- > setuser () per utilizzare quel calendario specifico.

Come un testa a testa a chiunque utilizzi il codice, echo $event; non mostravano niente per me, così ho pensato la domanda stava fallendo.

Ecco un frammento che dovrebbe stampare qualcosa:

foreach ($eventFeed as $event) {
  echo $event->title->text . '<br />';
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top