0

使用 Zend Gdata 日历类,我如何向重复事件添加异常?

$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 种变体,但每次都会收到以下错误:

致命错误:未捕获的异常“Zend_Gdata_App_HttpException”与消息“预期响应代码 200,得到 403 g:originalEvent [2009-09-23 15:00:00] 不对应于重复事件的实例。”

4

2 回答 2

1

好吧,在互联网上搜索了几个小时后,我得出的结论是,使用 zend api 可能会实现这一点,但我永远不会弄明白。我最终放弃并求助于编辑循环并将 EXDATE 规则添加到 iCalendar 数据。由于谷歌日历界面中的一个错误,除非您刷新页面(日历上方的刷新链接不起作用),否则不会显示以这种方式创建的异常,因此我浪费了更多时间。

如果有人找到一种无需借助 EXDATE 即可实现此功能的方法,请发帖,我一定会定期检查并标记正确答案。

更新:好的,我想通了。我将把这部分归咎于我是个白痴,部分归咎于谷歌可怕的命名系统。调用getId()anEventEntry实际上会返回事件的 EDIT URL。构造OriginalEvent函数只需要 URL 的实际 ID 部分,因此您必须使用子字符串来提取它。getId()正确地命名访问器真是太好了。

于 2009-09-23T02:11:30.097 回答
0

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

于 2010-10-22T19:41:20.117 回答