2009-09-22 85 views
0

使用Zend Gdata Calendar類,如何向循環事件添加例外?在PHP中使用谷歌日曆api添加例外事件

$orig = $evtFeed[0]; //the original recurrence 

$ex = $gc->newEventEntry(); //gc is a Zend_Gdata_Calendar object 
$ex->originalEvent = $gc->newOriginalEvent($orig->getId(), $orig->getLink('self')->href, $gc->newWhen('2009-09-23T15:00:00.000Z')); 
$ex->eventStatus = $gc->newEventStatus("http://schemas.google.com/g/2005#event.canceled"); 

$gc->insertEvent($ex); 

我試着約20上面的代碼的變化,但每一次我得到以下錯誤:

Fatal error: Uncaught exception 'Zend_Gdata_App_HttpException' with message 'Expected response code 200, got 403 g:originalEvent [2009-09-23 15:00:00] does NOT correspond to an instance of the recurring event.'

回答

1

好,小時在互聯網上搜索了幾個小時之後,我來得出的結論是,這可能與zend API可能,但我永遠不會解決。我終於放棄了,並着手編輯重複並將EXDATE規則添加到iCalendar數據中。感謝谷歌日曆界面中的一個錯誤,除非刷新頁面(日曆上方的刷新鏈接不起作用),否則以這種方式創建的例外不會顯示出來,所以我浪費了更多時間。

如果有人發現一種方法來使這個工作,而不訴諸EXDATE請發佈,我會一定要定期回來,並標記正確的答案。

更新:好吧,我想通了。我將這部分歸咎於我是一個白癡,部分是因爲Google的可怕命名系統。在EventEntry上調用getId()會實際返回事件的編輯網址。 OriginalEvent構造函數僅期望URL的實際ID部分,因此您必須使用子字符串來提取它。他們有多好能夠正確地命名getId()訪問器。

0

您不需要解析getId,只需使用calendarEventEntry.getIcalUID()即可。

+0

我試過了,它沒有工作。然而,解析getId()工作正常。 – atraudes 2012-04-16 16:33:26