Commit Graph

197 Commits

Author SHA1 Message Date
Ralf Becker
dcc003cedf move calendar to new api 2016-05-01 17:47:59 +00:00
Ralf Becker
682fd42a26 move CalDAV/CardDAV server to api 2016-04-02 10:44:17 +00:00
Ralf Becker
9eb1ecbd36 fix all IDE warnings, before moving classes to api, in case we want to merge it back to 14.x 2016-04-02 08:40:34 +00:00
Ralf Becker
ae72f4d481 * Calendar/CalDAV: allow to download whole calendar as one big iCal file using "https://$user:$passwd@domain.com/egroupware/groupdav.php/$user/calendar/?download" 2015-11-13 15:23:36 +00:00
Ralf Becker
557adc4051 allow to download whole CalDAV collection as one big iCal file by adding "?checkout" to collection url 2015-11-08 12:33:35 +00:00
Ralf Becker
8643b08e90 * CalDAV: could not set own status for participation in an exception, if not being a participant of master 2015-10-12 11:55:20 +00:00
Ralf Becker
a1cc41d0ae revert changing filter for /calendar from owner to default, as /calendar is no CalDAV location anyway because outside of calendar home 2015-10-09 17:47:10 +00:00
Ralf Becker
5f109d2d9e * Calendar/CalDAV: fixed event not show if user only participates in an exeception (not the master) and has no read-rights for any master participant 2015-10-09 17:37:01 +00:00
Ralf Becker
6d2ef17b0f * CalDAV/Calendar: storing now all properties send by client and not known to EGroupware and fixed acknowledging and snoozing of alarms 2015-06-25 20:39:53 +00:00
Ralf Becker
5f0cb37220 using new Horde code in vendor for CalDAV/CardDAV, moved all old Horde and SyncML code to syncml app, not sure it is still functional 2015-06-22 16:20:15 +00:00
Ralf Becker
fffdef027e fix PHP Fatal error: Using $this when not in object context 2015-02-04 11:18:53 +00:00
Ralf Becker
5ea76e2230 fix calendar_groupdav::isParticipant() called with NULL, caused by recurring event starts in future behind horizont 2015-02-04 10:37:52 +00:00
Ralf Becker
24284eb1fd * Calendar/CalDAV: fixed not synced recurrences, because invitation was to a group only or first recurrence was an exception 2015-01-27 18:12:10 +00:00
Ralf Becker
4755f00f06 for group-invitations we need to check memberships of $user too 2015-01-20 14:57:40 +00:00
Ralf Becker
9d7d6accd7 * CalDAV: fixed users participating only in exceptions of a recurring event were also shown in whole series in Thunderbird and iCal 2014-11-10 20:04:37 +00:00
Ralf Becker
7ed3f45649 skip current user only for users, not group(-preferences) 2014-07-23 13:16:01 +00:00
Ralf Becker
349630ffa7 show calendars and ressource-calendars for user whos preferences are displayed, for "default" and "forced" we only display all and primary group calendars, but ressources of current user 2014-07-23 12:30:39 +00:00
Ralf Becker
1d1dbd252c fixed missing sorting in inital sync-collection report with empty sync-token 2014-02-20 19:26:02 +00:00
Ralf Becker
a9b6c6e9b4 * CalDAV/CardDAV: fixed support for limited sync-collection report used eg. by Marten Gajdas Android apps 2014-02-20 17:46:15 +00:00
Ralf Becker
94af139465 * CalDAV/CardDAV: entries with urls containing url-encoded chars, eg. from Google calendar, were not send to clients (missing urldecoding in multiget report) 2014-02-20 15:11:27 +00:00
Ralf Becker
6fd7ed4b2d * CalDAV/CardDAV: only advertice sync-collection report, if we track deleted entries (history-logging enabled, not working otherwise) 2014-01-07 11:10:51 +00:00
Ralf Becker
b20bd49817 * CalDAV: fixed wrong http-status for delete in inbox and announce sync-report on inbox, so clients using it get events only once 2013-10-31 11:29:22 +00:00
Ralf Becker
18285429e9 * CalDAV/CardDAV: fixed not working propfind-request to single resource in calendar/addressbook collection 2013-10-01 11:38:34 +00:00
Ralf Becker
a79192cc63 fixed not found multiget-report urls where not reported (worked for calendar only before sync-report was introduced) 2013-09-25 10:27:41 +00:00
Ralf Becker
86649cd1e1 full implementation of draft-murchison-webdav-prefer-05, incl. return=representation for 412 conflicts 2013-09-25 07:09:44 +00:00
Ralf Becker
1752f7defd basic managed attachment support, tested with iCal from OS X mountain lion 2013-09-23 10:21:31 +00:00
Ralf Becker
32895cdda5 removed accidently commited change 2013-06-27 09:24:50 +00:00
Ralf Becker
ac40e068b6 * Calendar: use "default" filter for home screen, instead of "all" which shows canceled events too 2013-06-27 09:22:24 +00:00
Ralf Becker
5bc3440442 * Calendar/CalDAV: fixed typo causing time range for sync into past and future to be shorter then default or explicilty set in preferences 2013-05-16 12:26:59 +00:00
Ralf Becker
fc4545d1ea * CalDAV: preference to overwrite default on how many days to sync into past or future 2013-03-14 17:13:59 +00:00
Ralf Becker
4d11e020e8 * Calendar/CalDAV: fixed recuring event disapeared from device, if a rejected recurrence existed and a change from an other user caused a reload (412 Precondition Failed) 2013-03-14 14:47:06 +00:00
Ralf Becker
9d8c2f42c9 * CalDAV: fixed accepting event removed it from calendar, because email address of a deleted account was prefered over regular account, correctly reporting not found URLs in multiget report 2013-01-25 17:52:28 +00:00
Ralf Becker
cea2c54ee1 if we require an extra invite grant, we fail if that does not exist (bind privilege is not given in that case) 2013-01-24 15:32:56 +00:00
Ralf Becker
0fdd106cc2 * CalDAV: remove "bind" privilege (create new events right) on other users or groups calendar, if invite requires special ACL grant, which current user does NOT have 2013-01-24 12:54:08 +00:00
Ralf Becker
8dde16eda6 * CalDAV/Calendar: fixed not working status change, if participant has no edit rights 2013-01-15 13:12:10 +00:00
Ralf Becker
c327cba153 consistently send ETag by using and extending put_response_headers 2012-10-29 12:23:17 +00:00
Ralf Becker
4b0559ab4d * CalDAV: allow organizer (edit-rights) update with If-Schedule-Tag-Match eg. from iOS or OS X iCal when event series was changed with "this in future" semantics 2012-10-23 11:35:07 +00:00
Ralf Becker
5511838936 new CalendarServer:(created|updated)-by properties used in iOS6 2012-10-08 11:14:07 +00:00
Ralf Becker
edba919994 * CalDAV: deleting an already declined invitation returned 403 Forbidden, instead 204 No Content 2012-10-02 12:57:31 +00:00
Ralf Becker
0af9ed0cd9 disable sync-collection report for inbox and outbox, as the way they are created in EGw, we cant support sync-collection propperly
we filter by status unknown, but do not report event as deleted, when status changed to accepted
2012-10-02 10:35:12 +00:00
Ralf Becker
841182ff4e * CalDAV: privileges in other users calendar where reported wrong, leading clients to believe they have write rights here 2012-10-02 05:17:32 +00:00
Ralf Becker
2e6629a548 use no end-date / limit into the future, as unchanged entries would never be transferted later on, for sync-collection with empty sync-token 2012-09-27 20:19:28 +00:00
Ralf Becker
db4bdb7f74 * CalDAV/Calendar/Resources: calendars of resources can now be accessed or subscribed via CalDAV, to subscribe use CalDAV preferences 2012-09-27 15:46:08 +00:00
Ralf Becker
52675388a3 * CalDAV/CardDAV: sync-collection report for all apps allowing a more efficient sync 2012-09-26 14:30:47 +00:00
Ralf Becker
7bf5b90739 * Calendar/CalDAV/eSync: tracking participant status changes now in modified date and user of calendar entry (main table), fixes sometimes not synced status changes and simplifies code a lot 2012-09-25 11:54:41 +00:00
Ralf Becker
81e1bff44d * Calendar/CalDAV: fixed not working accepting or rejecting recurrences of event series via CalDAV scheduling (eg. iOS devices) 2012-08-15 15:27:11 +00:00
Ralf Becker
b025809df1 * CalDAV/CardDAV expand-property report for principals used in iCal on OS X 10.7 2012-06-27 20:08:56 +00:00
Ralf Becker
21c49b0b26 * Calendar/CalDAV/eSync: fixed etag generation to NOT query maximum user-modification date for each entry, fixed etag and ctag for eSync to only use recurance master, as ActiveSync event does not contain extra participant data for exceptions (virtual and real) 2012-03-12 08:20:36 +00:00
Ralf Becker
9b71a5c17a fixed own calendar was listed as shared too 2012-03-01 13:28:38 +00:00
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