Belirli Google Takvim için Zend_GData Yem Başlarken

2 Cevap php

Belirli bir takvim olayı yem almak için nasıl bir uzun, detaylı soru vardı, ama ben yayınlanmıştır önce (sanırım) bir çözüm anladım. Ancak, hatta çözümü ile I'm left wondering what I'm missing about this process., tek bir takvimin olay beslemesini almak için (veya bu yem aramak için) ben aşağıdakileri yapın:

  • (Tabii ki) kimlik doğrulaması
  • Takvimler bir listesini alın: getCalendarListFeed ();
  • 'Takvim' nesnelerden birini kimliği özelliğini alın
  • Değiştir: ... / takvim / feeds / default / XXX% 40YYY
  • ... / Takvim / / XXX% 40YYY/private/full beslemeleri: To
  • Bu takvime sorgulamak için () getCalendarEventFeed bu uzat.

Why do I have to manipulate the ID? Bu Zend_Gdata için belgelere gibi görünüyor hem de Google'ın ve Zend sitelerinde yayılmıştır. I) getCalendarListFeed (mevcut özellikleri üzerinde iyi bir referans yer değil, belki ben kimliği başka bir şey kapmak gerekir?

Bu gibi görünüyor has daha kolay bir yol olarak - Burada ne eksik?

2 Cevap

Sen kimliği işlemek zorunda değilsiniz.

Eğer bakarsanız protocol guide, istediğiniz URL içeren bir <link rel="alternate" .../> unsur var.

PHP istemci, sen arayarak bu bağlantıyı alabilirsiniz:

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

Also, the documentation you're looking for is here: http://framework.zend.com/apidoc/1.9/Zend_Gdata/Calendar/Zend_Gdata_Calendar_ListEntry.html

Ben bu aynı sorunun cevabını arıyor ve sonunda aşağıdaki ile geldi:

$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');

Ilk başta beni attı bölümü çağrı "kullanıcı" kısmı aslında takvim kimliği oldu. Sonra gibi bir şey yapabilirsiniz:

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

(Yukarıdaki gerçekten bir try / catch içine alınmalıdır, ama ben burada yapmak için çok tembelim.)