2009-09-22 135 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