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