Ich bin gerade dabei, einen Blog für jemanden zu erstellen. Sie möchten eine Menge Daten einlesen und sie ziemlich eng in das Design integrieren, so dass Standard-Widgets ein No-No sind. Das war bis jetzt gut.Google Kalender-Ereignisse in PHP erstellen
Sie haben einen öffentlichen Google Kalender mit verschiedenen Ereignissen darauf und ich möchte die nächsten 5 Ereignisse (ab "jetzt") erfassen und den Ereignistitel anzeigen, wann diese Instanz des Ereignisses startet, ihren Standort und a Link zum gcal-Artikel.
Von dem, was ich sehen kann, gibt es drei Möglichkeiten, um gcal Feeds zu greifen: XML, ical oder HTML (enthält einige wirklich whack JSON). XML scheint die logische Wahl zu sein, oder?
Nun der XML-Feed ist (nach der Atom-Feed-Beschreibung) eigentlich nur eine Menge von HTML. Das zu parsen ist möglich, aber es ist ein großer Schmerz im Hintergrund, weil wiederkehrende Ereignisse (von denen es mehrere im Kalender gibt) nur die erste Instanz dieses Ereignisses und (anscheinend) keine Information darüber zeigen, wann die nächste Instanz ist.
Also bin ich nur ein bisschen dicht? Gibt es eine Möglichkeit zu zeigen, was ich will, nur durch die XML-API hacken?
Oder hätte ich mehr Glück durch iCal? Ich habe noch nie einen iCal mit PHP gemacht. Wenn Sie dies getan haben, schlagen Sie bitte alle Bibliotheken vor, die Sie verwenden, um die Dinge für Sie einfacher zu machen.
Edit: dank der Antwort, die ich heruntergeladen habe das Zend Gdata Pack (die, zum Glück, getrennt vom Rest des Zend Framework ist). Zu tun, was ich brauche so einfach wie das war:
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
, dass Sie sollte von Event einer Woche im Wert (ja setStartMax exklusiv ist, so dass es 8 Tage in der Zukunft Einstellung erforderlich).
Hoffe das hilft jemand anderen in der Zukunft.
Ich sah dies vor der Frage, wurde aber von der "Zend" im Namen abgeschreckt. Jetzt hast du gesagt, ich brauche nicht den ganzen Cludging-Rahmen, ich werde es richtig ansehen. Vielen Dank. – Oli