Google Calendar Gdata старое повторяющееся событие удаленное событие, которое все еще отображается с EventID, заканчивающимся на Z - PullRequest
5 голосов
/ 23 февраля 2012

Я пытался найти в Google этот вопрос, но безуспешно, возможно, из-за недостаточно точной строки поиска "Z".

Справочная информация:
Используя Google Calendar Zend gdata library, и использовали простой код для составления списка событий за определенный период времени. В этом случае с 27-02-2012 по 03-03-2012. У меня было несколько отдельных событий, с одним повторяющимся событием под названием «Роб», понедельник-понедельник.
Я использую основной код без каких-либо модных дополнений. пока:)

Проблема:
когда я использовал параметр $query->setSingleEvents(TRUE), все работало как положено и показывало правильные события.

Когда я говорю о «показе» событий, я говорю о странице PHP, которая использует Zend gdata для отображения событий календаря.
Во всех ситуациях графический пользовательский интерфейс Календаря Google показывает правильные данные (т. Е. Событие «Роб» не отображается, поскольку оно было удалено.

Но когда я установил это значение на FALSE, повторяющееся событие «Роб» должно иметь время начала, которое должно быть сгруппировано, но вместо этого несколько дополнительных случайных событий отображаются без starttime, точно так же заглавие. Даже после того, как я удалил повторяющееся событие, оно все равно отображается в данных, возвращаемых gdata.

Интересное наблюдение
EventID для события, которое было удалено, но все еще отображается на странице, заканчивается буквой «Z». Он имеет обычный идентификатор события, за которым следует: _20120302T030000Z

Мой вопрос
Это событие было удалено в графическом интерфейсе Google Calendar. Почему gdata по-прежнему показывает событие, которое было удалено, и что означает вечер, заканчивающийся меткой времени и Z.

Разрешение попытки:
1. Попытался изменить его с повторяющегося события на обычное событие (удалив повторение «для всех событий в серии»
Не повезло, в списке еще есть дополнительные.
2. полностью удалил повторяющееся событие для всех событий в серии.
Это снова показало правильные результаты в SingleEvents(TRUE), но в FALSE старое событие «Роб» все еще отображается, когда оно полностью удалено из календаря.

Код:

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 />";
  }
}

1 Ответ

2 голосов
/ 24 марта 2012

Вот что я нашел в документах :

36.5.6. Удаление событий События календаря можно удалить, вызвав метод delete () службы календаря и предоставив URL-адрес редактирования события, или вызвав собственный метод delete () существующего события.

В любом случае удаленное событие все равно будет отображаться в личной ленте событий пользователя , если указан параметр запроса updateMin.Удаленные события можно отличить от обычных событий, поскольку для их свойства eventStatus будет установлено в "http://schemas.google.com/g/2005#event.canceled".

. Похоже, вам придется проверять событиестатус, когда вы анализируете ваш канал.

Кстати, отметка времени разбивается на

год: 2012 день: 03 месяц: 02 время: T часы: минуты: секунды 03:00:00 зулу: Z

зулу соответствует GMT (среднее время по Гринвичу) или UTC (универсальный временной код)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...