iCal: добавление события в календарь через webcal: // - PullRequest
0 голосов
/ 11 марта 2019

Итак, я создал небольшой скрипт для генерации событий iCal и автоматического добавления его в календарь, используя протокол webcal.

Сценарий работал следующим образом: я размещаю файл ical-generator.php на сервере и отправляю URL с необходимой информацией, добавляя в начало webcal.

webcal://www.test.com/ical-generator.php?id=66038&titulo=Teste&data-inicio=20190311&data-final=20190312&local=Teste&descricao=Lorem Ipsum dolor&url=http://www.test.com/

Однако, когда я импортирую событие в календарь, это уникальное событие заканчивается тем, что оно добавляется как новый календарь, а не как отдельное событие, которое следует добавить в существующий календарь пользователя.

Вот сценарий:

    <?php
header("Content-type: text/calendar; charset=utf-8");
header("Content-Disposition: inline; filename=\"teste-evento-".$_GET['titulo'].".ics" ."\"");

echo "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//TESTE//NONSGML Teste//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
UID:".$_GET['id']."-teste.com.br
ORGANIZER;CN=TESTE:MAILTO:teste@teste.com.br
SUMMARY:".$_GET['titulo']."
STATUS:CONFIRMED
DTSTART:".$_GET['data-inicio']."
DTEND:".$_GET['data-final']."
DTSTAMP:".date('Ymd').'T'.date('His')."
LOCATION:".$_GET['local']."
DESCRIPTION:".$_GET['descricao'].".\nSaiba mais em: ".$_GET['url']."
URL:".$_GET['url']."
CLASS:PUBLIC
TRANSP:TRANSPARENT
PRIORITY:5
SEQUENCE:0
X-MICROSOFT-CDO-IMPORTANCE:1
END:VEVENT
END:VCALENDAR";

1 Ответ

0 голосов
/ 17 марта 2019

(Обратите внимание, что webcal является неофициальным URI (довольно хорошо поддерживается, это правда, однако Официальный URI является http / s и должен поддерживаться всеми приложениями календаря. См. https://tools.ietf.org/html/rfc5545#section-3.8.4.6 и https://en.wikipedia.org/wiki/Webcal.)

Теперь то, как приложение обрабатывает файл или URL-адрес ics, обычно зависит от того, что делает пользователь. Например: в календаре Google, если одним щелчком мыши добавить календарь> импорт, Google предложит по умолчанию ваш основной календарь для импорта или разрешит выбирать из других календарей.

ЕСЛИ одним щелчком мыши добавить календарь -> из URL, то календарь Google будет «подписываться» - т.е. создавать новый календарь в разделе «другие календари» (в который нельзя «импортировать» другие события)

Если приложение прикреплено к электронному письму, большинство приложений ожидает только одно событие и предлагает добавить его в календарь по умолчанию.

Дважды проверьте, что вы делали в тестировании, и убедитесь, что вы используете УНИКАЛЬНЫЙ UID для каждого события, чтобы убедиться, что приложение повторно тестирует, как если бы это было новое событие (или удалите предыдущее событие). Некоторые достаточно сообразительны, чтобы сказать «эй, это одно и то же событие», и это делает тестирование запутанным.

...