Я создаю блог для кого-то. Они хотят получить много данных и очень тесно интегрировать их в дизайн, поэтому стандартные виджеты - нет-нет. Это было хорошо до сих пор.Получение событий Календаря Google в PHP
У них есть открытый Календарь Google Google с различными событиями на нем, и я хочу захватить следующие 5 событий (от «теперь» и далее) и отобразить заголовок события, когда этот экземпляр события начинается, его местоположение и ссылка на элемент gcal.
Из того, что я вижу, существует три варианта захвата gcal feeds: XML, ical или HTML (содержащий некоторые действительно удачные JSON). XML кажется логичным выбором, не так ли?
Ну, XML-канал (после описания подачи атома) на самом деле всего лишь много фальшивого HTML. Разборки это возможно, но это огромная боль взади, потому что повторяющиеся события (из которых несколько в календаре) показывают только первый экземпляр этого события и (по-видимому) никакой информации о том, когда следующий экземпляр.
Так я просто немного плотный? Есть ли способ показать, что я хочу просто взломать через XML API?
Или мне лучше повезло через iCal? Я никогда не делал iCal с PHP, поэтому, если у вас есть, пожалуйста, предложите любые библиотеки, которые вы использовали, чтобы сделать вещи проще для себя.
Edit: благодаря ответу, я скачал пакет Zend GData (который, к счастью, является отдельно от остальной части Zend Framework). Делать то, что мне нужно было так же просто, как это:
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
что вы должны получить на неделю событий (да setStartMax является эксклюзивным поэтому установка его в течение 8 дней в будущем требуется).
Надеюсь, это поможет кому-то еще в будущем.
Я видел это, прежде чем спрашивать, но был испуган «Zend» в названии. Теперь вы сказали, что мне не нужны все рамки, я дам ему правильный взгляд. Благодарю. – Oli