Sono in procinto di creare un blog per qualcuno. Vogliono inserire molti dati e integrarli in modo abbastanza preciso nella progettazione, quindi i widget standard sono un no-no. Questo è stato bene fino ad ora.Ottenere eventi di Google Calendar in PHP
Hanno un accesso pubblico a 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 inizia l'istanza dell'evento, la sua posizione e un link all'elemento gcal.
Da quello che posso vedere, ci sono tre opzioni per l'acquisizione di feed gcal: XML, ical o HTML (contenente alcuni JSON veramente whack). XML sembra la scelta logica, giusto?
Bene il feed XML è (dopo la descrizione del feed atom) in realtà solo un sacco di codice HTML. L'analisi è possibile ma è un enorme dolore nel retro perché gli eventi ricorrenti (di cui ce ne sono diversi sul calendario) mostrano solo la prima istanza di quell'evento e (apparentemente) nessuna informazione su quando è l'istanza successiva.
Quindi sono solo un po 'denso? C'è un modo per mostrare ciò che voglio semplicemente hackerando tramite l'API XML?
Oppure avrei più fortuna con iCal? Non ho mai fatto alcun iCal con PHP, quindi se lo hai, ti preghiamo di suggerire eventuali librerie che hai usato per semplificare le cose da solo.
Edit: grazie alla risposta, ho scaricato il pacchetto Zend Gdata (che, per fortuna, è separato per il resto della Zend Framework). Fare ciò che ho bisogno è 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('[email protected]');
$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.
Ho visto questo prima di chiedere ma era spaventato dal "Zend" nel nome. Ora hai detto che non ho bisogno del quadro completo a cui dare un'occhiata, gli darò un'occhiata corretta. Grazie. – Oli