1ChangeLog
2=========
3
43.2.3 (2018-10-19)
5------------------
6
7* #982: Make sure that files that are siblings of directories, are reported
8  as files (@nickvergessen)
9
103.2.2 (2017-02-14)
11------------------
12
13* #943: Fix CardDAV XML reporting bug, which was affecting several CardDAV
14  clients. Bug was introduced in 3.2.1.
15* The zip release ships with [sabre/vobject 4.1.2][vobj],
16  [sabre/http 4.2.2][http], [sabre/event 3.0.0][evnt],
17  [sabre/uri 1.2.0][uri] and [sabre/xml 1.5.0][xml].
18
19
203.2.1 (2017-01-28)
21------------------
22
23* #877: Fix for syncing large calendars when using the Sqlite PDO backend.
24  (@theseer).
25* #889 Added support for filtering vCard properties in the addressbook-query
26  REPORT (@DeepDiver1975).
27* The zip release ships with [sabre/vobject 4.1.2][vobj],
28  [sabre/http 4.2.2][http], [sabre/event 3.0.0][evnt],
29  [sabre/uri 1.2.0][uri] and [sabre/xml 1.5.0][xml].
30
31
323.2.0 (2016-06-27)
33------------------
34
35* The default ACL rules allow an unauthenticated user to read information
36  about nodes that don't have their own ACL defined. This was a security
37  problem.
38* The zip release ships with [sabre/vobject 4.1.0][vobj],
39  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
40  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.2][xml].
41
42
433.2.0-beta1 (2016-05-20)
44------------------------
45
46* #833: Calendars throw exceptions when the sharing plugin is not enabled.
47* #834: Return vCards exactly as they were stored if we don't need to convert
48  in between versions.
49* The zip release ships with [sabre/vobject 4.1.0][vobj],
50  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
51  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.1][xml].
52
53
543.2.0-alpha1 (2016-05-09)
55-------------------------
56
57* Database changes for CalDAV. If you are using the CalDAV PDO backends, you
58  must migrate. Run `./bin/migrateto32.php` for more info.
59* Support for WebDAV Resource Sharing, an upcoming standard.
60* Added support for sharing in the CalDAV PDO backend! Users can now invite
61  others to their calendar and give them read/read-write access!
62* #397: Support for PSR-3. You can now log exceptions with your favourite
63  psr3-compatible logging tool.
64* #825: Actual proper, tested support for PostgreSQL. We require version 9.5.
65* Removed database migration script for sabre/dav 1.7. To update from that
66  version you now first need to update to sabre/dav 3.1.
67* Removed deprecated function: `Sabre\DAV\Auth\Plugin::getCurrentUser()`.
68* #774: Fixes for getting free disk space on Windows.
69* #803: Major changes in the sharing API. If you were using an old sabre/dav
70  sharing api, head to the website for more detailed migration notes.
71* #657: Support for optional auth using `{DAV:}unauthorized` and `{DAV:}all`
72  privileges. This allows you to assign a privilege to a resource, allowing
73  non-authenticated users to access it. For instance, this could allow you
74  to create a public read-only collection.
75* #812 #814: ICS/VCF exporter now includes a more useful filename in its
76  `Content-Disposition` header. (@Xenopathic).
77* #801: BC break: If you were using the `Href` object before, it's behavior
78  now changed a bit, and `LocalHref` was added to replace the old, default
79  behavior of `Href`. See the migration doc for more info.
80* Removed `Sabre\DAVACL\Plugin::$allowAccessToNodesWithoutACL` setting.
81  Instead, you can provide a set of default ACL rules with
82  `Sabre\DAVACL\Plugin::setDefaultAcl()`.
83* Introduced `Sabre\DAVACL\ACLTrait` which contains a default implementation
84  of `Sabre\DAV\IACL` with some sane defaults. We're using this trait all over
85  the place now, reducing the amount of boilerplate.
86* Plugins can now control the "Supported Privilege Set".
87* Added Sharing, ICSExport and VCFExport plugins to `groupwareserver.php`
88  example.
89* The `{DAV:}all` privilege is now no longer abstract, so it can be assigned
90  directly. We're using the `{DAV:}all` privilege now in a lot of cases where
91  we before assigned both `{DAV:}read` and `{DAV:}write`.
92* Resources that are not collections no longer support the `{DAV:}bind` and
93  `{DAV:}unbind` privileges.
94* Corrected the CalDAV-scheduling related privileges.
95* Doing an `UNLOCK` no longer requires the `{DAV:}write-content` privilege.
96* Added a new `getPrincipalByUri` plugin event. Allowing plugins to request
97  quickly where a principal lives on a server.
98* Renamed `phpunit.xml` to `phpunit.xml.dist` to make local modifications easy.
99* Functionality from `IShareableCalendar` is merged into `ISharedCalendar`.
100* #751: Fixed XML responses from failing `MKCOL` requests.
101* #600: Support for `principal-match` ACL `REPORT`.
102* #599: Support for `acl-principal-prop-set` ACL `REPORT`.
103* #798: Added an index on `firstoccurence` field in MySQL CalDAV backend. This
104  should speed up common calendar-query requests.
105* #759: DAV\Client is now able to actually correctly resolve relative urls.
106* #671: We are no longer checking the `read-free-busy` privilege on individual
107  calendars during freebusy operations in the scheduling plugin. Instead, we
108  check the `schedule-query-freebusy` privilege on the target users' inbox,
109  which validates access for the entire account, per the spec.
110* The zip release ships with [sabre/vobject 4.1.0][vobj],
111  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
112  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.1][xml].
113
114
1153.1.5 (????-??-??)
116------------------
117
118* Fixed: Creating a new calendar on some MySQL configurations caused an error.
119* #889 Added support for filtering vCard properties in the addressbook-query
120  REPORT (@DeepDiver1975).
121
122
123
1243.1.4 (2016-05-28)
125------------------
126
127* #834: Backport from `master`: Return vCards exactly as they were stored if
128  we don't need to convert in between versions. This should speed up many
129  large addressbook syncs sometimes up to 50%.
130* The zip release ships with [sabre/vobject 4.1.0][vobj],
131  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
132  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.2][xml].
133
134
1353.1.3 (2016-04-06)
136------------------
137
138* Set minimum libxml version to 2.7.0 in `composer.json`.
139* #805: It wasn't possible to create calendars that hold events, journals and
140  todos using MySQL, because the `components` column was 1 byte too small.
141* The zip release ships with [sabre/vobject 4.1.0][vobj],
142  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
143  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.1][xml].
144
145
1463.1.2 (2016-03-12)
147------------------
148
149* #784: Sync logs for address books were not correctly cleaned up after
150  deleting them.
151* #787: Cannot use non-seekable stream-wrappers with range requests.
152* Faster XML parsing and generating due to sabre/xml update.
153* #793: The Sqlite schema is now more strict and more similar to the MySQL
154  schema. This solves a problem within Baikal.
155* The zip release ships with [sabre/vobject 4.0.3][vobj],
156  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
157  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.1][xml].
158
159
1603.1.1 (2016-01-25)
161------------------
162
163* #755: The brower plugin and some operations would break when scheduling and
164  delegation would both be enabled.
165* #757: A bunch of unittest improvements (@jakobsack).
166* The zip release ships with [sabre/vobject 4.0.2][vobj],
167  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
168  [sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
169
170
1713.1.0 (2016-01-06)
172------------------
173
174* Better error message when the browser plugin is not enabled.
175* Added a super minimal server example.
176* #730: Switched all mysql tables to `utf8mb4` character set, allowing you to
177  use emoji in some tables where you couldn't before.
178* #710: Provide an Auth backend that acts as a helper for people implementing
179  OAuth2 Bearer token. (@fkooman).
180* #729: Not all calls to `Sabre\DAV\Tree::getChildren()` were properly cached.
181* #727: Added another workaround to make CalDAV work for Windows 10 clients.
182* #742: Fixes to make sure that vobject 4 is correctly supported.
183* #726: Better error reporting in `Client::propPatch`. We're now throwing
184  exceptions.
185* #608: When a HTTP error is triggered during `Client:propFind`, we're now
186  throwing `Sabre\HTTP\ClientHttpException` instead of `Sabre\DAV\Exception`.
187  This new exception contains a LOT more information about the problem.
188* #721: Events are now handled in the correct order for `COPY` requests.
189  Before this subtle bugs could appear that could cause data-loss.
190* #747: Now throwing exceptions and setting the HTTP status to 500 in subtle
191  cases where no other plugin set a correct HTTP status.
192* #686: Corrected PDO principal backend's findByURI for email addresses that
193  don't match the exact capitalization.
194* #512: The client now has it's own `User-Agent`.
195* #720: Some browser improvements.
196* The zip release ships with [sabre/vobject 4.0.1][vobj],
197  [sabre/http 4.2.1][http], [sabre/event 3.0.0][evnt],
198  [sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
199
200
2013.1.0-alpha2 (2015-09-05)
202-------------------------
203
204* Massive calendars and addressbooks should see a big drop in peak memory
205  usage.
206* Fixed a privilege bug in the availability system.
207* #697: Added a "tableName" member to the PropertyStorage PDO backend. (@Frzk).
208* #699: PostgreSQL fix for the Locks PDO backend. (@TCKnet)
209* Removed the `simplefsserver.php` example file. It's not simple enough.
210* #703: PropPatch in client is not correctly encoded.
211* #709: Throw exception when running into empty
212  `supported-calendar-component-set`.
213* #711: Don't trigger deserializers for empty elements in `{DAV:}prop`. This
214  fixes issues when using sabre/dav as a client.
215* The zip release ships with [sabre/vobject 4.0.0-alpha2][vobj],
216  [sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
217  [sabre/uri 1.0.1][uri] and [sabre/xml 1.2.0][xml].
218
219
2203.1.0-alpha1 (2015-07-19)
221-------------------------
222
223* Now requires PHP 5.5
224* Upgraded to vobject 4, which is a lot faster.
225* Support for PHP 7.
226* #690: Support for `calendar-availability`, draft 05.
227  [reference][calendar-availability].
228* #691: Workaround for broken Windows Phone client.
229* The zip release ships with [sabre/vobject 4.0.0-alpha1][vobj],
230  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
231  [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
232
233
2343.0.10 (2016-??-??)
235------------------
236
237* #889 Added support for filtering vCard properties in the addressbook-query
238  REPORT (@DeepDiver1975).
239
240
2413.0.9 (2016-04-06)
242------------------
243
244* Set minimum libxml version to 2.7.0 in `composer.json`.
245* #727: Added another workaround to make CalDAV work for Windows 10 clients.
246* #805: It wasn't possible to create calendars that hold events, journals and
247  todos using MySQL, because the `components` column was 1 byte too small.
248* The zip release ships with [sabre/vobject 3.5.1][vobj],
249  [sabre/http 4.2.1][http], [sabre/event 2.0.2][evnt],
250  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.1][xml].
251
252
2533.0.8 (2016-03-12)
254------------------
255
256* #784: Sync logs for address books were not correctly cleaned up after
257  deleting them.
258* #787: Cannot use non-seekable stream-wrappers with range requests.
259* Faster XML parsing and generating due to sabre/xml update.
260* The zip release ships with [sabre/vobject 3.5.0][vobj],
261  [sabre/http 4.2.1][http], [sabre/event 2.0.2][evnt],
262  [sabre/uri 1.1.0][uri] and [sabre/xml 1.4.1][xml].
263
264
2653.0.7 (2016-01-12)
266------------------
267
268* #752: PHP 7 support for 3.0 branch. (@DeepDiver1975)
269* The zip release ships with [sabre/vobject 3.5.0][vobj],
270  [sabre/http 4.2.1][http], [sabre/event 2.0.2][evnt],
271  [sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
272
273
2743.0.6 (2016-01-04)
275------------------
276
277* #730: Switched all mysql tables to `utf8mb4` character set, allowing you to
278  use emoji in some tables where you couldn't before.
279* #729: Not all calls to `Sabre\DAV\Tree::getChildren()` were properly cached.
280* #734: Return `418 I'm a Teapot` when generating a multistatus response that
281  has resources with no returned properties.
282* #740: Bugs in `migrate20.php` script.
283* The zip release ships with [sabre/vobject 3.4.8][vobj],
284  [sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
285  [sabre/uri 1.0.1][uri] and [sabre/xml 1.3.0][xml].
286
287
2883.0.5 (2015-09-15)
289------------------
290
291* #704: Fixed broken uri encoding in multistatus responses. This affected
292  at least CyberDuck, but probably also others.
293* The zip release ships with [sabre/vobject 3.4.7][vobj],
294* The zip release ships with [sabre/vobject 3.4.7][vobj],
295  [sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
296  [sabre/uri 1.0.1][uri] and [sabre/xml 1.2.0][xml].
297
298
2993.0.4 (2015-09-06)
300------------------
301
302* #703: PropPatch in client is not correctly encoded.
303* #709: Throw exception when running into empty
304  `supported-calendar-component-set`.
305* #711: Don't trigger deserializers for empty elements in `{DAV:}prop`. This
306  fixes issues when using sabre/dav as a client.
307* #705: A `MOVE` request that gets prevented from deleting the source resource
308  will still remove the target resource. Now all events are triggered before
309  any destructive operations.
310* The zip release ships with [sabre/vobject 3.4.7][vobj],
311  [sabre/http 4.1.0][http], [sabre/event 2.0.2][evnt],
312  [sabre/uri 1.0.1][uri] and [sabre/xml 1.2.0][xml].
313
314
3153.0.3 (2015-08-06)
316------------------
317
318* #700: Digest Auth fails on `HEAD` requests.
319* Fixed example files to no longer use now-deprecated realm argument.
320* The zip release ships with [sabre/vobject 3.4.6][vobj],
321  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
322  [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
323
324
3253.0.2 (2015-07-21)
326------------------
327
328* #657: Migration script would break when coming a cross an iCalendar object
329  with no UID.
330* #691: Workaround for broken Windows Phone client.
331* Fixed a whole bunch of incorrect php docblocks.
332* The zip release ships with [sabre/vobject 3.4.5][vobj],
333  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
334  [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
335
336
3373.0.1 (2015-07-02)
338------------------
339
340* #674: Postgres sql file fixes. (@davesouthey)
341* #677: Resources with the name '0' would not get retrieved when using
342  `Depth: infinity` in a `PROPFIND` request.
343* #680: Fix 'autoprefixing' of dead `{DAV:}href` properties.
344* #675: NTLM support in DAV\Client. (@k42b3)
345* The zip release ships with [sabre/vobject 3.4.5][vobj],
346  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
347  [sabre/uri 1.0.1][uri] and [sabre/xml 1.1.0][xml].
348
349
3503.0.0 (2015-06-02)
351------------------
352
353* No changes since last beta.
354* The zip release ships with [sabre/vobject 3.4.5][vobj],
355  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
356  [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
357
358
3593.0.0-beta3 (2015-05-29)
360------------------------
361
362* Fixed deserializing href properties with no value.
363* Fixed deserializing `{DAV:}propstat` without a `{DAV:}prop`.
364* #668: More information about vcf-export-plugin in browser plugin.
365* #669: Add export button to browser plugin for address books. (@mgee)
366* #670: multiget report hrefs were not decoded.
367* The zip release ships with [sabre/vobject 3.4.4][vobj],
368  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
369  [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
370
371
3723.0.0-beta2 (2015-05-27)
373------------------------
374
375* A node's properties should not overwrite properties that were already set.
376* Some uris were not correctly encoded in notifications.
377* The zip release ships with [sabre/vobject 3.4.4][vobj],
378  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
379  [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
380
381
3823.0.0-beta1 (2015-05-25)
383------------------------
384
385* `migrate22.php` is now called `migrate30.php`.
386* Using php-cs-fixer for automated coding standards enforcement and fixing.
387* #660: principals could break html output.
388* #662: Fixed several bugs in the `share` request parser.
389* #665: Fix a bug in serialization of complex properties in the proppatch
390  request in the client.
391* #666: expand-property report did not correctly prepend the base uri when
392  generating uris, this caused delegation to break.
393* #659: Don't throw errors when when etag-related checks are done on
394  collections.
395* Fully supporting the updated `Prefer` header syntax, as defined in
396  [rfc7240][rfc7240].
397* The zip release ships with [sabre/vobject 3.4.3][vobj],
398  [sabre/http 4.0.0][http], [sabre/event 2.0.2][evnt],
399  [sabre/uri 1.0.1][uri] and [sabre/xml 1.0.0][xml].
400
401
4023.0.0-alpha1 (2015-05-19)
403-------------------------
404
405* It's now possible to get all property information from files using the
406  browser plugin.
407* Browser plugin will now show a 'calendar export' button when the
408  ics-export plugin is enabled.
409* Some nodes that by default showed the current time as their last
410  modification time, now no longer has a last modification time.
411* CardDAV namespace was missing from default namespaceMap.
412* #646: Properties can now control their own HTML output in the browser plugin.
413* #646: Nicer HTML output for the `{DAV:}acl` property.
414* Browser plugin no longer shows a few properties that take up a lot of space,
415  but are likely not really interesting for most users.
416* #654: Added a collection, `Sabre\DAVACL\FS\HomeCollection` for automatically
417  creating a private home collection per-user.
418* Changed all MySQL columns from `VARCHAR` to `VARBINARY` where possible.
419* Improved older migration scripts a bit to allow easier testing.
420* The zip release ships with [sabre/vobject 3.4.3][vobj],
421  [sabre/http 4.0.0-alpha3][http], [sabre/event 2.0.2][evnt],
422  [sabre/uri 1.0.1][uri] and [sabre/xml 0.4.3][xml].
423
424
4252.2.0-alpha4 (2015-04-13)
426-------------------------
427
428* Complete rewrite of the XML system. We now use our own [sabre/xml][xml],
429  which has a much smarter XML Reader and Writer.
430* BC Break: It's no longer possible to instantiate the Locks plugin without
431  a locks backend. I'm not sure why this ever made sense.
432* Simplified the Locking system and fixed a bug related to if tokens checking
433  locks unrelated to the current request.
434* `FSExt` Directory and File no longer do custom property storage. This
435  functionality is already covered pretty well by the `PropertyStorage` plugin,
436  so please switch.
437* Renamed `Sabre\CardDAV\UserAddressBooks` to `Sabre\CardDAV\AddressBookHome`
438  to be more consistent with `CalendarHome` as well as the CardDAV
439  specification.
440* `Sabre\DAV\IExtendedCollection` now receives a `Sabre\DAV\MkCol` object as
441  its second argument, and no longer receives seperate properties and
442  resourcetype arguments.
443* `MKCOL` now integrates better with propertystorage plugins.
444* #623: Remove need of temporary files when working with Range requests.
445  (@dratini0)
446* The zip release ships with [sabre/vobject 3.4.2][vobj],
447  [sabre/http 4.0.0-alpha1][http], [sabre/event 2.0.1][evnt],
448  [sabre/uri 1.0.0][uri] and [sabre/xml 0.4.3][xml].
449
450
4512.2.0-alpha3 (2015-02-25)
452-------------------------
453
454* Contains all the changes introduced between 2.1.2 and 2.1.3.
455* The zip release ships with [sabre/vobject 3.4.2][vobj],
456  [sabre/http 4.0.0-alpha1][http], [sabre/event 2.0.1][evnt] and
457  [sabre/uri 1.0.0][uri].
458
459
4602.2.0-alpha2 (2015-01-09)
461-------------------------
462
463* Renamed `Sabre\DAV\Auth\Backend\BackendInterface::requireAuth` to
464  `challenge`, which is a more correct and better sounding name.
465* The zip release ships with [sabre/vobject 3.3.5][vobj],
466  [sabre/http 3.0.4][http], [sabre/event 2.0.1][evnt].
467
468
4692.2.0-alpha1 (2014-12-10)
470-------------------------
471
472* The browser plugin now has a new page with information about your sabredav
473  server, and shows information about every plugin that's loaded in the
474  system.
475* #191: The Authentication system can now support multiple authentication
476  backends.
477* Removed: all `$tableName` arguments from every PDO backend. This was already
478  deprecated, but has now been fully removed. All of these have been replaced
479  with public properties.
480* Deleted several classes that were already deprecated much earlier:
481  * `Sabre\CalDAV\CalendarRootNode`
482  * `Sabre\CalDAV\UserCalendars`
483  * `Sabre\DAV\Exception\FileNotFound`
484  * `Sabre\DAV\Locks\Backend\FS`
485  * `Sabre\DAV\PartialUpdate\IFile`
486  * `Sabre\DAV\URLUtil`
487* Removed: `Sabre\DAV\Client::addTrustedCertificates` and
488  `Sabre\DAV\Client::setVerifyPeer`.
489* Removed: `Sabre\DAV\Plugin::getPlugin()` can now no longer return plugins
490  based on its class name.
491* Removed: `Sabre\DAVACL\Plugin::getPrincipalByEmail()`.
492* #560: GuessContentType plugin will now set content-type to
493  `application/octet-stream` if a better content-type could not be determined.
494* #568: Added a `componentType` argument to `ICSExportPlugin`, allowing you to
495  specifically fetch `VEVENT`, `VTODO` or `VJOURNAL`.
496* #582: Authentication backend interface changed to be stateless. If you
497  implemented your own authentication backend, make sure you upgrade your class
498  to the latest API!
499* #582: `Sabre\DAV\Auth\Plugin::getCurrentUser()` is now deprecated. Use
500  `Sabre\DAV\Auth\Plugin::getCurrentPrincipal()` instead.
501* #193: Fix `Sabre\DAV\FSExt\Directory::getQuotaInfo()` on windows.
502
503
5042.1.11 (2016-10-06)
505-------------------
506
507* #805: It wasn't possible to create calendars that hold events, journals and
508  todos using MySQL, because the `components` column was 1 byte too small.
509* The zip release ships with [sabre/vobject 3.5.3][vobj],
510  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
511
512
5132.1.10 (2016-03-10)
514-------------------
515
516* #784: Sync logs for address books were not correctly cleaned up after
517  deleting them.
518* The zip release ships with [sabre/vobject 3.5.0][vobj],
519  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
520
521
5222.1.9 (2016-01-25)
523------------------
524
525* #674: PHP7 support (@DeepDiver1975).
526* The zip release ships with [sabre/vobject 3.5.0][vobj],
527  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
528
529
5302.1.8 (2016-01-04)
531------------------
532
533* #729: Fixed a caching problem in the Tree object.
534* #740: Bugs in `migrate20.php` script.
535* The zip release ships with [sabre/vobject 3.4.8][vobj],
536  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
537
538
5392.1.7 (2015-09-05)
540------------------
541
542* #705: A `MOVE` request that gets prevented from deleting the source resource
543  will still remove the target resource. Now all events are triggered before
544  any destructive operations.
545* The zip release ships with [sabre/vobject 3.4.7][vobj],
546  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
547
548
5492.1.6 (2015-07-21)
550------------------
551
552* #657: Migration script would break when coming a cross an iCalendar object
553  with no UID.
554* #691: Workaround for broken Windows Phone client.
555* The zip release ships with [sabre/vobject 3.4.5][vobj],
556  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
557
558
5592.1.5 (2015-07-11)
560------------------
561
562* #677: Resources with the name '0' would not get retrieved when using
563  `Depth: infinity` in a `PROPFIND` request.
564* The zip release ships with [sabre/vobject 3.4.5][vobj],
565  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
566
567
5682.1.4 (2015-05-25)
569------------------
570
571* #651: Double-encoded path in the browser plugin. Should fix a few broken
572  links in some setups.
573* #650: Correctly cleaning up change info after deleting calendars (@ErrOrnAmE).
574* #658: Updating `schedule-calendar-default-URL` does not work well, so we're
575  disabling it until there's a better fix.
576* The zip release ships with [sabre/vobject 3.4.3][vobj],
577  [sabre/http 3.0.5][http], and [sabre/event 2.0.2][evnt].
578
579
5802.1.3 (2015-02-25)
581------------------
582
583* #586: `SCHEDULE-STATUS` should not contain a reason-phrase.
584* #539: Fixed a bug related to scheduling in shared calendars.
585* #595: Support for calendar-timezone in iCalendar exports.
586* #581: findByUri would send empty prefixes to the principal backend (@soydeedo)
587* #611: Escaping a bit more HTML output in the browser plugin. (@LukasReschke)
588* #610: Don't allow discovery of arbitrary files using `..` in the browser
589  plugin (@LukasReschke).
590* Browser plugin now shows quota properties.
591* #612: PropertyStorage didn't delete properties from nodes when a node's
592  parents get deleted.
593* #581: Fixed problems related to finding attendee information during
594  scheduling.
595* The zip release ships with [sabre/vobject 3.4.2][vobj],
596  [sabre/http 3.0.4][http], and [sabre/event 2.0.1][evnt].
597
598
5992.1.2 (2014-12-10)
600------------------
601
602* #566: Another issue related to the migration script, which would cause
603  scheduling to not work well for events that were already added before the
604  migration.
605* #567: Doing freebusy requests on accounts that had 0 calendars would throw
606  a `E_NOTICE`.
607* #572: `HEAD` requests trigger a PHP warning.
608* #579: Browser plugin can throw exception for a few resourcetypes that didn't
609  have an icon defined.
610* The zip release ships with [sabre/vobject 3.3.4][vobj],
611  [sabre/http 3.0.4][http], and [sabre/event 2.0.1][evnt].
612
613
6142.1.1 (2014-11-22)
615------------------
616
617* #561: IMip Plugin didn't strip mailto: from email addresses.
618* #566: Migration process had 2 problems related to adding the `uid` field
619  to the `calendarobjects` table.
620* The zip release ships with [sabre/vobject 3.3.4][vobj],
621  [sabre/http 3.0.2][http], and [sabre/event 2.0.1][evnt].
622
623
6242.1.0 (2014-11-19)
625------------------
626
627* #541: CalDAV PDO backend didn't respect overridden PDO table names.
628* #550: Scheduling invites are no longer delivered into shared calendars.
629* #554: `calendar-multiget` `REPORT` did not work on inbox items.
630* #555: The `calendar-timezone` property is now respected for floating times
631  and all-day events in the `calendar-query`, `calendar-multiget` and
632  `free-busy-query` REPORTs.
633* #555: The `calendar-timezone` property is also respected for scheduling
634  free-busy requests.
635* #547: CalDAV system too aggressively 'corrects' incoming iCalendar data, and
636  as a result doesn't return an etag for common cases.
637* The zip release ships with [sabre/vobject 3.3.4][vobj],
638  [sabre/http 3.0.2][http], and [sabre/event 2.0.1][evnt].
639
640
6412.1.0-alpha2 (2014-10-23)
642-------------------------
643
644* Added: calendar-user-address-set to default principal search properties
645  list. This should fix iOS attendee autocomplete support.
646* Changed: Moved all 'notifications' functionality from `Sabre\CalDAV\Plugin`
647  to a new plugin: `Sabre\CalDAV\Notifications\Plugin`. If you want to use
648  notifications-related functionality, just add this plugin.
649* Changed: Accessing the caldav inbox, outbox or notification collection no
650  longer triggers getCalendarsForUser() on backends.
651* #533: New invites are no longer delivered to taks-only calendars.
652* #538: Added `calendarObjectChange` event.
653* Scheduling speedups.
654* #539: added `afterResponse` event. (@joserobleda)
655* Deprecated: All the "tableName" constructor arguments for all the PDO
656  backends are now deprecated. They still work, but will be removed in the
657  next major sabredav version. Every argument that is now deprecated can now
658  be accessed as a public property on the respective backends.
659* #529: Added getCalendarObjectByUID to PDO backend, speeding up scheduling
660  operations on large calendars.
661* The zip release ships with [sabre/vobject 3.3.3][vobj],
662  [sabre/http 3.0.2][http], and [sabre/event 2.0.1][evnt].
663
664
6652.1.0-alpha1 (2014-09-23)
666-------------------------
667
668* Added: Support for [rfc6638][rfc6638], also known as CalDAV Scheduling.
669* Added: Automatically converting between vCard 3, 4 and jCard using the
670  `Accept:` header, in CardDAV reports, and automatically converting from
671  jCard to vCard upon `PUT`. It's important to note that your backends _may_
672  now receive both vCard 3.0 and 4.0.
673* Added: #444. Collections can now opt-in to support high-speed `MOVE`.
674* Changed: PropertyStorage backends now have a `move` method.
675* Added: `beforeMove`, and `afterMove` events.
676* Changed: A few database changes for the CalDAV PDO backend. Make sure you
677  run `bin/migrate21.php` to upgrade your database schema.
678* Changed: CalDAV backends have a new method: `getCalendarObjectByUID`. This
679  method MUST be implemented by all backends, but the `AbstractBackend` has a
680  simple default implementation for this.
681* Changed: `Sabre\CalDAV\UserCalendars` has been renamed to
682  `Sabre\CalDAV\CalendarHome`.
683* Changed: `Sabre\CalDAV\CalendarRootNode` has been renamed to
684  `Sabre\CalDAV\CalendarRoot`.
685* Changed: The IMipHandler has been completely removed. With CalDAV scheduling
686  support, it is no longer needed. It's functionality has been replaced by
687  `Sabre\CalDAV\Schedule\IMipPlugin`, which can now send emails for clients
688  other than iCal.
689* Removed: `Sabre\DAV\ObjectTree` and `Sabre\DAV\Tree\FileSystem`. All this
690  functionality has been merged into `Sabre\DAV\Tree`.
691* Changed: PrincipalBackend now has a findByUri method.
692* Changed: `PrincipalBackend::searchPrincipals` has a new optional `test`
693  argument.
694* Added: Support for the `{http://calendarserver.org/ns/}email-address-set`
695  property.
696* #460: PropertyStorage must move properties during `MOVE` requests.
697* Changed: Restructured the zip distribution to be a little bit more lean
698  and consistent.
699* #524: Full support for the `test="anyof"` attribute in principal-search
700  `REPORT`.
701* #472: Always returning lock tokens in the lockdiscovery property.
702* Directory entries in the Browser plugin are sorted by type and name.
703  (@aklomp)
704* #486: It's now possible to return additional properties when an 'allprop'
705  PROPFIND request is being done. (@aklomp)
706* Changed: Now return HTTP errors when an addressbook-query REPORT is done
707  on a uri that's not a vcard. This should help with debugging this common
708  mistake.
709* Changed: `PUT` requests with a `Content-Range` header now emit a 400 status
710  instead of 501, as per RFC7231.
711* Added: Browser plugin can now display the contents of the
712  `{DAV:}supported-privilege-set` property.
713* Added: Now reporting `CALDAV:max-resource-size`, but we're not actively
714  restricting it yet.
715* Changed: CalDAV plugin is now responsible for reporting
716  `CALDAV:supported-collation-set` and `CALDAV:supported-calendar-data`
717  properties.
718* Added: Now reporting `CARDDAV:max-resource-size`, but we're not actively
719  restricting it yet.
720* Added: Support for `CARDDAV:supported-collation-set`.
721* Changed: CardDAV plugin is now responsible for reporting
722  `CARDDAV:supported-address-data`. This functionality has been removed from
723  the CardDAV PDO backend.
724* When a REPORT is not supported, we now emit HTTP error 415, instead of 403.
725* #348: `HEAD` requests now work wherever `GET` also works.
726* Changed: Lower priority for the iMip plugins `schedule` event listener.
727* Added: #523 Custom CalDAV backends can now mark any calendar as read-only.
728* The zip release ships with [sabre/vobject 3.3.3][vobj],
729  [sabre/http 3.0.0][http], and [sabre/event 2.0.0][evnt].
730
731
7322.0.9 (2015-09-04)
733------------------
734
735* #705: A `MOVE` request that gets prevented from deleting the source resource
736  will still remove the target resource. Now all events are triggered before
737  any destructive operations.
738* The zip release ships with [sabre/vobject 3.4.6][vobj],
739  [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
740
741
742
7432.0.8 (2015-07-11)
744------------------
745
746* #677: Resources with the name '0' would not get retrieved when using
747  `Depth: infinity` in a `PROPFIND` request.
748* The zip release ships with [sabre/vobject 3.3.5][vobj],
749  [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
750
751
7522.0.7 (2015-05-25)
753------------------
754
755* #650: Correctly cleaning up change info after deleting calendars (@ErrOrnAmE).
756* The zip release ships with [sabre/vobject 3.3.4][vobj],
757  [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
758
759
7602.0.6 (2014-12-10)
761------------------
762
763* Added `Sabre\CalDAV\CalendarRoot` as an alias for
764  `Sabre\CalDAV\CalendarRootNode`. The latter is going to be deprecated in 2.1,
765  so this makes it slightly easier to write code that works in both branches.
766* #497: Making sure we're initializing the sync-token field with a value after
767  migration.
768* The zip release ships with [sabre/vobject 3.3.4][vobj],
769  [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
770
771
7722.0.5 (2014-10-14)
773------------------
774
775* #514: CalDAV PDO backend didn't work when overriding the 'calendar changes'
776  database table name.
777* #515: 304 status code was not being sent when checking preconditions.
778* The zip release ships with [sabre/vobject 3.3.3][vobj],
779  [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
780
781
7822.0.4 (2014-08-27)
783------------------
784
785* #483: typo in calendars creation for PostgreSQL.
786* #487: Locks are now automatically removed after a node has been deleted.
787* #496: Improve CalDAV and CardDAV sync when there is no webdav-sync support.
788* Added: Automatically mapping internal sync-tokens to getctag.
789* The zip release ships with [sabre/vobject 3.3.1][vobj],
790  [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
791
792
7932.0.3 (2014-07-14)
794------------------
795
796* #474: Fixed PropertyStorage `pathFilter()`.
797* #476: CSP policy incorrect, causing stylesheets to not load in the browser
798  plugin.
799* #475: Href properties in the browser plugin sometimes included a backslash.
800* #478: `TooMuchMatches` exception never worked. This was fixed, and we also
801  took this opportunity to rename it to `TooManyMatches`.
802* The zip release ships with [sabre/vobject 3.2.4][vobj],
803  [sabre/http 2.0.4][http], and [sabre/event 1.0.1][evnt].
804
805
8062.0.2 (2014-06-12)
807------------------
808
809* #470: Fixed compatibility with PHP < 5.4.14.
810* #467: Fixed a problem in `examples/calendarserver.php`.
811* #466: All the postgresql sample files have been updated.
812* Fixed: An error would be thrown if a client did a propfind on a node the
813  user didn't have access to.
814* Removed: Old and broken example code from the `examples/` directory.
815* The zip release ships with [sabre/vobject 3.2.3][vobj],
816  [sabre/http 2.0.3][http], and [sabre/event 1.0.1][evnt].
817
818
8192.0.1 (2014-05-28)
820------------------
821
822* #459: PROPFIND requests on Files with no Depth header would return a fatal
823  error.
824* #464: A PROPFIND allprops request should not return properties with status
825  404.
826* The zip release ships with [sabre/vobject 3.2.2][vobj],
827  [sabre/http 2.0.3][http], and [sabre/event 1.0.0][evnt].
828
829
8302.0.0 (2014-05-22)
831------------------
832
833* The zip release ships with [sabre/vobject 3.2.2][vobj],
834  [sabre/http 2.0.3][http], and [sabre/event 1.0.0][evnt].
835* Fixed: #456: Issue in sqlite migration script.
836* Updated: MySQL database schema optimized by using more efficient column types.
837* Cleaned up browser design.
838
839
8402.0.0-beta1 (2014-05-15)
841-------------------------
842
843* The zip release ships with [sabre/vobject 3.2.2][vobj],
844  [sabre/http 2.0.3][http], and [sabre/event 1.0.0][evnt].
845* BC Break: Property updating and fetching got refactored. Read the [migration
846  document][mi20] for more information. This allows for creation of a generic
847  property storage, and other property-related functionality that was not
848  possible before.
849* BC Break: Removed `propertyUpdate`, `beforeGetProperties` and
850  `afterGetProperties` events.
851* Fixed: #413: Memory optimizations for the CardDAV PDO backend.
852* Updated: Brand new browser plugin with more debugging features and a design
853  that is slightly less painful.
854* Added: Support for the `{DAV:}supported-method-set` property server-wide.
855* Making it easier for implementors to override how the CardDAV addressbook
856  home is located.
857* Fixed: Issue #422 Preconditions were not being set on PUT on non-existent
858  files. Not really a chance for data-loss, but incorrect nevertheless.
859* Fixed: Issue #428: Etag check with `If:` fails if the target is a collection.
860* Fixed: Issues #430, #431, #433: Locks plugin didn't not properly release
861  filesystem based locks.
862* Fixed: #443. Support for creating new calendar subscriptions for OS X 10.9.2
863  and up.
864* Removed: `Sabre\DAV\Server::NODE_*` constants.
865* Moved all precondition checking into a central place, instead of having to
866  think about it on a per-method basis.
867* jCal transformation for calendar-query REPORT now works again.
868* Switched to PSR-4
869* Fixed: #175. Returning ETag header upon a failed `If-Match` or
870  `If-None-Match` check.
871* Removed: `lib/Sabre/autoload.php`. Use `vendor/autoload.php` instead.
872* Removed: all the rfc documentation from the sabre/dav source. This made the
873  package needlessly larger.
874* Updated: Issue #439. Lots of updates in PATCH support. The
875  Sabre_DAV_PartialUpdate_IFile interface is now deprecated and will be
876  removed in a future version.
877* Added: `Sabre\DAV\Exception\LengthRequired`.
878
8791.9.0-alpha2 (2014-01-14)
880-------------------------
881
882* The zip release ships with sabre/vobject 3.1.3, sabre/http 2.0.1, and
883  sabre/event 1.0.0.
884* Added: Browser can now inspect any node, if ?sabreaction=browser is appended.
885* Fixed: Issue #178. Support for multiple items in the Timeout header.
886* Fixed: Issue #382. Stricter checking if calendar-query is allowed to run.
887* Added: Depth: Infinity support for PROPFIND request. Thanks Thomas Müller and
888  Markus Goetz.
889
890
8911.9.0-alpha1 (2013-11-07)
892-------------------------
893
894* The zip release ships with sabre/vobject 3.1.3, sabre/http 2.0.0alpha5, and
895  sabre/event 1.0.0.
896* BC Break: The CardDAV and CalDAV BackendInterface each have a new method:
897  getMultipleCards and getMultipleCalendarObjects. The Abstract and PDO backends
898  have default implementations, but if you implement that interface directly,
899  this method is now required.
900* BC Break: XML property classes now receive an extra argument in their
901  unserialize method ($propertyMap). This allows for recursively parsing
902  properties, if needed.
903* BC Break: Now using sabre/event for event emitting/subscription. For plugin
904  authors this means Server::subscribeEvent is now Server::on, and
905  Server::broadcastEvent is now Server::emit.
906* BC Break: Almost all core functionality moved into a CorePlugin.
907* BC Break: Most events triggered by the server got an overhaul.
908* Changed: Sabre\HTTP now moved into a dedicated sabre/http package.
909* Added: Support for WebDAV-sync (rfc6578).
910* Added: Support for caldav-subscriptions, which is an easy way for caldav
911  clients to manage a list of subscriptions on the server.
912* Added: Support for emitting and receiving jCal instead of iCalendar for
913  CalDAV.
914* Added: BasicCallback authenticaton backend, for creating simple authentication
915  systems without having to define any classes.
916* Added: A $transactionType property on the server class. This can be used for
917  logging and performance measuring purposes.
918* Fixed: If event handlers modify the request body from a PUT request, an ETag
919  is no longer sent back.
920* Added: Sabre\DAV\IMultiGet to optimize requests that retrieve information
921  about lists of resources.
922* Added: MultiGet support to default CalDAV and CardDAV backends, speeding up
923  the multiget and sync reports quite a bit!
924* Added: ICSExportPlugin can now generate jCal, filter on time-ranges and expand
925  recurrences.
926* Fixed: Read-only access to calendars still allows the sharee to modify basic
927  calendar properties, such as the displayname and color.
928* Changed: The default supportedPrivilegeSet has changed. Most privileges are no
929  longer marked as abstract.
930* Changed: More elegant ACL management for CalendarObject and Card nodes.
931* Added: Browser plugin now marks a carddav directory as type Directory, and a
932  shared calendar as 'Shared'.
933* Added: When debugExceptions is turned on, all previous exceptions are also
934  traversed.
935* Removed: Got rid of the Version classes for CalDAV, CardDAV, HTTP, and DAVACL.
936  Now that there's no separate packages anymore, this makes a bit more sense.
937* Added: Generalized the multistatus response parser a bit more, for better
938  re-use.
939* Added: Sabre\DAV\Client now has support for complex properties for PROPPATCH.
940  (Issue #299).
941* Added: Sabre\DAV\Client has support for gzip and deflate encoding.
942* Added: Sabre\DAV\Client now has support for sending objects as streams.
943* Added: Deserializer for {DAV:}current-user-privilege-set.
944* Added: Addressbooks or backends can now specify custom acl rules when creating
945  cards.
946* Added: The ability for plugins to validate custom tokens in If: headers.
947* Changed: Completely refactored the Lock plugin to deal with the new If: header
948  system.
949* Added: Checking preconditions for MOVE, COPY, DELETE and PROPPATCH methods.
950* Added: has() method on DAV\Property\SupportedReportSet.
951* Added: If header now gets checked (with ETag) all the time. Before the dealing
952  with the If-header was a responsibility of the Locking plugin.
953* Fixed: Outbox access for delegates.
954* Added: Issue 333: It's now possible to override the calendar-home in the
955  CalDAV plugin.
956* Added: A negotiateContentType to HTTP\Request. A convenience method.
957* Fixed: Issue 349: Denying copying or moving a resource into it's own subtree.
958* Fixed: SabreDAV catches every exception again.
959* Added: Issue #358, adding a component=vevent parameter to the content-types
960  for calendar objects, if the caldav backend provides this info.
961
962
9631.8.12-stable (2015-01-21)
964--------------------------
965
966* The zip release ships with sabre/vobject 2.1.7.
967* #568: Support empty usernames and passwords in basic auth.
968
969
9701.8.11 (2014-12-10)
971-------------------
972
973* The zip release ships with sabre/vobject 2.1.6.
974* Updated: MySQL database schema optimized by using more efficient column types.
975* #516: The DAV client will now only redirect to HTTP and HTTPS urls.
976
977
9781.8.10 (2014-05-15)
979-------------------
980
981* The zip release ships with sabre/vobject 2.1.4.
982* includes changes from version 1.7.12.
983
984
9851.8.9 (2014-02-26)
986------------------
987
988* The zip release ships with sabre/vobject 2.1.3.
989* includes changes from version 1.7.11.
990
991
9921.8.8 (2014-02-09)
993------------------
994
995* includes changes from version 1.7.10.
996* The zip release ships with sabre/vobject 2.1.3.
997
9981.8.7 (2013-10-02)
999------------------
1000
1001* the zip release ships with sabre/vobject 2.1.3.
1002* includes changes from version 1.7.9.
1003
1004
10051.8.6 (2013-06-18)
1006------------------
1007
1008* The zip release ships with sabre/vobject 2.1.0.
1009* Includes changes from version 1.7.8.
1010
1011
10121.8.5 (2013-04-11)
1013------------------
1014
1015* The zip release ships with sabre/vobject 2.0.7.
1016* Includes changes from version 1.7.7.
1017
1018
10191.8.4 (2013-04-08)
1020------------------
1021
1022* The zip release ships with sabre/vobject 2.0.7.
1023* Includes changes from version 1.7.6.
1024
1025
10261.8.3 (2013-03-01)
1027------------------
1028
1029* The zip release ships with sabre/vobject 2.0.6.
1030* Includes changes from version 1.7.5.
1031* Fixed: organizer email-address for shared calendars is now prefixed with
1032  mailto:, as it should.
1033
1034
10351.8.2 (2013-01-19)
1036------------------
1037
1038* The zip release ships with sabre/vobject 2.0.5.
1039* Includes changes from version 1.7.4.
1040
1041
10421.8.1 (2012-12-01)
1043------------------
1044
1045* The zip release ships with sabre/vobject 2.0.5.
1046* Includes changes from version 1.7.3.
1047* Fixed: Typo in 1.7 migration script caused it to fail.
1048
1049
10501.8.0 (2012-11-08)
1051------------------
1052
1053* The zip release ships with sabre/vobject 2.0.5.
1054* BC Break: Moved the entire codebase to PHP namespaces.
1055* BC Break: Every backend package (CalDAV, CardDAV, Auth, Locks, Principals) now
1056  has consistent naming conventions. There's a BackendInterface, and an
1057  AbstractBackend class.
1058* BC Break: Changed a bunch of constructor signatures in the CalDAV package, to
1059  reduce dependencies on the ACL package.
1060* BC Break: Sabre_CalDAV_ISharedCalendar now also has a getShares method, so
1061  sharees can figure out who is also on a shared calendar.
1062* Added: Sabre_DAVACL_IPrincipalCollection interface, to advertise support for
1063  principal-property-search on any node.
1064* Added: Simple console script to fire up a fileserver in the current directory
1065  using PHP 5.4's built-in webserver.
1066* Added: Sharee's can now also read out the list of invites for a shared
1067  calendar.
1068* Added: The Proxy principal classes now both implement an interface, for
1069  greater flexibility.
1070
1071
10721.7.13 (2014-07-28)
1073-------------------
1074
1075* The zip release ships with sabre/vobject 2.1.4.
1076* Changed: Removed phing and went with a custom build script for now.
1077
1078
10791.7.12 (2014-05-15)
1080-------------------
1081
1082* The zip release ships with sabre/vobject 2.1.4.
1083* Updated: Issue #439. Lots of updates in PATCH support. The
1084  Sabre_DAV_PartialUpdate_IFile interface is now deprecated and will be removed
1085  in a future version.
1086* Fixed: Restoring old setting after changing libxml_disable_entity_loader.
1087* Fixed: Issue #422: Preconditions were not being set on PUT on non-existent
1088  files. Not really a chance for data-loss, but incorrect nevertheless.
1089* Fixed: Issue #427: Now checking preconditions on DELETE requests.
1090* Fixed: Issue #428: Etag check with If: fails if the target is a collection.
1091* Fixed: Issue #393: PATCH request with missing end-range was handled
1092  incorrectly.
1093* Added: Sabre_DAV_Exception_LengthRequired to omit 411 errors.
1094
1095
10961.7.11 (2014-02-26)
1097-------------------
1098
1099* The zip release ships with sabre/vobject 2.1.3.
1100* Fixed: Issue #407: large downloads failed.
1101* Fixed: Issue #414: XXE security problem on older PHP versions.
1102
1103
11041.7.10 (2014-02-09)
1105-------------------
1106
1107* Fixed: Issue #374: Don't urlescape colon (:) when it's not required.
1108* Fixed: Potential security vulnerability in the http client.
1109
1110
11111.7.9 (2013-10-02)
1112------------------
1113
1114* The zip release ships with sabre/vobject 2.1.3.
1115* Fixed: Issue #365. Incorrect output when principal urls have spaces in them.
1116* Added: Issue #367: Automatically adding a UID to vcards that don't have them.
1117
1118
11191.7.8 (2013-06-17)
1120------------------
1121
1122* The zip release ships with sabre/vobject 2.1.0.
1123* Changed: Sabre\DAV\Client::verifyPeer is now a protected property (instead of
1124  private).
1125* Fixed: Text was incorrectly escaped in the Href and HrefList properties,
1126  disallowing urls with ampersands (&) in them.
1127* Added: deserializer for Sabre\DAVACL\Property\CurrentUserPrivilegeSet.
1128* Fixed: Issue 335: Client only deserializes properties with status 200.
1129* Fixed: Issue 341: Escaping xml in 423 Locked error responses.
1130* Added: Issue 339: beforeGetPropertiesForPath event.
1131
1132
11331.7.7 (2013-04-11)
1134------------------
1135
1136* The zip release ships with sabre/vobject 2.0.7.
1137* Fixed: Assets in the browser plugins were not being served on windows
1138  machines.
1139
1140
11411.7.6 (2013-04-08)
1142------------------
1143
1144* The zip release ships with sabre/vobject 2.0.7.
1145* Fixed: vcardurl in database schema can now hold 255 characters instead of 80
1146  (which is often way to small).
1147* Fixed: The browser plugin potentially allowed people to open any arbitrary
1148  file on windows servers (CVE-2013-1939).
1149
1150
11511.7.5 (2013-03-01)
1152------------------
1153
1154* The zip release ships with sabre/vobject 2.0.6.
1155* Change: No longer advertising support for 4.0 vcards. iOS and OS X address
1156  book don't handle this well, and just advertising 3.0 support seems like the
1157  most logical course of action.
1158* Added: ->setVerifyPeers to Sabre_DAV_Client (greatly resisting against it,
1159  don't use this..).
1160
1161
11621.7.4 (2013-01-19)
1163------------------
1164
1165* The zip release ships with sabre/vobject 2.0.5.
1166* Changed: To be compatible with MS Office 2011 for Mac, a workaround was
1167  removed that was added to support old versions of Windows XP (pre-SP3).
1168  Indeed! We needed a crazy workaround to work with one MS product in the past,
1169  and we can't keep that workaround to be compatible with another MS product.
1170* Fixed: expand-properties REPORT had incorrect values for the href element.
1171* Fixed: Range requests now work for non-seekable streams. (Thanks Alfred
1172  Klomp).
1173* Fixed: Changed serialization of {DAV:}getlastmodified and {DAV:}supportedlock
1174  to improve compatibility with MS Office 2011 for Mac.
1175* Changed: reverted the automatic translation of 'DAV:' xml namespaces to
1176  'urn:DAV' when parsing files. Issues were reported with libxml 2.6.32, on a
1177  relatively recent debian release, so we'll wait till 2015 to take this one out
1178  again.
1179* Added: Sabre_DAV_Exception_ServiceUnavailable, for emitting 503's.
1180
1181
11821.7.3 (2012-12-01)
1183------------------
1184
1185* The zip release ships with sabre/vobject 2.0.5.
1186* Fixed: Removing double slashes from getPropertiesForPath.
1187* Change: Marked a few more properties in the CardDAV as protected, instead of
1188  private.
1189* Fixed: SharingPlugin now plays nicer with other plugins with similar
1190  functionality.
1191* Fixed: Issue 174. Sending back HTTP/1.0 for requests with this version.
1192
1193
11941.7.2 (2012-11-08)
1195------------------
1196
1197* The zip release ships with sabre/vobject 2.0.5.
1198* Added: ACL plugin advertises support for 'calendarserver-principal-
1199  property-search'.
1200* Fixed: [#153] Allowing for relative http principals in iMip requests.
1201* Added: Support for cs:first-name and cs:last-name properties in sharing
1202  invites.
1203* Fixed: Made a bunch of properties protected, where they were private before.
1204* Added: Some non-standard properties for sharing to improve compatibility.
1205* Fixed: some bugfixes in postgres sql script.
1206* Fixed: When requesting some properties using PROPFIND, they could show up as
1207  both '200 Ok' and '403 Forbidden'.
1208* Fixed: calendar-proxy principals were not checked for deeper principal
1209  membership than 1 level.
1210* Fixed: setGroupMemberSet argument now correctly receives relative principal
1211  urls, instead of the absolute ones.
1212* Fixed: Server class will filter out any bonus properties if any extra were
1213  returned. This means the implementor of the IProperty class can be a bit
1214  lazier when implementing. Note: bug numbers after this line refer to Google
1215  Code tickets. We're using github now.
1216
1217
12181.7.1 (2012-10-07)
1219------------------
1220
1221* Fixed: include path problem in the migration script.
1222
1223
12241.7.0 (2012-10-06)
1225------------------
1226
1227* BC Break: The calendarobjects database table has a bunch of new fields, and a
1228  migration script is required to ensure everything will keep working. Read the
1229  wiki for more details.
1230* BC Break: The ICalendar interface now has a new method: calendarQuery.
1231* BC Break: In this version a number of classes have been deleted, that have
1232  been previously deprecated. Namely: - Sabre_DAV_Directory (now:
1233  Sabre_DAV_Collection) - Sabre_DAV_SimpleDirectory (now:
1234  Sabre_DAV_SimpleCollection)
1235* BC Break: Sabre_CalDAV_Schedule_IMip::sendMessage now has an extra argument.
1236  If you extended this class, you should fix this method. It's only used for
1237  informational purposes.
1238* BC Break: The DAV: namespace is no longer converted to urn:DAV. This was a
1239  workaround for a bug in older PHP versions (pre-5.3).
1240* Removed: Sabre.includes.php was deprecated, and is now removed.
1241* Removed: Sabre_CalDAV_Server was deprecated, and is now removed. Please use
1242  Sabre_DAV_Server and check the examples in the examples/ directory.
1243* Changed: The Sabre_VObject library now spawned into it's own project! The
1244  VObject library is still included in the SabreDAV zip package.
1245* Added: Experimental interfaces to allow implementation of caldav-sharing. Note
1246  that no implementation is provided yet, just the api hooks.
1247* Added: Free-busy reporting compliant with the caldav-scheduling standard. This
1248  allows iCal and other clients to fetch other users' free-busy data.
1249* Added: Experimental NotificationSupport interface to add caldav notifications.
1250* Added: VCF Export plugin. If enabled, it can generate an export of an entire
1251  addressbook.
1252* Added: Support for PATCH using a SabreDAV format, to live-patch files.
1253* Added: Support for Prefer: return-minimal and Brief: t headers for PROPFIND
1254  and PROPPATCH requests.
1255* Changed: Responsibility for dealing with the calendar-query is now moved from
1256  the CalDAV plugin to the CalDAV backends. This allows for heavy optimizations.
1257* Changed: The CalDAV PDO backend is now a lot faster for common calendar
1258  queries.
1259* Changed: We are now using the composer autoloader.
1260* Changed: The CalDAV backend now all implement an interface.
1261* Changed: Instead of Sabre_DAV_Property, Sabre_DAV_PropertyInterface is now the
1262  basis of every property class.
1263* Update: Caching results for principal lookups. This should cut down queries
1264  and performance for a number of heavy requests.
1265* Update: ObjectTree caches lookups much more aggresively, which will help
1266  especially speeding up a bunch of REPORT queries.
1267* Added: Support for the schedule-calendar-transp property.
1268* Fixed: Marking both the text/calendar and text/x-vcard as UTF-8 encoded.
1269* Fixed: Workaround for the SOGO connector, as it doesn't understand receiving
1270  "text/x-vcard; charset=utf-8" for a contenttype.
1271* Added: Sabre_DAV_Client now throws more specific exceptions in cases where we
1272  already has an exception class.
1273* Added: Sabre_DAV_PartialUpdate. This plugin allows you to use the PATCH method
1274  to update parts of a file.
1275* Added: Tons of timezone name mappings for Microsoft Exchange.
1276* Added: Support for an 'exception' event in the server class.
1277* Fixed: Uploaded VCards without a UID are now rejected. (thanks Dominik!)
1278* Fixed: Rejecting calendar objects if they are not in the
1279  supported-calendar-component list. (thanks Armin!)
1280* Fixed: Issue 219: serialize() now reorders correctly.
1281* Fixed: Sabre_DAV_XMLUtil no longer returns empty $dom->childNodes if there is
1282  whitespace in $dom.
1283* Fixed: Returning 409 Conflict instead of 500 when an attempt is made to create
1284  a file as a child of something that's not a collection.
1285* Fixed: Issue 237: xml-encoding values in SabreDAV error responses.
1286* Fixed: Returning 403, instead of 501 when an unknown REPORT is requested.
1287* Fixed: Postfixing slash on {DAV:}owner properties.
1288* Fixed: Several embarrassing spelling mistakes in docblocks.
1289
1290
12911.6.10 (2013-06-17)
1292-------------------
1293
1294* Fixed: Text was incorrectly escaped in the Href and HrefList properties,
1295  disallowing urls with ampersands (&) in them.
1296* Fixed: Issue 341: Escaping xml in 423 Locked error responses.
1297
1298
12991.6.9 (2013-04-11)
1300------------------
1301
1302* Fixed: Assets in the browser plugins were not being served on windows
1303  machines.
1304
1305
13061.6.8 (2013-04-08)
1307------------------
1308
1309* Fixed: vcardurl in database schema can now hold 255 characters instead of 80
1310  (which is often way to small).
1311* Fixed: The browser plugin potentially allowed people to open any arbitrary
1312  file on windows servers. (CVE-2013-1939).
1313
1314
13151.6.7 (2013-03-01)
1316------------------
1317
1318* Change: No longer advertising support for 4.0 vcards. iOS and OS X address
1319  book don't handle this well, and just advertising 3.0 support seems like the
1320  most logical course of action.
1321* Added: ->setVerifyPeers to Sabre_DAV_Client (greatly resisting against it,
1322  don't use this..).
1323
1324
13251.6.6 (2013-01-19)
1326------------------
1327
1328* Fixed: Backported a fix for broken XML serialization in error responses.
1329  (Thanks @DeepDiver1975!)
1330
1331
13321.6.5 (2012-10-04)
1333------------------
1334
1335* Fixed: Workaround for line-ending bug OS X 10.8 addressbook has.
1336* Added: Ability to allow users to set SSL certificates for the Client class.
1337  (Thanks schiesbn!).
1338* Fixed: Directory indexes with lots of nodes should be a lot faster.
1339* Fixed: Issue 235: E_NOTICE thrown when doing a propfind request with
1340  Sabre_DAV_Client, and no valid properties are returned.
1341* Fixed: Issue with filtering on alarms in tasks.
1342
1343
13441.6.4 (2012-08-02)
1345------------------
1346
1347* Fixed: Issue 220: Calendar-query filters may fail when filtering on alarms, if
1348  an overridden event has it's alarm removed.
1349* Fixed: Compatibility for OS/X 10.8 iCal in the IMipHandler.
1350* Fixed: Issue 222: beforeWriteContent shouldn't be called for lock requests.
1351* Fixed: Problem with POST requests to the outbox if mailto: was not lower
1352  cased.
1353* Fixed: Yearly recurrence rule expansion on leap-days no behaves correctly.
1354* Fixed: Correctly checking if recurring, all-day events with no dtstart fall in
1355  a timerange if the start of the time-range exceeds the start of the instance
1356  of an event, but not the end.
1357* Fixed: All-day recurring events wouldn't match if an occurence ended exactly
1358  on the start of a time-range.
1359* Fixed: HTTP basic auth did not correctly deal with passwords containing colons
1360  on some servers.
1361* Fixed: Issue 228: DTEND is now non-inclusive for all-day events in the
1362  calendar-query REPORT and free-busy calculations.
1363
1364
13651.6.3 (2012-06-12)
1366------------------
1367
1368* Added: It's now possible to specify in Sabre_DAV_Client which type of
1369  authentication is to be used.
1370* Fixed: Issue 206: Sabre_DAV_Client PUT requests are fixed.
1371* Fixed: Issue 205: Parsing an iCalendar 0-second date interval.
1372* Fixed: Issue 112: Stronger validation of iCalendar objects. Now making sure
1373  every iCalendar object only contains 1 component, and disallowing vcards,
1374  forcing every component to have a UID.
1375* Fixed: Basic validation for vcards in the CardDAV plugin.
1376* Fixed: Issue 213: Workaround for an Evolution bug, that prevented it from
1377  updating events.
1378* Fixed: Issue 211: A time-limit query on a non-relative alarm trigger in a
1379  recurring event could result in an endless loop.
1380* Fixed: All uri fields are now a maximum of 200 characters. The Bynari outlook
1381  plugin used much longer strings so this should improve compatibility.
1382* Fixed: Added a workaround for a bug in KDE 4.8.2 contact syncing. See
1383  https://bugs.kde.org/show_bug.cgi?id=300047
1384* Fixed: Issue 217: Sabre_DAV_Tree_FileSystem was pretty broken.
1385
1386
13871.6.2 (2012-04-16)
1388------------------
1389
1390* Fixed: Sabre_VObject_Node::$parent should have been public.
1391* Fixed: Recurrence rules of events are now taken into consideration when doing
1392  time-range queries on alarms.
1393* Fixed: Added a workaround for the fact that php's DateInterval cannot parse
1394  weeks and days at the same time.
1395* Added: Sabre_DAV_Server::$exposeVersion, allowing you to hide SabreDAV's
1396  version number from various outputs.
1397* Fixed: DTSTART values would be incorrect when expanding events.
1398* Fixed: DTSTART and DTEND would be incorrect for expansion of WEEKLY BYDAY
1399  recurrences.
1400* Fixed: Issue 203: A problem with overridden events hitting the exact date and
1401  time of a subsequent event in the recurrence set.
1402* Fixed: There was a problem with recurrence rules, for example the 5th tuesday
1403  of the month, if this day did not exist.
1404* Added: New HTTP status codes from draft-nottingham-http-new-status-04.
1405
1406
14071.6.1 (2012-03-05)
1408------------------
1409
1410* Added: createFile and put() can now return an ETag.
1411* Added: Sending back an ETag on for operations on CardDAV backends. This should
1412  help with OS X 10.6 Addressbook compatibility.
1413* Fixed: Fixed a bug where an infinite loop could occur in the recurrence
1414  iterator if the recurrence was YEARLY, with a BYMONTH rule, and either BYDAY
1415  or BYMONTHDAY match the first day of the month.
1416* Fixed: Events that are excluded using EXDATE are still counted in the COUNT=
1417  parameter in the RRULE property.
1418* Added: Support for time-range filters on VALARM components.
1419* Fixed: Correctly filtering all-day events.
1420* Fixed: Sending back correct mimetypes from the browser plugin (thanks
1421  Jürgen).
1422* Fixed: Issue 195: Sabre_CardDAV pear package had an incorrect dependency.
1423* Fixed: Calendardata would be destroyed when performing a MOVE request.
1424
1425
14261.6.0 (2012-02-22)
1427------------------
1428
1429* BC Break: Now requires PHP 5.3
1430* BC Break: Any node that implemented Sabre_DAVACL_IACL must now also implement
1431  the getSupportedPrivilegeSet method. See website for details.
1432* BC Break: Moved functions from Sabre_CalDAV_XMLUtil to
1433  Sabre_VObject_DateTimeParser.
1434* BC Break: The Sabre_DAVACL_IPrincipalCollection now has two new methods:
1435  'searchPrincipals' and 'updatePrincipal'.
1436* BC Break: Sabre_DAV_ILockable is removed and all related per-node locking
1437  functionality.
1438* BC Break: Sabre_DAV_Exception_FileNotFound is now deprecated in favor of
1439  Sabre_DAV_Exception_NotFound. The former will be removed in a later version.
1440* BC Break: Removed Sabre_CalDAV_ICalendarUtil, use Sabre_VObject instead.
1441* BC Break: Sabre_CalDAV_Server is now deprecated, check out the documentation
1442  on how to setup a caldav server with just Sabre_DAV_Server.
1443* BC Break: Default Principals PDO backend now needs a new field in the
1444  'principals' table. See the website for details.
1445* Added: Ability to create new calendars and addressbooks from within the
1446  browser plugin.
1447* Added: Browser plugin: icons for various nodes.
1448* Added: Support for FREEBUSY reports!
1449* Added: Support for creating principals with admin-level privileges.
1450* Added: Possibility to let server send out invitation emails on behalf of
1451  CalDAV client, using Sabre_CalDAV_Schedule_IMip.
1452* Changed: beforeCreateFile event now passes data argument by reference.
1453* Changed: The 'propertyMap' property from Sabre_VObject_Reader, must now be
1454  specified in Sabre_VObject_Property::$classMap.
1455* Added: Ability for plugins to tell the ACL plugin which principal plugins are
1456  searchable.
1457* Added: [DAVACL] Per-node overriding of supported privileges. This allows for
1458  custom privileges where needed.
1459* Added: [DAVACL] Public 'principalSearch' method on the DAVACL plugin, which
1460  allows for easy searching for principals, based on their properties.
1461* Added: Sabre_VObject_Component::getComponents() to return a list of only
1462  components and not properties.
1463* Added: An includes.php file in every sub-package (CalDAV, CardDAV, DAV,
1464  DAVACL, HTTP, VObject) as an alternative to the autoloader. This often works
1465  much faster.
1466* Added: Support for the 'Me card', which allows Addressbook.app users specify
1467  which vcard is their own.
1468* Added: Support for updating principal properties in the DAVACL principal
1469  backends.
1470* Changed: Major refactoring in the calendar-query REPORT code. Should make
1471  things more flexible and correct.
1472* Changed: The calendar-proxy-[read|write] principals will now only appear in
1473  the tree, if they actually exist in the Principal backend. This should reduce
1474  some problems people have been having with this.
1475* Changed: Sabre_VObject_Element_* classes are now renamed to
1476  Sabre_VObject_Property. Old classes are retained for backwards compatibility,
1477  but this will be removed in the future.
1478* Added: Sabre_VObject_FreeBusyGenerator to generate free-busy reports based on
1479  lists of events.
1480* Added: Sabre_VObject_RecurrenceIterator to find all the dates and times for
1481  recurring events.
1482* Fixed: Issue 97: Correctly handling RRULE for the calendar-query REPORT.
1483* Fixed: Issue 154: Encoding of VObject parameters with no value was incorrect.
1484* Added: Support for {DAV:}acl-restrictions property from RFC3744.
1485* Added: The contentlength for calendar objects can now be supplied by a CalDAV
1486  backend, allowing for more optimizations.
1487* Fixed: Much faster implementation of Sabre_DAV_URLUtil::encodePath.
1488* Fixed: {DAV:}getcontentlength may now be not specified.
1489* Fixed: Issue 66: Using rawurldecode instead of urldecode to decode paths from
1490  clients. This means that + will now be treated as a literal rather than a
1491  space, and this should improve compatibility with the Windows built-in client.
1492* Added: Sabre_DAV_Exception_PaymentRequired exception, to emit HTTP 402 status
1493  codes.
1494* Added: Some mysql unique constraints to example files.
1495* Fixed: Correctly formatting HTTP dates.
1496* Fixed: Issue 94: Sending back Last-Modified header for 304 responses.
1497* Added: Sabre_VObject_Component_VEvent, Sabre_VObject_Component_VJournal,
1498  Sabre_VObject_Component_VTodo and Sabre_VObject_Component_VCalendar.
1499* Changed: Properties are now also automatically mapped to their appropriate
1500  classes, if they are created using the add() or __set() methods.
1501* Changed: Cloning VObject objects now clones the entire tree, rather than just
1502  the default shallow copy.
1503* Added: Support for recurrence expansion in the CALDAV:calendar-multiget and
1504  CALDAV:calendar-query REPORTS.
1505* Changed: CalDAV PDO backend now sorts calendars based on the internal
1506  'calendarorder' field.
1507* Added: Issue 181: Carddav backends may no optionally not supply the carddata
1508  in getCards, if etag and size are specified. This may speed up certain
1509  requests.
1510* Added: More arguments to beforeWriteContent and beforeCreateFile (see
1511  WritingPlugins wiki document).
1512* Added: Hook for iCalendar validation. This allows us to validate iCalendar
1513  objects when they're uploaded. At the moment we're just validating syntax.
1514* Added: VObject now support Windows Timezone names correctly (thanks mrpace2).
1515* Added: If a timezonename could not be detected, we fall back on the default
1516  PHP timezone.
1517* Added: Now a Composer package (thanks willdurand).
1518* Fixed: Support for \N as a newline character in the VObject reader.
1519* Added: afterWriteContent, afterCreateFile and afterUnbind events.
1520* Added: Postgresql example files. Not part of the unittests though, so use at
1521  your own risk.
1522* Fixed: Issue 182: Removed backticks from sql queries, so it will work with
1523  Postgres.
1524
1525
15261.5.9 (2012-04-16)
1527------------------
1528
1529* Fixed: Issue with parsing timezone identifiers that were surrounded by quotes.
1530  (Fixes emClient compatibility).
1531
1532
15331.5.8 (2012-02-22)
1534------------------
1535
1536* Fixed: Issue 95: Another timezone parsing issue, this time in calendar-query.
1537
1538
15391.5.7 (2012-02-19)
1540------------------
1541
1542* Fixed: VObject properties are now always encoded before components.
1543* Fixed: Sabre_DAVACL had issues with multiple levels of privilege aggregration.
1544* Changed: Added 'GuessContentType' plugin to fileserver.php example.
1545* Fixed: The Browser plugin will now trigger the correct events when creating
1546  files.
1547* Fixed: The ICSExportPlugin now considers ACL's.
1548* Added: Made it optional to supply carddata from an Addressbook backend when
1549  requesting getCards. This can make some operations much faster, and could
1550  result in much lower memory use.
1551* Fixed: Issue 187: Sabre_DAV_UUIDUtil was missing from includes file.
1552* Fixed: Issue 191: beforeUnlock was triggered twice.
1553
1554
15551.5.6 (2012-01-07)
1556------------------
1557
1558* Fixed: Issue 174: VObject could break UTF-8 characters.
1559* Fixed: pear package installation issues.
1560
1561
15621.5.5 (2011-12-16)
1563------------------
1564
1565* Fixed: CalDAV time-range filter workaround for recurring events.
1566* Fixed: Bug in Sabre_DAV_Locks_Backend_File that didn't allow multiple files to
1567  be locked at the same time.
1568
1569
15701.5.4 (2011-10-28)
1571------------------
1572
1573* Fixed: GuessContentType plugin now supports mixed case file extensions.
1574* Fixed: DATE-TIME encoding was wrong in VObject. (we used 'DATETIME').
1575* Changed: Sending back HTTP 204 after a PUT request on an existing resource
1576  instead of HTTP 200. This should fix Evolution CardDAV client compatibility.
1577* Fixed: Issue 95: Parsing X-LIC-LOCATION if it's available.
1578* Added: All VObject elements now have a reference to their parent node.
1579
1580
15811.5.3 (2011-09-28)
1582------------------
1583
1584* Fixed: Sabre_DAV_Collection was missing from the includes file.
1585* Fixed: Issue 152. iOS 1.4.2 apparantly requires HTTP/1.1 200 OK to be in
1586  uppercase.
1587* Fixed: Issue 153: Support for files with mixed newline styles in
1588  Sabre_VObject.
1589* Fixed: Issue 159: Automatically converting any vcard and icalendardata to
1590  UTF-8.
1591* Added: Sabre_DAV_SimpleFile class for easy static file creation.
1592* Added: Issue 158: Support for the CARDDAV:supported-address-data property.
1593
1594
15951.5.2 (2011-09-21)
1596------------------
1597
1598* Fixed: carddata and calendardata MySQL fields are now of type 'mediumblob'.
1599  'TEXT' was too small sometimes to hold all the data.
1600* Fixed: {DAV:}supported-report-set is now correctly reporting the reports for
1601  IAddressBook.
1602* Added: Sabre_VObject_Property::add() to add duplicate parameters to
1603  properties.
1604* Added: Issue 151: Sabre_CalDAV_ICalendar and Sabre_CalDAV_ICalendarObject
1605  interfaces.
1606* Fixed: Issue 140: Not returning 201 Created if an event cancelled the creation
1607  of a file.
1608* Fixed: Issue 150: Faster URLUtil::encodePath() implementation.
1609* Fixed: Issue 144: Browser plugin could interfere with
1610  TemporaryFileFilterPlugin if it was loaded first.
1611* Added: It's not possible to specify more 'alternate uris' in principal
1612  backends.
1613
1614
16151.5.1 (2011-08-24)
1616------------------
1617
1618* Fixed: Issue 137. Hiding action interface in HTML browser for non-collections.
1619* Fixed: addressbook-query is now correctly returned from the
1620  {DAV:}supported-report-set property.
1621* Fixed: Issue 142: Bugs in groupwareserver.php example.
1622* Fixed: Issue 139: Rejecting PUT requests with Content-Range.
1623
1624
16251.5.0 (2011-08-12)
1626------------------
1627
1628* Added: CardDAV support.
1629* Added: An experimental WebDAV client.
1630* Added: MIME-Directory grouping support in the VObject library. This is very
1631  useful for people attempting to parse vcards.
1632* BC Break: Adding parameters with the VObject libraries now overwrites the
1633  previous parameter, rather than just add it. This makes more sense for 99% of
1634  the cases.
1635* BC Break: lib/Sabre.autoload.php is now removed in favor of
1636  lib/Sabre/autoload.php.
1637* Deprecated: Sabre_DAV_Directory is now deprecated and will be removed in a
1638  future version. Use Sabre_DAV_Collection instead.
1639* Deprecated: Sabre_DAV_SimpleDirectory is now deprecated and will be removed in
1640  a future version. Use Sabre_DAV_SimpleCollection instead.
1641* Fixed: Problem with overriding tablenames for the CalDAV backend.
1642* Added: Clark-notation parser to XML utility.
1643* Added: unset() support to VObject components.
1644* Fixed: Refactored CalDAV property fetching to be faster and simpler.
1645* Added: Central string-matcher for CalDAV and CardDAV plugins.
1646* Added: i;unicode-casemap support
1647* Fixed: VObject bug: wouldn't parse parameters if they weren't specified in
1648  uppercase.
1649* Fixed: VObject bug: Parameters now behave more like Properties.
1650* Fixed: VObject bug: Parameters with no value are now correctly parsed.
1651* Changed: If calendars don't specify which components they allow, 'all'
1652  components are assumed (e.g.: VEVENT, VTODO, VJOURNAL).
1653* Changed: Browser plugin now uses POST variable 'sabreAction' instead of
1654  'action' to reduce the chance of collisions.
1655
1656
16571.4.4 (2011-07-07)
1658------------------
1659
1660* Fixed: Issue 131: Custom CalDAV backends could break in certain cases.
1661* Added: The option to override the default tablename all PDO backends use.
1662  (Issue 60).
1663* Fixed: Issue 124: 'File' authentication backend now takes realm into
1664  consideration.
1665* Fixed: Sabre_DAV_Property_HrefList now properly deserializes. This allows
1666  users to update the {DAV:}group-member-set property.
1667* Added: Helper functions for DateTime-values in Sabre_VObject package.
1668* Added: VObject library can now automatically map iCalendar properties to
1669  custom classes.
1670
1671
16721.4.3 (2011-04-25)
1673------------------
1674
1675* Fixed: Issue 123: Added workaround for Windows 7 UNLOCK bug.
1676* Fixed: datatype of lastmodified field in mysql.calendars.sql. Please change
1677  the DATETIME field to an INT to ensure this field will work correctly.
1678* Change: Sabre_DAV_Property_Principal is now renamed to
1679  Sabre_DAVACL_Property_Principal.
1680* Added: API level support for ACL HTTP method.
1681* Fixed: Bug in serializing {DAV:}acl property.
1682* Added: deserializer for {DAV:}resourcetype property.
1683* Added: deserializer for {DAV:}acl property.
1684* Added: deserializer for {DAV:}principal property.
1685
1686
16871.4.2-beta (2011-04-01)
1688-----------------------
1689
1690* Added: It's not possible to disable listing of nodes that are denied read
1691  access by ACL.
1692* Fixed: Changed a few properties in CalDAV classes from private to protected.
1693* Fixed: Issue 119: Terrible things could happen when relying on guessBaseUri,
1694  the server was running on the root of the domain and a user tried to access a
1695  file ending in .php. This is a slight BC break.
1696* Fixed: Issue 118: Lock tokens in If headers without a uri should be treated as
1697  the request uri, not 'all relevant uri's.
1698* Fixed: Issue 120: PDO backend was incorrectly fetching too much locks in cases
1699  where there were similar named locked files in a directory.
1700
1701
17021.4.1-beta (2011-02-26)
1703-----------------------
1704
1705* Fixed: Sabre_DAV_Locks_Backend_PDO returned too many locks.
1706* Fixed: Sabre_HTTP_Request::getHeader didn't return Content-Type when running
1707  on apache, so a few workarounds were added.
1708* Change: Slightly changed CalDAV Backend API's, to allow for heavy
1709  optimizations. This is non-bc breaking.
1710
1711
17121.4.0-beta (2011-02-12)
1713-----------------------
1714
1715* Added: Partly RFC3744 ACL support.
1716* Added: Calendar-delegation (caldav-proxy) support.
1717* BC break: In order to fix Issue 99, a new argument had to be added to
1718  Sabre_DAV_Locks_Backend_*::getLocks classes. Consult the classes for details.
1719* Deprecated: Sabre_DAV_Locks_Backend_FS is now deprecated and will be removed
1720  in a later version. Use PDO or the new File class instead.
1721* Deprecated: The Sabre_CalDAV_ICalendarUtil class is now marked deprecated, and
1722  will be removed in a future version. Please use Sabre_VObject instead.
1723* Removed: All principal-related functionality has been removed from the
1724  Sabre_DAV_Auth_Plugin, and moved to the Sabre_DAVACL_Plugin.
1725* Added: VObject library, for easy vcard/icalendar parsing using a natural
1726  interface.
1727* Added: Ability to automatically generate full .ics feeds off calendars. To
1728  use: Add the Sabre_CalDAV_ICSExportPlugin, and add ?export to your calendar
1729  url.
1730* Added: Plugins can now specify a pluginname, for easy access using
1731  Sabre_DAV_Server::getPlugin().
1732* Added: beforeGetProperties event.
1733* Added: updateProperties event.
1734* Added: Principal listings and calendar-access can now be done privately,
1735  disallowing users from accessing or modifying other users' data.
1736* Added: You can now pass arrays to the Sabre_DAV_Server constructor. If it's an
1737  array with node-objects, a Root collection will automatically be created, and
1738  the nodes are used as top-level children.
1739* Added: The principal base uri is now customizable. It used to be hardcoded to
1740  'principals/[user]'.
1741* Added: getSupportedReportSet method in ServerPlugin class. This allows you to
1742  easily specify which reports you're implementing.
1743* Added: A '..' link to the HTML browser.
1744* Fixed: Issue 99: Locks on child elements were ignored when their parent nodes
1745  were deleted.
1746* Fixed: Issue 90: lockdiscovery property and LOCK response now include a
1747  {DAV}lockroot element.
1748* Fixed: Issue 96: support for 'default' collation in CalDAV text-match filters.
1749* Fixed: Issue 102: Ensuring that copy and move with identical source and
1750  destination uri's fails.
1751* Fixed: Issue 105: Supporting MKCALENDAR with no body.
1752* Fixed: Issue 109: Small fixes in Sabre_HTTP_Util.
1753* Fixed: Issue 111: Properly catching the ownername in a lock (if it's a string)
1754* Fixed: Sabre_DAV_ObjectTree::nodeExist always returned false for the root
1755  node.
1756* Added: Global way to easily supply new resourcetypes for certain node classes.
1757* Fixed: Issue 59: Allowing the user to override the authentication realm in
1758  Sabre_CalDAV_Server.
1759* Update: Issue 97: Looser time-range checking if there's a recurrence rule in
1760  an event. This fixes 'missing recurring events'.
1761
1762
17631.3.0 (2010-10-14)
1764------------------
1765
1766* Added: childExists method to Sabre_DAV_ICollection. This is an api break, so
1767  if you implement Sabre_DAV_ICollection directly, add the method.
1768* Changed: Almost all HTTP method implementations now take a uri argument,
1769  including events. This allows for internal rerouting of certain calls. If you
1770  have custom plugins, make sure they use this argument. If they don't, they
1771  will likely still work, but it might get in the way of future changes.
1772* Changed: All getETag methods MUST now surround the etag with double-quotes.
1773  This was a mistake made in all previous SabreDAV versions. If you don't do
1774  this, any If-Match, If-None-Match and If: headers using Etags will work
1775  incorrectly. (Issue 85).
1776* Added: Sabre_DAV_Auth_Backend_AbstractBasic class, which can be used to easily
1777  implement basic authentication.
1778* Removed: Sabre_DAV_PermissionDenied class. Use Sabre_DAV_Forbidden instead.
1779* Removed: Sabre_DAV_IDirectory interface, use Sabre_DAV_ICollection instead.
1780* Added: Browser plugin now uses {DAV:}displayname if this property is
1781  available.
1782* Added: Cache layer in the ObjectTree.
1783* Added: Tree classes now have a delete and getChildren method.
1784* Fixed: If-Modified-Since and If-Unmodified-Since would be incorrect if the
1785  date is an exact match.
1786* Fixed: Support for multiple ETags in If-Match and If-None-Match headers.
1787* Fixed: Improved baseUrl handling.
1788* Fixed: Issue 67: Non-seekable stream support in ::put()/::get().
1789* Fixed: Issue 65: Invalid dates are now ignored.
1790* Updated: Refactoring in Sabre_CalDAV to make everything a bit more ledgable.
1791* Fixed: Issue 88, Issue 89: Fixed compatibility for running SabreDAV on
1792  Windows.
1793* Fixed: Issue 86: Fixed Content-Range top-boundary from 'file size' to 'file
1794  size'-1.
1795
1796
17971.2.5 (2010-08-18)
1798------------------
1799
1800* Fixed: Issue 73: guessBaseUrl fails for some servers.
1801* Fixed: Issue 67: SabreDAV works better with non-seekable streams.
1802* Fixed: If-Modified-Since and If-Unmodified-Since would be incorrect if
1803  the date is an exact match.
1804
1805
18061.2.4 (2010-07-13)
1807------------------
1808
1809* Fixed: Issue 62: Guessing baseUrl fails when url contains a query-string.
1810* Added: Apache configuration sample for CGI/FastCGI setups.
1811* Fixed: Issue 64: Only returning calendar-data when it was actually requested.
1812
1813
18141.2.3 (2010-06-26)
1815------------------
1816
1817* Fixed: Issue 57: Supporting quotes around etags in If-Match and If-None-Match
1818
1819
18201.2.2 (2010-06-21)
1821------------------
1822
1823* Updated: SabreDAV now attempts to guess the BaseURI if it's not set.
1824* Updated: Better compatibility with BitKinex
1825* Fixed: Issue 56: Incorrect behaviour for If-None-Match headers and GET
1826  requests.
1827* Fixed: Issue with certain encoded paths in Browser Plugin.
1828
1829
18301.2.1 (2010-06-07)
1831------------------
1832
1833* Fixed: Issue 50, patch by Mattijs Hoitink.
1834* Fixed: Issue 51, Adding windows 7 lockfiles to TemporaryFileFilter.
1835* Fixed: Issue 38, Allowing custom filters to be added to TemporaryFileFilter.
1836* Fixed: Issue 53, ETags in the If: header were always failing. This behaviour
1837  is now corrected.
1838* Added: Apache Authentication backend, in case authentication through .htaccess
1839  is desired.
1840* Updated: Small improvements to example files.
1841
1842
18431.2.0 (2010-05-24)
1844------------------
1845
1846* Fixed: Browser plugin now displays international characters.
1847* Changed: More properties in CalDAV classes are now protected instead of
1848  private.
1849
1850
18511.2.0beta3 (2010-05-14)
1852-----------------------
1853
1854* Fixed: Custom properties were not properly sent back for allprops requests.
1855* Fixed: Issue 49, incorrect parsing of PROPPATCH, affecting Office 2007.
1856* Changed: Removed CalDAV items from includes.php, and added a few missing ones.
1857
1858
18591.2.0beta2 (2010-05-04)
1860-----------------------
1861
1862* Fixed: Issue 46: Fatal error for some non-existent nodes.
1863* Updated: some example sql to include email address.
1864* Added: 208 and 508 statuscodes from RFC5842.
1865* Added: Apache2 configuration examples
1866
1867
18681.2.0beta1 (2010-04-28)
1869-----------------------
1870
1871* Fixed: redundant namespace declaration in resourcetypes.
1872* Fixed: 2 locking bugs triggered by litmus when no Sabre_DAV_ILockable
1873  interface is used.
1874* Changed: using http://sabredav.org/ns for all custom xml properties.
1875* Added: email address property to principals.
1876* Updated: CalendarObject validation.
1877
1878
18791.2.0alpha4 (2010-04-24)
1880------------------------
1881
1882* Added: Support for If-Range, If-Match, If-None-Match, If-Modified-Since,
1883  If-Unmodified-Since.
1884* Changed: Brand new build system. Functionality is split up between Sabre,
1885  Sabre_HTTP, Sabre_DAV and Sabre_CalDAV packages. In addition to that a new
1886  non-pear package will be created with all this functionality combined.
1887* Changed: Autoloader moved to Sabre/autoload.php.
1888* Changed: The Allow: header is now more accurate, with appropriate HTTP methods
1889  per uri.
1890* Changed: Now throwing back Sabre_DAV_Exception_MethodNotAllowed on a few
1891  places where Sabre_DAV_Exception_NotImplemented was used.
1892
1893
18941.2.0alpha3 (2010-04-20)
1895------------------------
1896
1897* Update: Complete rewrite of property updating. Now easier to use and atomic.
1898* Fixed: Issue 16, automatically adding trailing / to baseUri.
1899* Added: text/plain is used for .txt files in GuessContentType plugin.
1900* Added: support for principal-property-search and principal-search-property-set
1901  reports.
1902* Added: Issue 31: Hiding exception information by default. Can be turned on
1903  with the Sabre_DAV_Server::$debugExceptions property.
1904
1905
19061.2.0alpha2 (2010-04-08)
1907------------------------
1908
1909* Added: Calendars are now private and can only be read by the owner.
1910* Fixed: double namespace declaration in multistatus responses.
1911* Added: MySQL database dumps. MySQL is now also supported next to SQLite.
1912* Added: expand-properties REPORT from RFC 3253.
1913* Added: Sabre_DAV_Property_IHref interface for properties exposing urls.
1914* Added: Issue 25: Throwing error on broken Finder behaviour.
1915* Changed: Authentication backend is now aware of current user.
1916
1917
19181.2.0alpha1 (2010-03-31)
1919------------------------
1920
1921* Fixed: Issue 26: Workaround for broken GVFS behaviour with encoded special
1922  characters.
1923* Fixed: Issue 34: Incorrect Lock-Token response header for LOCK. Fixes Office
1924  2010 compatibility.
1925* Added: Issue 35: SabreDAV version to header to OPTIONS response to ease
1926  debugging.
1927* Fixed: Issue 36: Incorrect variable name, throwing error in some requests.
1928* Fixed: Issue 37: Incorrect smultron regex in temporary filefilter.
1929* Fixed: Issue 33: Converting ISO-8859-1 characters to UTF-8.
1930* Fixed: Issue 39 & Issue 40: Basename fails on non-utf-8 locales.
1931* Added: More unittests.
1932* Added: SabreDAV version to all error responses.
1933* Added: URLUtil class for decoding urls.
1934* Changed: Now using pear.sabredav.org pear channel.
1935* Changed: Sabre_DAV_Server::getCopyAndMoveInfo is now a public method.
1936
1937
19381.1.2-alpha (2010-03-18)
1939------------------------
1940
1941* Added: RFC5397 - current-user-principal support.
1942* Fixed: Issue 27: encoding entities in property responses.
1943* Added: naturalselection script now allows the user to specify a 'minimum
1944  number of bytes' for deletion. This should reduce load due to less crawling
1945* Added: Full support for the calendar-query report.
1946* Added: More unittests.
1947* Added: Support for complex property deserialization through the static
1948  ::unserialize() method.
1949* Added: Support for modifying calendar-component-set
1950* Fixed: Issue 29: Added TIMEOUT_INFINITE constant
1951
1952
19531.1.1-alpha (2010-03-11)
1954------------------------
1955
1956* Added: RFC5689 - Extended MKCOL support.
1957* Fixed: Evolution support for CalDAV.
1958* Fixed: PDO-locks backend was pretty much completely broken. This is 100%
1959  unittested now.
1960* Added: support for ctags.
1961* Fixed: Comma's between HTTP methods in 'Allow' method.
1962* Changed: default argument for Sabre_DAV_Locks_Backend_FS. This means a
1963  datadirectory must always be specified from now on.
1964* Changed: Moved Sabre_DAV_Server::parseProps to
1965  Sabre_DAV_XMLUtil::parseProperties.
1966* Changed: Sabre_DAV_IDirectory is now Sabre_DAV_ICollection.
1967* Changed: Sabre_DAV_Exception_PermissionDenied is now
1968  Sabre_DAV_Exception_Forbidden.
1969* Changed: Sabre_CalDAV_ICalendarCollection is removed.
1970* Added: Sabre_DAV_IExtendedCollection.
1971* Added: Many more unittests.
1972* Added: support for calendar-timezone property.
1973
1974
19751.1.0-alpha (2010-03-01)
1976------------------------
1977
1978* Note: This version is forked from version 1.0.5, so release dates may be out
1979  of order.
1980* Added: CalDAV - RFC 4791
1981* Removed: Sabre_PHP_Exception. PHP has a built-in ErrorException for this.
1982* Added: PDO authentication backend.
1983* Added: Example sql for auth, caldav, locks for sqlite.
1984* Added: Sabre_DAV_Browser_GuessContentType plugin
1985* Changed: Authentication plugin refactored, making it possible to implement
1986  non-digest authentication.
1987* Fixed: Better error display in browser plugin.
1988* Added: Support for {DAV:}supported-report-set
1989* Added: XML utility class with helper functions for the WebDAV protocol.
1990* Added: Tons of unittests
1991* Added: PrincipalCollection and Principal classes
1992* Added: Sabre_DAV_Server::getProperties for easy property retrieval
1993* Changed: {DAV:}resourceType defaults to 0
1994* Changed: Any non-null resourceType now gets a / appended to the href value.
1995  Before this was just for {DAV:}collection's, but this is now also the case for
1996  for example {DAV:}principal.
1997* Changed: The Href property class can now optionally create non-relative uri's.
1998* Changed: Sabre_HTTP_Response now returns false if headers are already sent and
1999  header-methods are called.
2000* Fixed: Issue 19: HEAD requests on Collections
2001* Fixed: Issue 21: Typo in Sabre_DAV_Property_Response
2002* Fixed: Issue 18: Doesn't work with Evolution Contacts
2003
2004
20051.0.15 (2010-05-28)
2006-------------------
2007
2008* Added: Issue 31: Hiding exception information by default. Can be turned on
2009  with the Sabre_DAV_Server::$debugExceptions property.
2010* Added: Moved autoload from lib/ to lib/Sabre/autoload.php. This is also the
2011  case in the upcoming 1.2.0, so it will improve future compatibility.
2012
2013
20141.0.14 (2010-04-15)
2015-------------------
2016
2017* Fixed: double namespace declaration in multistatus responses.
2018
2019
20201.0.13 (2010-03-30)
2021-------------------
2022
2023* Fixed: Issue 40: Last references to basename/dirname
2024
2025
20261.0.12 (2010-03-30)
2027-------------------
2028
2029* Fixed: Issue 37: Incorrect smultron regex in temporary filefilter.
2030* Fixed: Issue 26: Workaround for broken GVFS behaviour with encoded special
2031  characters.
2032* Fixed: Issue 33: Converting ISO-8859-1 characters to UTF-8.
2033* Fixed: Issue 39: Basename fails on non-utf-8 locales.
2034* Added: More unittests.
2035* Added: SabreDAV version to all error responses.
2036* Added: URLUtil class for decoding urls.
2037* Updated: Now using pear.sabredav.org pear channel.
2038
2039
20401.0.11 (2010-03-23)
2041-------------------
2042
2043* Non-public release. This release is identical to 1.0.10, but it is used to
2044  test releasing packages to pear.sabredav.org.
2045
2046
20471.0.10 (2010-03-22)
2048-------------------
2049
2050* Fixed: Issue 34: Invalid Lock-Token header response.
2051* Added: Issue 35: Adding SabreDAV version to HTTP OPTIONS responses.
2052
2053
20541.0.9 (2010-03-19)
2055------------------
2056
2057* Fixed: Issue 27: Entities not being encoded in PROPFIND responses.
2058* Fixed: Issue 29: Added missing TIMEOUT_INFINITE constant.
2059
2060
20611.0.8 (2010-03-03)
2062------------------
2063
2064* Fixed: Issue 21: typos causing errors
2065* Fixed: Issue 23: Comma's between methods in Allow header.
2066* Added: Sabre_DAV_ICollection interface, to aid in future compatibility.
2067* Added: Sabre_DAV_Exception_Forbidden exception. This will replace
2068  Sabre_DAV_Exception_PermissionDenied in the future, and can already be used to
2069  ensure future compatibility.
2070
2071
20721.0.7 (2010-02-24)
2073------------------
2074
2075* Fixed: Issue 19 regression for MS Office
2076
2077
20781.0.6 (2010-02-23)
2079------------------
2080
2081* Fixed: Issue 19: HEAD requests on Collections
2082
2083
20841.0.5 (2010-01-22)
2085------------------
2086
2087* Fixed: Fatal error when a malformed url was used for unlocking, in conjuction
2088  with Sabre.autoload.php due to a incorrect filename.
2089* Fixed: Improved unittests and build system
2090
2091
20921.0.4 (2010-01-11)
2093------------------
2094
2095* Fixed: needed 2 different releases. One for googlecode and one for pearfarm.
2096  This is to retain the old method to install SabreDAV until pearfarm becomes
2097  the standard installation method.
2098
2099
21001.0.3 (2010-01-11)
2101------------------
2102
2103* Added: RFC4709 support (davmount)
2104* Added: 6 unittests
2105* Added: naturalselection. A tool to keep cache directories below a specified
2106  theshold.
2107* Changed: Now using pearfarm.org channel server.
2108
2109
21101.0.1 (2009-12-22)
2111------------------
2112
2113* Fixed: Issue 15: typos in examples
2114* Fixed: Minor pear installation issues
2115
2116
21171.0.0 (2009-11-02)
2118------------------
2119
2120* Added: SimpleDirectory class. This class allows creating static directory
2121  structures with ease.
2122* Changed: Custom complex properties and exceptions now get an instance of
2123  Sabre_DAV_Server as their first argument in serialize()
2124* Changed: Href complex property now prepends server's baseUri
2125* Changed: delete before an overwriting copy/move is now handles by server class
2126  instead of tree classes
2127* Changed: events must now explicitly return false to stop execution. Before,
2128  execution would be stopped by anything loosely evaluating to false.
2129* Changed: the getPropertiesForPath method now takes a different set of
2130  arguments, and returns a different response. This allows plugin developers to
2131  return statuses for properties other than 200 and 404. The hrefs are now also
2132  always calculated relative to the baseUri, and not the uri of the request.
2133* Changed: generatePropFindResponse is renamed to generateMultiStatus, and now
2134  takes a list of properties similar to the response of getPropertiesForPath.
2135  This was also needed to improve flexibility for plugin development.
2136* Changed: Auth plugins are no longer included. They were not yet stable
2137  quality, so they will probably be reintroduced in a later version.
2138* Changed: PROPPATCH also used generateMultiStatus now.
2139* Removed: unknownProperties event. This is replaced by the afterGetProperties
2140  event, which should provide more flexibility.
2141* Fixed: Only calling getSize() on IFile instances in httpHead()
2142* Added: beforeBind event. This is invoked upon file or directory creation
2143* Added: beforeWriteContent event, this is invoked by PUT and LOCK on an
2144  existing resource.
2145* Added: beforeUnbind event. This is invoked right before deletion of any
2146  resource.
2147* Added: afterGetProperties event. This event can be used to make modifications
2148  to property responses.
2149* Added: beforeLock and beforeUnlock events.
2150* Added: afterBind event.
2151* Fixed: Copy and Move could fail in the root directory. This is now fixed.
2152* Added: Plugins can now be retrieved by their classname. This is useful for
2153  inter-plugin communication.
2154* Added: The Auth backend can now return usernames and user-id's.
2155* Added: The Auth backend got a getUsers method
2156* Added: Sabre_DAV_FSExt_Directory now returns quota info
2157
2158
21590.12.1-beta (2009-09-11)
2160------------------------
2161
2162* Fixed: UNLOCK bug. Unlock didn't work at all
2163
2164
21650.12-beta (2009-09-10)
2166----------------------
2167
2168* Updated: Browser plugin now shows multiple {DAV:}resourcetype values if
2169  available.
2170* Added: Experimental PDO backend for Locks Manager
2171* Fixed: Sending Content-Length: 0 for every empty response. This improves NGinx
2172  compatibility.
2173* Fixed: Last modification time is reported in UTC timezone. This improves
2174  Finder compatibility.
2175
2176
21770.11-beta (2009-08-11)
2178----------------------
2179
2180* Updated: Now in Beta
2181* Updated: Pear package no longer includes docs/ directory. These just contained
2182  rfc's, which are publicly available. This reduces the package from ~800k to
2183  ~60k
2184* Added: generatePropfindResponse now takes a baseUri argument
2185* Added: ResourceType property can now contain multiple resourcetypes.
2186* Fixed: Issue 13.
2187
2188
21890.10-alpha (2009-08-03)
2190-----------------------
2191
2192* Added: Plugin to automatically map GET requests to non-files to PROPFIND
2193  (Sabre_DAV_Browser_MapGetToPropFind). This should allow easier debugging of
2194  complicated WebDAV setups.
2195* Added: Sabre_DAV_Property_Href class. For future use.
2196* Added: Ability to choose to use auth-int, auth or both for HTTP Digest
2197  authentication. (Issue 11)
2198* Changed: Made more methods in Sabre_DAV_Server public.
2199* Fixed: TemporaryFileFilter plugin now intercepts HTTP LOCK requests to
2200  non-existent files. (Issue 12)
2201* Added: Central list of defined xml namespace prefixes. This can reduce
2202  Bandwidth and legibility for xml bodies with user-defined namespaces.
2203* Added: now a PEAR-compatible package again, thanks to Michael Gauthier
2204* Changed: moved default copy and move logic from ObjectTree to Tree class
2205
22060.9a-alpha (2009-07-21)
2207----------------------
2208
2209* Fixed: Broken release
2210
22110.9-alpha (2009-07-21)
2212----------------------
2213
2214* Changed: Major refactoring, removed most of the logic from the Tree objects.
2215  The Server class now directly works with the INode, IFile and IDirectory
2216  objects. If you created your own Tree objects, this will most likely break in
2217  this release.
2218* Changed: Moved all the Locking logic from the Tree and Server classes into a
2219  separate plugin.
2220* Changed: TemporaryFileFilter is now a plugin.
2221* Added: Comes with an autoloader script. This can be used instead of the
2222  includer script, and is preferred by some people.
2223* Added: AWS Authentication class.
2224* Added: simpleserversetup.py script. This will quickly get a fileserver up and
2225  running.
2226* Added: When subscribing to events, it is now possible to supply a priority.
2227  This is for example needed to ensure that the Authentication Plugin is used
2228  before any other Plugin.
2229* Added: 22 new tests.
2230* Added: Users-manager plugin for .htdigest files. Experimental and subject to
2231  change.
2232* Added: RFC 2324 HTTP 418 status code
2233* Fixed: Exclusive locks could in some cases be picked up as shared locks
2234* Fixed: Digest auth for non-apache servers had a bug (still not actually tested
2235  this well).
2236
2237
22380.8-alpha (2009-05-30)
2239----------------------
2240
2241* Changed: Renamed all exceptions! This is a compatibility break. Every
2242  Exception now follows Sabre_DAV_Exception_FileNotFound convention instead of
2243  Sabre_DAV_FileNotFoundException.
2244* Added: Browser plugin now allows uploading and creating directories straight
2245  from the browser.
2246* Added: 12 more unittests
2247* Fixed: Locking bug, which became prevalent on Windows Vista.
2248* Fixed: Netdrive support
2249* Fixed: TemporaryFileFilter filtered out too many files. Fixed some of the
2250  regexes.
2251* Fixed: Added README and ChangeLog to package
2252
2253
22540.7-alpha (2009-03-29)
2255----------------------
2256
2257* Added: System to return complex properties from PROPFIND.
2258* Added: support for {DAV:}supportedlock.
2259* Added: support for {DAV:}lockdiscovery.
2260* Added: 6 new tests.
2261* Added: New plugin system.
2262* Added: Simple HTML directory plugin, for browser access.
2263* Added: Server class now sends back standard pre-condition error xml bodies.
2264  This was new since RFC4918.
2265* Added: Sabre_DAV_Tree_Aggregate, which can 'host' multiple Tree objects into
2266  one.
2267* Added: simple basis for HTTP REPORT method. This method is not used yet, but
2268  can be used by plugins to add reports.
2269* Changed: ->getSize is only called for files, no longer for collections. r303
2270* Changed: Sabre_DAV_FilterTree is now Sabre_DAV_Tree_Filter
2271* Changed: Sabre_DAV_TemporaryFileFilter is now called
2272  Sabre_DAV_Tree_TemporaryFileFilter.
2273* Changed: removed functions (get(/set)HTTPRequest(/Response)) from Server
2274  class, and using a public property instead.
2275* Fixed: bug related to parsing proppatch and propfind requests. Didn't show up
2276  in most clients, but it needed fixing regardless. (r255)
2277* Fixed: auth-int is now properly supported within HTTP Digest.
2278* Fixed: Using application/xml for a mimetype vs. text/xml as per RFC4918 sec
2279  8.2.
2280* Fixed: TemporaryFileFilter now lets through GET's if they actually exist on
2281  the backend. (r274)
2282* Fixed: Some methods didn't get passed through in the FilterTree (r283).
2283* Fixed: LockManager is now slightly more complex, Tree classes slightly less.
2284  (r287)
2285
2286
22870.6-alpha (2009-02-16)
2288----------------------
2289
2290* Added: Now uses streams for files, instead of strings. This means it won't
2291  require to hold entire files in memory, which can be an issue if you're
2292  dealing with big files. Note that this breaks compatibility for put() and
2293  createFile methods.
2294* Added: HTTP Digest Authentication helper class.
2295* Added: Support for HTTP Range header
2296* Added: Support for ETags within If: headers
2297* Added: The API can now return ETags and override the default Content-Type
2298* Added: starting with basic framework for unittesting, using PHPUnit.
2299* Added: 49 unittests.
2300* Added: Abstraction for the HTTP request.
2301* Updated: Using Clark Notation for tags in properties. This means tags are
2302  serialized as {namespace}tagName instead of namespace#tagName
2303* Fixed: HTTP_BasicAuth class now works as expected.
2304* Fixed: DAV_Server uses / for a default baseUrl.
2305* Fixed: Last modification date is no longer ignored in PROPFIND.
2306* Fixed: PROPFIND now sends back information about the requestUri even when
2307  "Depth: 1" is specified.
2308
2309
23100.5-alpha (2009-01-14)
2311----------------------
2312
2313* Added: Added a very simple example for implementing a mapping to PHP file
2314  streams. This should allow easy implementation of for example a WebDAV to FTP
2315  proxy.
2316* Added: HTTP Basic Authentication helper class.
2317* Added: Sabre_HTTP_Response class. This centralizes HTTP operations and will be
2318  a start towards the creating of a testing framework.
2319* Updated: Backwards compatibility break: all require_once() statements are
2320  removed from all the files. It is now recommended to use autoloading of
2321  classes, or just including lib/Sabre.includes.php. This fix was made to allow
2322  easier integration into applications not using this standard inclusion model.
2323* Updated: Better in-file documentation.
2324* Updated: Sabre_DAV_Tree can now work with Sabre_DAV_LockManager.
2325* Updated: Fixes a shared-lock bug.
2326* Updated: Removed ?> from the bottom of each php file.
2327* Updated: Split up some operations from Sabre_DAV_Server to
2328  Sabre_HTTP_Response.
2329* Fixed: examples are now actually included in the pear package.
2330
2331
23320.4-alpha (2008-11-05)
2333----------------------
2334
2335* Passes all litmus tests!
2336* Added: more examples
2337* Added: Custom property support
2338* Added: Shared lock support
2339* Added: Depth support to locks
2340* Added: Locking on unmapped urls (non-existent nodes)
2341* Fixed: Advertising as WebDAV class 3 support
2342
2343
23440.3-alpha (2008-06-29)
2345----------------------
2346
2347* Fully working in MS Windows clients.
2348* Added: temporary file filter: support for smultron files.
2349* Added: Phing build scripts
2350* Added: PEAR package
2351* Fixed: MOVE bug identified using finder.
2352* Fixed: Using gzuncompress instead of gzdecode in the temporary file filter.
2353  This seems more common.
2354
2355
23560.2-alpha (2008-05-27)
2357----------------------
2358
2359* Somewhat working in Windows clients
2360* Added: Working PROPPATCH method (doesn't support custom properties yet)
2361* Added: Temporary filename handling system
2362* Added: Sabre_DAV_IQuota to return quota information
2363* Added: PROPFIND now reads the request body and only supplies the requested
2364  properties
2365
2366
23670.1-alpha (2008-04-04)
2368----------------------
2369
2370* First release!
2371* Passes litmus: basic, http and copymove test.
2372* Fully working in Finder and DavFS2.
2373
2374Project started: 2007-12-13
2375
2376[vobj]: http://sabre.io/vobject/
2377[evnt]: http://sabre.io/event/
2378[http]: http://sabre.io/http/
2379[uri]: http://sabre.io/uri/
2380[xml]: http://sabre.io/xml/
2381[mi20]: http://sabre.io/dav/upgrade/1.8-to-2.0/
2382[rfc6638]: http://tools.ietf.org/html/rfc6638 "CalDAV Scheduling"
2383[rfc7240]: http://tools.ietf.org/html/rfc7240
2384[calendar-availability]: https://tools.ietf.org/html/draft-daboo-calendar-availability-05
2385