使用PHP中的订阅选项将日历显示为iCal

Elw*_*his 8 php mysql calendar webdav webcal

我在PHP中有一个应用程序,每个用户都有自己的相关事件.

我想做的是以类似于facebook上的事件的方式公开他的事件,这些事件以格式提供网址webcal://www.facebook.com/ical/b.php?uid=123456789&key=ASD123ASD123ASD,每当有新事件时,它会自动传播到我添加到谷歌日历中的日历.

我想要做的是在一个网址上公开这个日历http://whatever.org/someLongUniquePerUserIdentifier.ics.

我尝试使用同一网址的简单文件模拟事件生成脚本.这是一个由谷歌消费的ics文件,事件已被添加,但当我更改文件内容(删除一个事件)=更改资源,应该订阅谷歌日历,更改根本没有通过到gcal.

由于我无法找到任何可靠的文档来源,我尝试使用不同的关键字进行谷歌搜索,我只被引导到像DAVical,sabredav等webdav服务器.

我已经在我的服务器上安装了DAVical,只是为了进入我已正确安装服务器的状态,但不知道如何在我想要的URL上公开我的MySQL数据库中的事件,这是客户订阅的.

与sabredav相同,除了事实,我没有尝试让它工作,因为我看不到任何记录的方式使用任何dav服务器将我的事件发送到世界.

我基本上被困在一个我在PHP中工作ics导出的地方,没有被日历客户端请求更新,以及一个正在运行的CalDAV服务器,可能会被客户端要求更新,但没有数据要返回.

有什么想法吗?

编辑问题:

实现即时单向日历同步的正确方法是什么?

Chr*_*ing 6

.ics 格式在 RFC 55456868中定义。您可以自己实现您的输出。但由于它包含 UTC 日期时间等棘手的位,因此在使用库时可能会更加健壮。

订阅您的活动只不过是将您的网址添加到日历应用程序中,这将轮询它是否有更改。删除事件可能不会将其从日历中删除,而应该将其状态更改为“已取消”。

我对任何该格式的 PHP 库都没有经验,但通过谷歌搜索它会得到很多。看起来Drupal 项目正在讨论它并正在尝试iCalcreator


如果你不相信我:

外表

将 Internet 日历订阅添加到 Outlook Internet 日历订阅是您在 Outlook 中下载和查看的日历。但是,与日历快照不同的是,Internet 日历订阅会自动更新。

这些日历可以在人们托管日历的网站上找到。在此类网站上,您可以单击链接下载并订阅日历,或者有人可以通过电子邮件向您发送 Internet 日历订阅的链接。此链接是一个 Internet Web 地址,以 webcal://(而不是 http://)开头,并以文件扩展名为 .ics 的文件名结尾。

谷歌日历

从菜单中选择按 URL 添加。查找 iCalendar 格式的 Google 日历地址,或者如果您有来自其他应用程序(例如 Apple 的 iCal)的日历的 iCalendar 地址,也可以使用此地址。在提供的字段中输入地址。

[...]

注意:ICS Feed 中的更改最多可能需要 8 小时才能反映在您的 Google 日历中

从那时起一直如此

回溯

[...]您还应该将此日历视为应定期检查更改的日历,而不是一次性导入的日历。简单,但有效。

因此,如果,那么这可能与uri 方案是非官方的且IANA文档充满未知数it really isnt the case,where you just add url to your the ics resource to your calendar and it will automatically update这一事实有关。webcal


如果您只想要单向同步,那么您不需要 DAV 服务器。您只需要一个 CalDAV 服务器即可实现 2 路同步;如果您希望客户端也更新您服务器上的日历。


jes*_*ica 5

如果我没记错的话,看来您只需要将链接从更改http://whatever.org/someLongUniquePerUserIdentifier.icswebcal://whatever.org/someLongUniquePerUserIdentifier.ics

Webcal协议应该触发日历软件中的“订阅”操作。如果您看到它正在下载文件,则表示它没有订阅。