【发布时间】:2012-03-13 18:57:42
【问题描述】:
我尝试用谷歌搜索这个问题,但没有运气,可能是由于搜索字符串“Z”不够具体。
背景:
使用 Google Calendar Zend gdata 库,并一直使用简单的代码列出特定时间段的事件。在这种情况下,从 27-02-2012 到 03-03-2012。
我列出了许多单一事件,其中有一个重复事件,标题为“Rob”,每周一至周五。
我使用的是基本代码,没有任何花哨的添加。然而:)
问题:
当我使用$query->setSingleEvents(TRUE) 参数时,一切都按预期工作,并显示了正确的事件。
当我谈到“显示”事件时,我说的是使用 Zend gdata 显示日历事件的 PHP 页面。
在所有情况下,Google 日历 GUI 都显示正确的数据(即,“Rob”事件未显示,因为它已被删除。
但是当我将其设置为FALSE 时,重复事件“Rob”应该具有要分组的开始时间,但是,一些额外的随机事件显示为没有starttime,只是一样标题。即使我删除了重复事件,它仍然会显示在 gdata 返回的数据中。
有趣的观察
已删除但仍显示在页面上的事件的 EventID 以“Z”结尾。
它具有通常的 eventID,后跟:_20120302T030000Z
我的问题
此活动已在 Google 日历 GUI 中删除。为什么gdata还显示一个被删除的事件,以时间戳和Z结尾的eventid是什么意思。
解决尝试:
1. 尝试将其从重复事件更改为正常事件(删除“所有系列事件的重复事件”
没有运气,仍然列出了额外的。
2. 完全删除所有系列事件的重复事件。
这在SingleEvents(TRUE) 中再次显示了正确的结果,但在FALSE 中,旧的“Rob”事件仍然显示,当它已从日历中完全删除时。
代码:
function outputCalendarByDateRange($client, $startDate='2012-02-27',
$endDate='2012-03-03')
{
$gdataCal = new Zend_Gdata_Calendar($client);
$query = $gdataCal->newEventQuery();
$query->setUser('default');
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setStartMin($startDate);
$query->setStartMax($endDate);
$query->setSingleEvents(FALSE);
$eventFeed = $gdataCal->getCalendarEventFeed($query);
foreach ($eventFeed as $event) {
echo "Title: " . $event->title->text . "<br />";
echo "Event ID: " . $event->id->text . "<br />";
foreach ($event->when as $when) {
echo "Start: " . $when->startTime . "<br />";
}
echo "<br />";
}
}
【问题讨论】:
-
您是否尝试过检查事件状态,就像这里一样?:stackoverflow.com/questions/2584978/…
-
听起来好像正在缓存某些东西......
标签: php zend-framework gdata recurring-events event-id