Я пытался создать страницу .ics в php, которую нужно добавить в Календарь Google через "Добавить по URL", чтобы я мог извлечь события из базы данных и представить их в календаре.
Я какое-то время искал в SO и нашел еще один пост, который очень помог с самого начала, но теперь я наткнулся на загвоздку, которая, похоже, не затрагивает людей с похожим кодом. Сообщение можно найти здесь .
Итак, моя проблема в том, что я не могу заставить Календарь Google обновить мою страницу, как если бы она кэшировала страницу в календаре. Поэтому, когда я добавляю другой VEVENT на страницу, он не обновляет календарь.
При создании файла генерируется правильный формат для файла * .ics. Формат показан ниже.
Если я перехожу прямо на страницу, мне выдается запрос на загрузку файла, который работает для импорта в GC, и если я добавляю тот же код на другую страницу, например, изменяя имя страницы с cal. php до cal2.php , заставит GC прочитать все события, в то время как я просто добавлю тот же URL-адрес, что и раньше, и не обнаружит никаких изменений, внесенных в файл.
Кто-нибудь знает, почему это не обновляется?
Другие, у которых были подобные проблемы, решили эту проблему, добавив UID к своему VEVENT, что ничего не решило для меня ...
Сгенерированный формат
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:17d88c861131ec62f18835cdd4eb7d0c@yourhost.test
DTSTAMP:20110901T092002Z
DTSTART:20110925T170000Z
DTEND:20110928T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
BEGIN:VEVENT
UID:00813115d1a2d21447eb11ded3ba9020@yourhost.test
DTSTAMP:20110901T092002Z
DTSTART:20110929T170000Z
DTEND:20110930T035959Z
SUMMARY:Camping Trip
END:VEVENT
BEGIN:VEVENT
UID:1f18d85fe516d684536129ed066e7d4f@yourhost.test
DTSTAMP:20110901T092002Z
DTSTART:20110914T170000Z
DTEND:20110915T035959Z
SUMMARY:Testing new Event
END:VEVENT
END:VCALENDAR
Используемый код
<?php
header("Content-Type: text/Calendar");
header("Content-Disposition: inline; filename=\"calendar.ics\"");
echo "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@yourhost.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:20110925T170000Z
DTEND:20110928T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@yourhost.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:20110929T170000Z
DTEND:20110930T035959Z
SUMMARY:Camping Trip
END:VEVENT
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@yourhost.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:20110914T170000Z
DTEND:20110915T035959Z
SUMMARY:Testing new Event
END:VEVENT
END:VCALENDAR";
?>