Verfügbarmachen des Kalenders als iCal mit Subskriptionsoption in PHP

8

Ich habe eine Anwendung in PHP, in der jedem Benutzer seine zugehörigen Ereignisse zugeordnet sind.

Was ich tun möchte, ist, seine Events so zu präsentieren wie auf Facebook, wo URLs im Format webcal://www.facebook.com/ical/b.php?uid=123456789&key=ASD123ASD123ASD angezeigt werden und jedes Mal, wenn es ein neues Event gibt, wird es automatisch in meinen Kalender übertragen, den ich zu meinem hinzugefügt habe Google Kalender.

Ich möchte diesen Kalender in einer URL wie http://whatever.org/someLongUniquePerUserIdentifier.ics anzeigen.

Ich habe versucht, das Ereignisgenerierungsskript mit einer einfachen Datei zu simulieren, die sich an derselben URL befand. Es war eine ics-Datei, die von Google konsumiert wurde, die Ereignisse wurden hinzugefügt, aber wenn ich den Dateiinhalt änderte (ein Ereignis löschte) = änderte die Ressource, zu der google Kalender abonniert werden sollte, ging die Änderung einfach nicht durch zu gcal.

Da ich keine zuverlässige Quelle für die Dokumentation finden konnte, versuchte ich viel mit verschiedenen Keywords zu googeln und ich wurde nur auf Webdav-Server wie DAVical, sabredav usw. geführt.

Ich habe DAVical auf meinem Server installiert, nur um zu einem Zustand zu gelangen, in dem ich den Server richtig installiert habe, aber keine Ahnung, wie ich die Ereignisse von meiner MySQL-Datenbank auf meiner gewünschten URL anzeigen würde, die die Clients abonnieren würden.

Das Gleiche gilt für sabredav, abgesehen von der Tatsache, dass ich es nicht versucht habe, es zum Laufen zu bringen, weil ich keinen dokumentierten Weg sehe, meine Ereignisse über einen der dav-Server in die Welt zu bringen.

Ich bin im Grunde an einem Ort stecken, wo ich in PHP ics-Export habe, der nicht nach Updates von Kalender-Clients gefragt wird, und einem laufenden CalDAV-Server, der von Clients nach Updates gefragt wird, aber keine Daten zurückgibt.

Irgendwelche Gedanken?

BEARBEITETE FRAGE:

Was ist der richtige Weg, um eine sofortige One-Way-Kalendersynchronisation zu erreichen?

    
Elwhis 21.04.2014, 22:01
quelle

2 Antworten

4

Wenn ich mich nicht irre, scheint es, dass Sie einfach Ihre Verbindung von http://whatever.org/someLongUniquePerUserIdentifier.ics ändern müssen zu webcal://whatever.org/someLongUniquePerUserIdentifier.ics

Das Webcal-Protokoll soll die Aktion "Subscribe" in Ihrer Kalender-Software auslösen. Wenn Sie eine Datei herunterladen, wird diese nicht abonniert.

    
jessica 28.04.2014 04:16
quelle
4

Das .ics-Format ist in den RFCs 5545 und 6868 . Sie könnten Ihre Ausgabe selbst implementieren. Aber da es knifflige Bits wie UTC-Datumsangaben enthält, sind Sie möglicherweise robuster, wenn Sie eine Bibliothek verwenden.

Das Abonnement für Ihre Veranstaltungen ist nichts anderes als das Hinzufügen Ihrer URL zu einer Kalender-App, die sie nach Änderungen fragt. Wenn Sie ein Ereignis entfernen, wird es möglicherweise nicht aus dem Kalender entfernt, und der Status wird auf "CANCELED" geändert, sollte.

Ich habe keine Erfahrung mit einer PHP-Bibliothek für das Format, aber googeln für sie wird Ihnen viel bringen. Es sieht aus wie das Drupal-Projekt darüber diskutiert und versucht iCalcreator .

Wenn Sie mir nicht glauben:

Outlook

  

Fügen Sie Outlook ein Internetkalenderabonnement hinzu   Ein Internetkalenderabonnement ist ein Kalender, den Sie herunterladen und in Outlook anzeigen. Im Gegensatz zu einem Kalender-Snapshot werden Internet-Kalender-Abonnements jedoch automatisch aktualisiert.

     

Diese Kalender finden Sie auf Websites, auf denen Personen Kalender hosten. Auf einer solchen Website können Sie auf einen Link zum Herunterladen und Abonnieren des Kalenders klicken, oder jemand kann Ihnen in einer E-Mail-Nachricht einen Link zum Internetkalenderabonnement senden. Dieser Link ist eine Internet-Webadresse, die mit webcal: // anstelle von http: // beginnt und mit einem Dateinamen mit der Dateinamenerweiterung .ics endet.

Google Kalender

  

Wählen Sie "Nach URL hinzufügen" aus dem Menü.   Suchen Sie nach der Adresse des Google-Kalenders im iCalendar-Format, oder wenn Sie die iCalendar-Adresse eines Kalenders aus einer anderen Anwendung (z. B. Apples iCal) haben, können Sie diese ebenfalls verwenden.   Geben Sie die Adresse in das dafür vorgesehene Feld ein.

     

[...]

     

Hinweis: Es kann bis zu 8 Stunden dauern, bis sich die Änderungen in den ICS-Feeds in Ihrem Google Kalender widerspiegeln

So war es seit

Wayback

  

[...] Sie sollten diesen Kalender auch als etwas behandeln, das regelmäßig auf Änderungen überprüft werden sollte, und nicht auf einen Kalender, der einmal importiert wurde. Einfach, aber effektiv.

Also, wenn it really isnt the case,where you just add url to your the ics resource to your calendar and it will automatically update , dann hängt das vielleicht damit zusammen, dass das webcal uri-Schema inoffiziell ist und die IANA Dokument ist voll von Unbekannten.

Wenn Sie nur eine Synchronisation wünschen, brauchen Sie keinen DAV-Server. Sie benötigen nur einen CalDAV-Server für die 2-Wege-Synchronisierung. wenn Sie möchten, dass Clients den Kalender auch auf Ihrem Server aktualisieren.

    
Chris Wesseling 24.04.2014 13:42
quelle

Tags und Links