Commit Graph

148 Commits

Author SHA1 Message Date
Ralf Becker
2bc821f428 use groupdav->log() for all permanent error-messages, to log the into request-log too, if both If-Match and If-Schdule-Tag-Match given use If-Match for organiser/owner and If-Schedule-Tag-Match for attendees/participants 2012-02-21 20:04:45 +00:00
Ralf Becker
2939d7bbf3 propagate data from settings hook to handlers, to fix failed installs because setup was not detected 2012-02-14 17:38:45 +00:00
Ralf Becker
d89f48d9c1 implement RFC 5995 add member to collection via POST, but not yet set DAV:add-member due to problems with OS X clients 2012-02-04 20:24:01 +00:00
Ralf Becker
c5ca42a4b1 move app-specific settings to app-handler 2012-02-04 01:24:34 +00:00
Ralf Becker
d21be8d871 move logic of which addressbook/calendars are shared into app-handler 2012-02-04 01:03:56 +00:00
Ralf Becker
5d2d28ee96 switching schedule-tag on again, as the issue seems to be a (hard to reproduce) bug, PUTs should either have If-Match or If-Schedule-Tag-Match 2012-01-30 23:55:12 +00:00
Ralf Becker
f2acf7707f outbox supports VFREEBUSY too, it is required from OS X iCal to autocomplete locations 2012-01-30 23:53:06 +00:00
Ralf Becker
e7269e6d29 do NOT overwrite calendar-description set via PROPPATCH 2012-01-30 00:40:55 +00:00
Ralf Becker
8645bac6a3 implement CalDAV <calendar-data><expand start="..." end="..."/></calendar-data> to return already expanded recurrences in a given time-range, instead of just a recurring event with a recurrence rule 2012-01-24 05:04:35 +00:00
Ralf Becker
f37f8578cf - fixed calendar_ical::importVCal() to (again) return 0 on etag mis-match, as documented and return 412 Precondition Failed in that case
- Disabling Schedule-Tag handling completly, as current implementation seems to create too much trouble with iCal under OS X or iOS, which send If-Schedule-Tag-Match condition event for major updates, not just changing own status or alarms
2011-11-08 21:09:06 +00:00
Ralf Becker
5e132c5a53 Two more fixes (thanks to Roland Scherer):
- using maximum from calendar modified and user_modified for getlastmodified, as for the etag
- invitations in inbox have to use METHOD: PUBLISH (not REQUEST)
2011-10-23 08:13:35 +00:00
Ralf Becker
291b540aa7 fix for iCal4OL using WinHTTP only supporting a certain header length 2011-10-23 07:59:05 +00:00
Ralf Becker
8096c34bef - fixed ORGANIZER/ATTENDEE in iCal for CalDAV:
+ do NOT use ORGANIZER for events without further participants or a different organizer
+ do not include event owner/ORGANIZER as participant in his own calendar, if he is only participant
--> all other cases include ORGANZIER and additional as ATTENDEE (tested with iCal on iOS and OS X)
- implemented schedule-tag and If-Schedule-Tag-Match header from CalDAV Scheduling
- allow to change participant status and add/remove alarms with schedule-tag instead of ETag
--> If-Schedule-Tag-Match header has precedence over If-Match (ETag) header, but limits changes to participant status and alarms
--> ToDo: test accepting, rejecting recurrences
2011-10-20 20:10:04 +00:00
Ralf Becker
d898e6c627 calendar-timezone needs full vcalendar component, not just a vtimezone 2011-10-20 14:01:16 +00:00
Ralf Becker
ceaec3d3c1 added calendar-timezone property, changed groupdav_handler::extra_properties signature (removed static and added $user parameter), removed calendar-user-address-set property belonging only to principal 2011-10-20 13:35:01 +00:00
Ralf Becker
512138ed56 diverse fixes for resources&locations, thought iCal only autocompletes locations, no idea why it skips resources, thought resources booked via webgui are shown correct 2011-10-17 15:36:28 +00:00
Ralf Becker
b2fa12eb3e remove unusual and unnecessary "EGw-...-wGE" prefix/postfix from etag and ctag 2011-10-08 11:34:55 +00:00
Ralf Becker
e05ce4d614 enclosing etag in quotes, as most servers do 2011-10-05 08:15:24 +00:00
Ralf Becker
bedafe6c79 fixed "403 Forbidden" when a participant with a group invitation tried to delete the event from his calendar 2011-10-05 07:39:11 +00:00
Ralf Becker
23584253fd not returning deleted entries for read, as they might have identical UID for caldav_name as a non-deleted entry and would therefore block access to these 2011-10-04 14:18:35 +00:00
Ralf Becker
0de2f3c527 fixed profind depth 0 directly on a resource contains name-part twice 2011-10-04 12:16:03 +00:00
Ralf Becker
288a88239b we should not return an etag here, as we never store the PUT ical byte-by-byte 2011-10-03 15:48:24 +00:00
Ralf Becker
175197d7c0 * CalDAV: no METHOD:PUBLISH for CalDAV outside the inbox 2011-10-03 12:53:28 +00:00
Ralf Becker
b11fa0302f * CalDAV/GroupDAV: return empty collection, as iCal under iOS 5 had problems with returning "404 Not found" status 2011-09-30 12:52:40 +00:00
Ralf Becker
0a7b7e40c8 - improved principal-property-search report to support test=(allof|anyof) and match-type=(contains|starts-with) attributes used by iOS iCal to autocomplete participants
--> participants are - thanks to CalDAV scheduling - now setable for new event, thought searching for them does NOT yet work, no idea why ;-)
- added somehow missing calendar-query report to supported-report-set
2011-09-24 21:10:53 +00:00
Ralf Becker
3f830b2bff - implemented principal-property-search report required for WebDAV ACL and used by Lightning to search for calendar-home-set
- had to implement a workaround for Lightning, as it wrongly interprets principal-property-search for calendar-home-set in the principal-collection-set
  matching our *DAV root returning all principals, as all have a matching calendar-home-set, as NOT supporting CalDAV scheduling
  --> search only current user's principal, when Lightning searches for calendar-home-set
- OPTIONS / return now calendar-auto-scheduling too, as Lightning only searches there, to check if server supports CalDAV scheduling
- fixed outbox freebusy request to cope with no X-CALENDARSERVER-MASK-UID and a single attendee
2011-09-23 12:04:21 +00:00
Ralf Becker
df1d9e81b2 - implemented regular CalDAV free-busy-query report
- fixed FBTYPE for tentative accepted invitations: BUSY-TENTATIVE
- fixed typo stalling outbox free-busy request
2011-09-22 19:49:01 +00:00
Ralf Becker
b5269738d7 read-free-busy, schedule-send and schedule-deliver privileges 2011-09-22 18:46:16 +00:00
Ralf Becker
c26fcffda7 first step for CalDAV scheduling
- principal reports scheduling-inbox-URL /<username>/inbox/ and scheduling-outbox-URL /<username>/outbox/
- outbox collection contains no events
- outbox correctly answers POST for freebusy information
- outbox respons to all other POST with "204 No Content", ignore client request to deliver invitations
- inbox collection contains events of unknown status (PARTSTAT=NEEDS-ACTION)
- inbox responds to DELETE with "200 Ok"
--> iCal under OS X now shows freebusy times :-)
(had to add "write-content" privilege for calendar collections user has edit rights for, to allow adding events)
2011-09-22 15:22:52 +00:00
Ralf Becker
1f39e5c562 - added WebDAV ACL props supported-privilege-set and current-user-privilege-set
+ currently only standard WebDAV privileges: read, read-current-user-privilege-set, write-content, bind and unbind used
  + they get only queried for collections, thought we dont report any write* on collections, as we dont allow to create calendars or change properties
- new groupdav::add_resource() method used to add all resources (incl. collections) to propfind or report requests
- improved autoindex to show nicely indented hierarchical properties
2011-09-21 20:08:21 +00:00
Ralf Becker
03ed1d3ddb - refactored code to use a single add_collection method in groupdav class
--> app groupdav classes now get calling groupdav object as parameter
Had a quick test with iOS & OS X addressbook, calendar and with Lightning
2011-09-18 10:56:56 +00:00
Ralf Becker
17f6dad7eb * CalDAV: fixed and enabled iterator again, to minimize resource usage, fix for mystylite bug #1942
it was disabled because sql query was broken, because we did not use MIN(cal_end) multiple events per cal_id were returned
2011-08-03 16:13:56 +00:00
Ralf Becker
816cae2dfa * CalDAV/GroupDAV: disabling not working iterator, causing not all events to be returned to client 2011-07-08 08:01:33 +00:00
Ralf Becker
c4a01cd4fc * CalDAV: handle deleted events, as not existing (404 Not Found) 2011-06-19 08:54:06 +00:00
Ralf Becker
0bfd238e3f * CalDAV: store name part of URL from client PUT request, to fully comply with CalDAV spec 2011-04-06 19:26:10 +00:00
Ralf Becker
66c61cb74e - move all filtering into SQL query in calendar_so, to be able to correctly return N rows starting from row M
- re-enabling propfind iterator again for calendar (fetching events in chunks of 500), to lower memory footprint
Please note: changed SQL queries used for CalDAV do not take changed participants (or status) in exceptions into account
2011-04-05 15:32:20 +00:00
Ralf Becker
3bb9e89bcf * CalDAV/Lightning: fixed under some conditions infinit poping up alarms and user not able to add alarms
- Lightning pops up alarm, until Sequence/etag get updated: if user has no edit rights on an other users calendar, etag never got updated, now we update it
- fixed user was not able to add alarms via CalDAV, if he had no edit rights for event (was always possible in web UI)
- alarms from other users calendars are not included any more, as they make no sense but a lot of trouble
- fixed wrong condition on adding alarms, causing some alarms no being saved
2011-03-05 10:21:32 +00:00
Jörg Lehrke
c59cb90742 * CalDAV: Apply other users' calendar color, too 2011-02-13 21:08:29 +00:00
Ralf Becker
9981730b29 moved ctag to calendar_bo, to use it in CalDAV and ActiveSync, thought it needs to be reworked, as it is to expensive performance-wise 2010-12-02 22:27:32 +00:00
Ralf Becker
07e09c71d8 move etag to calendar_bo 2010-11-26 21:32:10 +00:00
Ralf Becker
0571fc21e0 * support multiget report on url with uid, as lightning uses multiget after a PUT on the PUT url, which is the uid 2010-11-08 09:25:58 +00:00
Ralf Becker
f08decd739 /infolog/ does not imply setting the current user (for new entries it's done anyway) 2010-10-26 09:35:44 +00:00
Jörg Lehrke
298c4ebaf1 Fix time-range parser for CalDAV 2010-10-23 11:43:52 +00:00
Ralf Becker
8dee351338 avoid invinit recurrence on broken calendar entries (reference AND recur_type set) 2010-10-13 14:08:24 +00:00
Jörg Lehrke
a85fdb55cd Allow to add events to group calendars via CalDAV 2010-09-29 16:54:16 +00:00
Jörg Lehrke
9ae3b93e63 Fix CalDAV ctag calculation 2010-09-14 05:07:33 +00:00
Jörg Lehrke
6fde93d15b Improved ctag for CalDAV 2010-09-12 12:44:22 +00:00
Jörg Lehrke
07063ebf7a Update cal_modified for all required cases; adjust CalDAV ctag function 2010-09-11 18:08:48 +00:00
Jörg Lehrke
44c3c7eb9a Improve iPhone iCal support 2010-08-15 06:42:05 +00:00
Ralf Becker
a3d06cb638 improved performance by not checking exceptions for referencing a master which mentions them as exceptions 2010-08-05 17:11:13 +00:00
Jörg Lehrke
75b25bb796 Fix FroupDAV report issue 2010-07-02 05:01:15 +00:00
Jörg Lehrke
09bc2c09cd Fix CTag issues for GroupDAV 2010-06-29 13:52:56 +00:00
Jörg Lehrke
affd4b1885 Fix CalDAV issues 2010-06-29 09:19:25 +00:00
Jörg Lehrke
5cb14e716e Fix CalDAV delete event issue 2010-06-28 17:34:57 +00:00
Jörg Lehrke
bce68a9e82 Fix CalDAV group attendee issue; various GroupDAV improvements 2010-06-27 22:16:22 +00:00
Jörg Lehrke
53ebb5dc19 Improve charset support for CalDAV 2010-06-14 07:51:28 +00:00
Ralf Becker
a7fd927ae7 doing read (without acl check) first and then check acl on read event, to save reading it multiple times 2010-06-01 09:22:06 +00:00
Jörg Lehrke
4c1e3a9e70 Fix CalDAV series event handling 2010-05-19 16:13:37 +00:00
Jörg Lehrke
03885572b6 Fix etag/ctag issues for CalDAV 2010-05-19 15:25:07 +00:00
Jörg Lehrke
2552476036 Special Lightning CalDAV treatment 2010-05-18 14:41:22 +00:00
Jörg Lehrke
d2c03cd287 Fix CalDAV PUT failure 2010-05-18 10:03:21 +00:00
Jörg Lehrke
27f1fef944 Fix CalDAV invitation issue (Stylite#513) 2010-05-17 14:20:34 +00:00
Ralf Becker
3629e919f5 "disabling not working iterator:
Replacement code for in r29270 removed filter  

	$cal_filters['query']['cal_reference'] = 0;

only works, if all recurrences and the master are returned in a single chunk, otherwise events get returned multiple times"
2010-05-14 17:51:55 +00:00
Jörg Lehrke
362afdb312 Fix GroupDAV private event issue 2010-05-14 08:35:16 +00:00
Ralf Becker
06b8c5ac75 "fix for bub #2579 - PHP Fatal error: Using $this when not in object context
--> get_path can NOT be static"
2010-05-09 20:23:53 +00:00
Jörg Lehrke
df6e3195e4 User Calendar CalDAV directory contains only 'not rejected' entries 2010-05-01 16:24:05 +00:00
Jörg Lehrke
211d2818cb Enable ../groupdav.php/calendar/ again 2010-04-16 21:53:34 +00:00
Jörg Lehrke
4dc9ed98f9 Fix hierarchical properties issue 2010-04-16 18:58:32 +00:00
Jörg Lehrke
30a3296c8e Optimze and clean up GroupDAV 2010-04-13 15:31:59 +00:00
Jörg Lehrke
fc07594746 Fix GroupDAV iterator issue 2010-03-16 20:44:55 +00:00
Jörg Lehrke
7220d96847 Use iterator approach in GroupDAV; fix various issues 2010-03-15 09:55:16 +00:00
Jörg Lehrke
89f7d50cec Differentiate GroupDAV collections 2010-03-11 07:30:46 +00:00
Jörg Lehrke
a8804a44ef GroupDAV updates 2010-03-06 23:06:43 +00:00
Jörg Lehrke
c816b4188e Fix (pseudo) exception handling in CalDAV 2010-02-26 12:37:07 +00:00
Jörg Lehrke
85b6ba5ef0 Cleanup issues found during backport 2010-02-23 18:19:12 +00:00
Jörg Lehrke
21ccdd5f28 Fix various synchronization issues (SyncML & CalDAV) 2010-02-17 13:29:28 +00:00
Jörg Lehrke
65c06844e5 Fix wrong classification in get_event_info() and UID handling for CalDAV 2010-02-11 20:50:35 +00:00
Christian Binder
a92a3b4a7b fixed typo 2010-01-22 19:45:25 +00:00
Ralf Becker
dd0a5c1b13 Fixed CalDAV/GroupDAV to include all exceptions of a series in the
resource of the series master. Now the status of single recurrences of a
serie are send to the clients as (virtual) exceptions as Jaytrax&Joerg
implemented it already for SyncML.
The implementation is unfortunately a little different, as CalDAV
differs from SyncML and I dont know the SyncML part that well. Maybe we
can re-unify the code again together.
Tested so far with Tb3/Lightning1.0b and a little with iPhone.
Please let me know, if you run into problems with other clients.
2009-12-27 04:21:33 +00:00
Ralf Becker
4f69a5d1b0 using references to loop of items in profind and some cleanups 2009-10-16 08:36:28 +00:00
Ralf Becker
8dc163f04f some modifications to get iPhone working with EGroupware 2009-07-14 19:51:03 +00:00
Ralf Becker
232252475f patch fixing many depricated functions (eg. posix regular expressions) and features, which fill up the error_log under php5.3 (and will no longer be available under php6).
Patch is mostly created by script in egroupware/doc/fix_depricated.php in separate commit.
I do NOT advice to apply this patch to a production system (it's commited to trunk!), as the automatic modified regular expressions have a good change to break something ...
2009-06-08 16:21:14 +00:00
Klaus Leithoff
085961d7e1 njv: calendar/groupdav work to improve groupdav compatibility and various sync proplems connected 2009-04-02 12:35:26 +00:00
Ralf Becker
18372ab45e "fixed not working multiget report (caused by .ics extension of calendar ressources)" 2009-03-20 08:57:17 +00:00
Ralf Becker
bc59bd9fb8 fixed missing .ics extension in Location header after PUT 2008-11-18 06:11:12 +00:00
Ralf Becker
8991124ced "fixed sql error reported by Hans-Juergen Tappe on the developers list" 2008-11-14 07:25:09 +00:00
Ralf Becker
43f860ba8f Reworked GroupDAV and iCal/vCard handler to set 'GroupDAV' as product
manufacturer and the recogniced GroupDAV client as product name.
This way we are able to handle different GroupDAV clients, as we
allready do with different SyncML clients.
Also removed the no longer needed code enabling the use of the real UID, 
as SyncML does no longer misuse the UID for it's GUID.
2008-11-03 09:36:20 +00:00
Ralf Becker
6777a093bf "removed postfix from etag, was there only for some testing, but was forgotten" 2008-10-20 17:36:03 +00:00
Ralf Becker
7ce97ba699 - .ics extension for todos and events
- new GroupDAV v2 component-set attribute for collections
- getlastmodified & getcontentlength properties for infolog propfind
- fixed propfind on a single infolog entry to return just that entry
- getcontenttype of vevent and vtodo collection returns extra component
2008-08-04 19:08:09 +00:00
Ralf Becker
bc6f5c6a21 missing rename boical --> calendar_ical 2008-06-12 07:02:18 +00:00
Ralf Becker
25b1924665 no extra charset attributes in iCal for GroupDAV/CalDAV 2008-06-07 17:54:40 +00:00
Ralf Becker
ef700b0061 new class naming schema 2008-06-07 17:45:33 +00:00
Ralf Becker
ea6f443858 "fixed default timerange allways overriding the given time-range in REPORT" 2008-06-04 11:07:45 +00:00
Ralf Becker
e035498517 "fixed warning if only an allprop is present" 2008-06-03 17:22:59 +00:00
Ralf Becker
b07dd8ef9e "cadaver reports entires as not found, because modified and contentlength were not set" 2008-05-20 09:07:03 +00:00
Ralf Becker
89eba8038d allow status update via CalDAV/GroupDAV PUT and DELETE for attendees (with no other rights on the event), moved that code from bocalupdate (wasnt working because of wrong param code) to boical, this should work for SyncML and CalDAV/GroupDAV - thought SyncML does not handle the delete to reject an event so far 2008-05-17 13:00:34 +00:00
Ralf Becker
ce59f97204 using / as calendar-home-set and fixed return code for PUT requests on the UID 2008-05-10 20:12:20 +00:00
Ralf Becker
d2e9143213 First version of new CalDav/CardDAV/GroupDAV access for calendar and
addressbook (infolog will follow).
CalDAV is tested so far with lightning 0.8 and Apple's iCal. Please note
that both distinguish between iCalServer and CalDAV!
The URL is currently http://domain.com/egroupware/groupdav.php/calendar/
2008-05-08 20:31:32 +00:00