使用Zend Gdata Calendar类,如何为周期性事件添加例外?
$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]与定期事件的实例不对应。'
答案 0 :(得分:1)
嗯,经过几个小时的互联网搜索,我得出的结论是,这可能与zend api有关,但我永远无法理解。我终于放弃并使用编辑重复并将EXDATE规则添加到iCalendar数据中。由于谷歌日历界面中的错误,除非您刷新页面(日历上方的刷新链接不起作用),否则以这种方式创建的异常不会显示,因此我浪费了更多时间。
如果有人在没有求助于EXDATE的情况下找到了解决方法,请发布,我一定会定期查看并标记正确答案。
更新:好的我明白了。我将部分归咎于我是一个白痴,部分归咎于谷歌糟糕的命名系统。在getId()
上调用EventEntry
实际上会返回该事件的编辑网址。 OriginalEvent
构造函数只需要URL的实际ID部分,因此您必须使用子字符串来提取它。他们如何正确命名getId()
访问者。
答案 1 :(得分:0)
您不需要解析getId,只需使用calendarEventEntry.getIcalUID()。