php - Publish CalDav events for site members and manage participants -


i'm running php site user database , shared calendar (events) moderated database.

i want publish these events in ical/caldav members can:

  • get calendar events, in sync, authentication (private url...)
  • join event
  • (but not create or modify event)

the app shall leverage site existing user & calendar database.

i've looked @ caldav implementations in php & python, seem complicate simple usage:

  • sabre/dav has experimental shared calendar support, , leveraging existing user database seems tricky.
  • davical seems have own user database, complex acl schemes, etc.
  • etc.

how that?

  • use caldav/ical library adapted? idea of library job?
  • write own caldav/ical server, risk of poor client support.

edit: useful links use sabre/dav existing website database:

edit: improvements:

  • although works expected, sabre/dav way too slow in creating server-side event invites ~100 local people ("principals"). , generates 99x useless copies of event each invitee. took 8 seconds process invites (30+ seconds xdebug profiling on , crashed it!).

  • regarding using shared calendar, there's 2 possibilities in standard: either give invitee read-write acces, can join event (but change/delete it!) or give him read-only access... can't join it. i've played sabre\caldav\backend\pdo::updatecalendarobject() restrict event edits participant partstat.

but whatever solution, there's issue conflicts:

  • when participant modifies calendar entry saying participates (partstat accepted), sabre/dav processes information updating calendar objects, in user calendars. when doing so, sabredav increments sync token of these calendars.

  • therefore, when participant b tries join event, has not synchronized information participant joined event in meantime, there's conflict , participant b join information lost.

conflict solution:

  • rfc 6638 defines way avoid such conflicts using aschedule-tag. in sabre/dav roadmap v3.3. i've developed experimental support sabre/dav here still, android clients i've tested don't support rfc, ios does! anyway, schedule-tag, if organizer changes event data or when using shared calendars, participant join information lost.

  • so i've made own sabre/dav implementation never loose participant join information (except when event reschedule): sabre/dav partstat-only-calendar. basically, works account conflicting event sent user , records participant parstat info in server event, instead of pushing preconditionfailed exception. still need publish exemple of server run script leverage functionalities.

(the question seems little broad stackoverflow.)

sabredav seems choice when implementing cal/carddav server in php. makes sense use it.

a) calendar events, in sync, authentication (private url...)

well, should covered.

b) join event

i assume use case have event, user not proactively invited it. still want user user 'add' himself event. not use case caldav standard supports. there shared calendars in caldav , there server side scheduled events. think latter might work you.

you synthesize 'add-me' behavior. dynamically add user participant event when presenting client. can accept/maybe/deny it. if does, persist fact in master event - regular invitee.

c) (but not create or modify event)

this default behavior itip/caldav server scheduled events. organizer can modify events except stuff alarms etc. seems fit use case.


Comments

Popular posts from this blog

Django REST Framework perform_create: You cannot call `.save()` after accessing `serializer.data` -

Why does Go error when trying to marshal this JSON? -