aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/ChangeLog
blob: 145cf1fcb6573fe71383c3f84c5ac4c1248208a1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1.8.7-stable (2013-10-02)
	* The zip release ships with sabre/vobject 2.1.3.
	* Includes changes from version 1.7.9.

1.8.6-stable (2013-06-18)
	* The zip release ships with sabre/vobject 2.1.0.
	* Includes changes from version 1.7.8.

1.8.5-stable (2013-04-11)
	* The zip release ships with sabre/vobject 2.0.7.
	* Includes changes from version 1.7.7.

1.8.4-stable (2013-04-08)
	* The zip release ships with sabre/vobject 2.0.7.
	* Includes changes from version 1.7.6.

1.8.3-stable (2013-03-01)
	* The zip release ships with sabre/vobject 2.0.6.
	* Includes changes from version 1.7.5.
	* Fixed: organizer email-address for shared calendars is now prefixed with
	  mailto:, as it should.

1.8.2-stable (2013-01-19)
	* The zip release ships with sabre/vobject 2.0.5.
	* Includes changes from version 1.7.4.

1.8.1-stable (2012-12-01)
	* The zip release ships with sabre/vobject 2.0.5.
	* Includes changes from version 1.7.3.
	* Fixed: Typo in 1.7 migration script caused it to fail.

1.8.0-stable (2012-11-08)
	* The zip release ships with sabre/vobject 2.0.5.
	* BC Break: Moved the entire codebase to PHP namespaces.
	* BC Break: Every backend package (CalDAV, CardDAV, Auth, Locks,
	  Principals) now has consistent naming conventions. There's a
	  BackendInterface, and an AbstractBackend class.
	* BC Break: Changed a bunch of constructor signatures in the CalDAV
	  package, to reduce dependencies on the ACL package.
	* BC Break: Sabre_CalDAV_ISharedCalendar now also has a getShares method,
	  so sharees can figure out who is also on a shared calendar.

	* Added: Sabre_DAVACL_IPrincipalCollection interface, to advertise support
	  for principal-property-search on any node.
	* Added: Simple console script to fire up a fileserver in the current
	  directory using PHP 5.4's built-in webserver.
	* Added: Sharee's can now also read out the list of invites for a shared
	  calendar.
	* Added: The Proxy principal classes now both implement an interface, for
	  greater flexiblity.

1.7.9-stable (2013-10-02)
	* The zip release ships with sabre/vobject 2.1.3.
	* Fixed: Issue #365. Incorrect output when principal urls have spaces in
	  them.
	* Added: Issue #367: Automatically adding a UID to vcards that don't have
	  them.

1.7.8-stable (2013-06-17)
	* The zip release ships with sabre/vobject 2.1.0.
	* Changed: Sabre\DAV\Client::verifyPeer is now a protected property
	 (instead of private).
	* Fixed: Text was incorrectly escaped in the Href and HrefList properties,
	  disallowing urls with ampersands (&) in them.
	* Added: deserializer for Sabre\DAVACL\Property\CurrentUserPrivilegeSet.
	* Fixed: Issue 335: Client only deserializes properties with status 200.
	* Fixed: Issue 341: Escaping xml in 423 Locked error responses.
	* Added: Issue 339: beforeGetPropertiesForPath event.

1.7.7-stable (2013-04-11)
	* The zip release ships with sabre/vobject 2.0.7.
	* Fixed: Assets in the browser plugins were not being served on windows
	  machines.

1.7.6-stable (2013-04-08)
	* The zip release ships with sabre/vobject 2.0.7.
	* Fixed: vcardurl in database schema can now hold 255 characters instead
	  of 80 (which is often way to small).
	* Fixed: The browser plugin potentially allowed people to open any
	  arbitrary file on windows servers (CVE-2013-1939).

1.7.5-stable (2013-03-01)
	* The zip release ships with sabre/vobject 2.0.6.
	* Change: No longer advertising support for 4.0 vcards. iOS and OS X
	  address book don't handle this well, and just advertising 3.0 support
	  seems like the most logical course of action.
	* Added: ->setVerifyPeers to Sabre_DAV_Client (greatly resisting against
	  it, don't use this..).

1.7.4-stable (2013-01-19)
	* The zip release ships with sabre/vobject 2.0.5.
	* Changed: To be compatibile with MS Office 2011 for Mac, a workaround was
	  removed that was added to support old versions of Windows XP (pre-SP3).
	  Indeed! We needed a crazy workaround to work with one MS product in the
	  past, and we can't keep that workaround to be compatible with another MS
	  product.
	* Fixed: expand-properties REPORT had incorrect values for the href
	  element.
	* Fixed: Range requests now work for non-seekable streams. (Thanks Alfred
	  Klomp).
	* Fixed: Changed serialization of {DAV:}getlastmodified and
	  {DAV:}supportedlock to improve compatiblity with MS Office 2011 for Mac.
	* Changed: reverted the automatic translation of 'DAV:' xml namespaces to
	  'urn:DAV' when parsing files. Issues were reported with libxml 2.6.32,
	  on a relatively recent debian release, so we'll wait till 2015 to take
	  this one out again.
	* Added: Sabre_DAV_Exception_ServiceUnavailable, for emitting 503's.

1.7.3-stable (2012-12-01)
	* The zip release ships with sabre/vobject 2.0.5.
	* Fixed: Removing double slashes from getPropertiesForPath.
	* Change: Marked a few more properties in the CardDAV as protected,
	  instead of private.
	* Fixed: SharingPlugin now plays nicer with other plugins with similar
	  functionality.
	* Fixed: Issue 174. Sending back HTTP/1.0 for requests with this version.

1.7.2-stable (2012-11-08)
	* The zip release ships with sabre/vobject 2.0.5.
	* Added: ACL plugin advertises support for 'calendarserver-principal-
	  property-search'.
	* Fixed: [#153] Allowing for relative http principals in iMip requests.
	* Added: Support for cs:first-name and cs:last-name properties in sharing
	  invites.
	* Fixed: Made a bunch of properties protected, where they were private
	  before.
	* Added: Some non-standard properties for sharing to improve
	  compatibility.
	* Fixed: some bugfixes in postgres sql script.
	* Fixed: When requesting some properties using PROPFIND, they could show
	  up as both '200 Ok' and '403 Forbidden'.
	* Fixed: calendar-proxy principals were not checked for deeper principal
	  membership than 1 level.
	* Fixed: setGroupMemberSet argument now correctly receives relative
	  principal urls, instead of the absolute ones.
	* Fixed: Server class will filter out any bonus properties if any extra
	  were returned. This means the implementor of the IProperty class can be
	  a bit lazier when implementing.

Note: bug numbers after this line refer to Google Code tickets. We're using
github now.

1.7.1-stable (2012-10-07)
	* Fixed: include path problem in the migration script.

1.7.0-stable (2012-10-06)
	* BC Break: The calendarobjects database table has a bunch of new
	  fields, and a migration script is required to ensure everything will
	  keep working. Read the wiki for more details.
	* BC Break: The ICalendar interface now has a new method: calendarQuery.
	* BC Break: In this version a number of classes have been deleted, that
	  have been previously deprecated. Namely:
		- Sabre_DAV_Directory (now: Sabre_DAV_Collection)
		- Sabre_DAV_SimpleDirectory (now: Sabre_DAV_SimpleCollection)
	* BC Break: Sabre_CalDAV_Schedule_IMip::sendMessage now has an extra
	  argument. If you extended this class, you should fix this method. It's
	  only used for informational purposes.
	* BC Break: The DAV: namespace is no longer converted to urn:DAV. This was
	  a workaround for a bug in older PHP versions (pre-5.3).
	* Removed: Sabre.includes.php was deprecated, and is now removed.
	* Removed: Sabre_CalDAV_Server was deprecated, and is now removed. Please
	  use Sabre_DAV_Server and check the examples in the examples/ directory.
	* Changed: The Sabre_VObject library now spawned into it's own project!
	  The VObject library is still included in the SabreDAV zip package.
	* Added: Experimental interfaces to allow implementation of caldav-sharing.
	  Note that no implementation is provided yet, just the api hooks.
	* Added: Free-busy reporting compliant with the caldav-scheduling
	  standard. This allows iCal and other clients to fetch other users'
	  free-busy data.
	* Added: Experimental NotificationSupport interface to add
	  caldav notifications.
	* Added: VCF Export plugin. If enabled, it can generate an export of an
	  entire addressbook.
	* Added: Support for PATCH using a SabreDAV format, to live-patch files.
	* Added: Support for Prefer: return-minimal and Brief: t headers for
	  PROPFIND and PROPPATCH requests.
	* Changed: Responsibility for dealing with the calendar-query is now
	  moved from the CalDAV plugin to the CalDAV backends. This allows for
	  heavy optimizations.
	* Changed: The CalDAV PDO backend is now a lot faster for common
	  calendar queries.
	* Changed: We are now using the composer autoloader.
	* Changed: The CalDAV backend now all implement an interface.
	* Changed: Instead of Sabre_DAV_Property, Sabre_DAV_PropertyInterface is
	  now the basis of every property class.
	* Update: Caching results for principal lookups. This should cut down
	  queries and performance for a number of heavy requests.
	* Update: ObjectTree caches lookups much more aggresively, which will help
	  especially speeding up a bunch of REPORT queries.
	* Added: Support for the schedule-calendar-transp property.
	* Fixed: Marking both the text/calendar and text/x-vcard as UTF-8
	  encoded.
	* Fixed: Workaround for the SOGO connector, as it doesn't understand
	  receiving "text/x-vcard; charset=utf-8" for a contenttype.
	* Added: Sabre_DAV_Client now throws more specific exceptions in cases
	  where we already has an exception class.
	* Added: Sabre_DAV_PartialUpdate. This plugin allows you to use the
	  PATCH method to update parts of a file.
	* Added: Tons of timezone name mappings for Microsoft Exchange.
	* Added: Support for an 'exception' event in the server class.
	* Fixed: Uploaded VCards without a UID are now rejected. (thanks Dominik!)
	* Fixed: Rejecting calendar objects if they are not in the
	  supported-calendar-component list. (thanks Armin!)
	* Fixed: Issue 219: serialize() now reorders correctly.
	* Fixed: Sabre_DAV_XMLUtil no longer returns empty $dom->childNodes
	  if there is whitespace in $dom.
	* Fixed: Returning 409 Conflict instead of 500 when an attempt is made to
	  create a file as a child of something that's not a collection.
	* Fixed: Issue 237: xml-encoding values in SabreDAV error responses.
	* Fixed: Returning 403, instead of 501 when an unknown REPORT is
	  requested.
	* Fixed: Postfixing slash on {DAV:}owner properties.
	* Fixed: Several embarrassing spelling mistakes in docblocks.

1.6.10-stable (2013-06-17)
	* Fixed: Text was incorrectly escaped in the Href and HrefList properties,
	  disallowing urls with ampersands (&) in them.
	* Fixed: Issue 341: Escaping xml in 423 Locked error responses.

1.6.9-stable (2013-04-11)
	* Fixed: Assets in the browser plugins were not being served on windows
	  machines.

1.6.8-stable (2013-04-08)
	* Fixed: vcardurl in database schema can now hold 255 characters instead
	  of 80 (which is often way to small).
	* Fixed: The browser plugin potentially allowed people to open any
	  arbitrary file on windows servers. (CVE-2013-1939).

1.6.7-stable (2013-03-01)
	* Change: No longer advertising support for 4.0 vcards. iOS and OS X
	  address book don't handle this well, and just advertising 3.0 support
	  seems like the most logical course of action.
	* Added: ->setVerifyPeers to Sabre_DAV_Client (greatly resisting against
	  it, don't use this..).

1.6.6-stable (2013-01-19)
	* Fixed: Backported a fix for broken XML serialization in error responses.
	 (Thanks @DeepDiver1975!)

1.6.5-stable (2012-10-04)
	* Fixed: Workaround for line-ending bug OS X 10.8 addressbook has.
	* Added: Ability to allow users to set SSL certificates for the Client
	  class. (Thanks schiesbn!).
	* Fixed: Directory indexes with lots of nodes should be a lot faster.
	* Fixed: Issue 235: E_NOTICE thrown when doing a propfind request with
	  Sabre_DAV_Client, and no valid properties are returned.
	* Fixed: Issue with filtering on alarms in tasks.

1.6.4-stable (2012-08-02)
	* Fixed: Issue 220: Calendar-query filters may fail when filtering on
	  alarms, if an overridden event has it's alarm removed.
	* Fixed: Compatibility for OS/X 10.8 iCal in the IMipHandler.
	* Fixed: Issue 222: beforeWriteContent shouldn't be called for lock
	  requests.
	* Fixed: Problem with POST requests to the outbox if mailto: was not lower
	  cased.
	* Fixed: Yearly recurrence rule expansion on leap-days no behaves
	  correctly.
	* Fixed: Correctly checking if recurring, all-day events with no dtstart
	  fall in a timerange if the start of the time-range exceeds the start of
	  the instance of an event, but not the end.
	* Fixed: All-day recurring events wouldn't match if an occurence ended
	  exactly on the start of a time-range.
	* Fixed: HTTP basic auth did not correctly deal with passwords containing
	  colons on some servers.
	* Fixed: Issue 228: DTEND is now non-inclusive for all-day events in the
	  calendar-query REPORT and free-busy calculations.

1.6.3-stable (2012-06-12)
	* Added: It's now possible to specify in Sabre_DAV_Client which type of
	  authentication is to be used.
	* Fixed: Issue 206: Sabre_DAV_Client PUT requests are fixed.
	* Fixed: Issue 205: Parsing an iCalendar 0-second date interval.
	* Fixed: Issue 112: Stronger validation of iCalendar objects. Now making
	  sure every iCalendar object only contains 1 component, and disallowing
	  vcards, forcing every component to have a UID.
	* Fixed: Basic validation for vcards in the CardDAV plugin.
	* Fixed: Issue 213: Workaround for an Evolution bug, that prevented it
	  from updating events.
	* Fixed: Issue 211: A time-limit query on a non-relative alarm trigger in
	  a recurring event could result in an endless loop.
	* Fixed: All uri fields are now a maximum of 200 characters. The Bynari
	  outlook plugin used much longer strings so this should improve
	  compatibility.
	* Fixed: Added a workaround for a bug in KDE 4.8.2 contact syncing. See
	  https://bugs.kde.org/show_bug.cgi?id=300047
	* Fixed: Issue 217: Sabre_DAV_Tree_FileSystem was pretty broken.

1.6.2-stable (2012-04-16)
	* Fixed: Sabre_VObject_Node::$parent should have been public.
	* Fixed: Recurrence rules of events are now taken into consideration when
	  doing time-range queries on alarms.
	* Fixed: Added a workaround for the fact that php's DateInterval cannot
	  parse weeks and days at the same time.
	* Added: Sabre_DAV_Server::$exposeVersion, allowing you to hide SabreDAV's
	  version number from various outputs.
	* Fixed: DTSTART values would be incorrect when expanding events.
	* Fixed: DTSTART and DTEND would be incorrect for expansion of WEEKLY
	  BYDAY recurrences.
	* Fixed: Issue 203: A problem with overridden events hitting the exact
	  date and time of a subsequent event in the recurrence set.
	* Fixed: There was a problem with recurrence rules, for example the 5th
	  tuesday of the month, if this day did not exist.
	* Added: New HTTP status codes from draft-nottingham-http-new-status-04.

1.6.1-stable (2012-03-05)
	* Added: createFile and put() can now return an ETag.
	* Added: Sending back an ETag on for operations on CardDAV backends. This
	  should help with OS X 10.6 Addressbook compatibility.
	* Fixed: Fixed a bug where an infinite loop could occur in the recurrence
	  iterator if the recurrence was YEARLY, with a BYMONTH rule, and either
	  BYDAY or BYMONTHDAY match the first day of the month.
	* Fixed: Events that are excluded using EXDATE are still counted in the
	  COUNT= parameter in the RRULE property.
	* Added: Support for time-range filters on VALARM components.
	* Fixed: Correctly filtering all-day events.
	* Fixed: Sending back correct mimetypes from the browser plugin (thanks
	  Jürgen).
	* Fixed: Issue 195: Sabre_CardDAV pear package had an incorrect dependency.
	* Fixed: Calendardata would be destroyed when performing a MOVE request.

1.6.0-stable (2012-02-22)
	* BC Break: Now requires PHP 5.3
	* BC Break: Any node that implemented Sabre_DAVACL_IACL must now also
	  implement the getSupportedPrivilegeSet method. See website for details.
	* BC Break: Moved functions from Sabre_CalDAV_XMLUtil to
	  Sabre_VObject_DateTimeParser.
	* BC Break: The Sabre_DAVACL_IPrincipalCollection now has two new methods:
	  'searchPrincipals' and 'updatePrincipal'.
	* BC Break: Sabre_DAV_ILockable is removed and all related per-node
	  locking functionality.
	* BC Break: Sabre_DAV_Exception_FileNotFound is now deprecated in favor of
	  Sabre_DAV_Exception_NotFound. The former will be removed in a later
	  version.
	* BC Break: Removed Sabre_CalDAV_ICalendarUtil, use Sabre_VObject instead.
	* BC Break: Sabre_CalDAV_Server is now deprecated, check out the
	  documentation on how to setup a caldav server with just
	  Sabre_DAV_Server.
	* BC Break: Default Principals PDO backend now needs a new field in the
	  'principals' table. See the website for details.
	* Added: Ability to create new calendars and addressbooks from within the
	  browser plugin.
	* Added: Browser plugin: icons for various nodes.
	* Added: Support for FREEBUSY reports!
	* Added: Support for creating principals with admin-level privileges.
	* Added: Possibility to let server send out invitation emails on behalf of
	  CalDAV client, using Sabre_CalDAV_Schedule_IMip.
	* Changed: beforeCreateFile event now passes data argument by reference.
	* Changed: The 'propertyMap' property from Sabre_VObject_Reader, must now
	  be specified in Sabre_VObject_Property::$classMap.
	* Added: Ability for plugins to tell the ACL plugin which principal
	  plugins are searchable.
	* Added: [DAVACL] Per-node overriding of supported privileges. This allows
	  for custom privileges where needed.
	* Added: [DAVACL] Public 'principalSearch' method on the DAVACL plugin,
	  which allows for easy searching for principals, based on their
	  properties.
	* Added: Sabre_VObject_Component::getComponents() to return a list of only
	  components and not properties.
	* Added: An includes.php file in every sub-package (CalDAV, CardDAV, DAV,
	  DAVACL, HTTP, VObject) as an alternative to the autoloader. This often
	  works much faster.
	* Added: Support for the 'Me card', which allows Addressbook.app users
	  specify which vcard is their own.
	* Added: Support for updating principal properties in the DAVACL principal
	  backends.
	* Changed: Major refactoring in the calendar-query REPORT code. Should
	  make things more flexible and correct.
	* Changed: The calendar-proxy-[read|write] principals will now only appear
	  in the tree, if they actually exist in the Principal backend. This should
	  reduce some problems people have been having with this.
	* Changed: Sabre_VObject_Element_* classes are now renamed to
	  Sabre_VObject_Property. Old classes are retained for backwards
	  compatibility, but this will be removed in the future.
	* Added: Sabre_VObject_FreeBusyGenerator to generate free-busy reports
	  based on lists of events.
	* Added: Sabre_VObject_RecurrenceIterator to find all the dates and times
	  for recurring events.
	* Fixed: Issue 97: Correctly handling RRULE for the calendar-query REPORT.
	* Fixed: Issue 154: Encoding of VObject parameters with no value was
	  incorrect.
	* Added: Support for {DAV:}acl-restrictions property from RFC3744.
	* Added: The contentlength for calendar objects can now be supplied by a
	  CalDAV backend, allowing for more optimizations.
	* Fixed: Much faster implementation of Sabre_DAV_URLUtil::encodePath.
	* Fixed: {DAV:}getcontentlength may now be not specified.
	* Fixed: Issue 66: Using rawurldecode instead of urldecode to decode paths
	  from clients. This means that + will now be treated as a literal rather
	  than a space, and this should improve compatibility with the Windows
	  built-in client.
	* Added: Sabre_DAV_Exception_PaymentRequired exception, to emit HTTP 402
	  status codes.
	* Added: Some mysql unique constraints to example files.
	* Fixed: Correctly formatting HTTP dates.
	* Fixed: Issue 94: Sending back Last-Modified header for 304 responses.
	* Added: Sabre_VObject_Component_VEvent, Sabre_VObject_Component_VJournal,
	  Sabre_VObject_Component_VTodo and Sabre_VObject_Component_VCalendar.
	* Changed: Properties are now also automatically mapped to their
	  appropriate classes, if they are created using the add() or __set()
	  methods.
	* Changed: Cloning VObject objects now clones the entire tree, rather than
      just the default shallow copy.
	* Added: Support for recurrence expansion in the CALDAV:calendar-multiget
	  and CALDAV:calendar-query REPORTS.
	* Changed: CalDAV PDO backend now sorts calendars based on the internal
	  'calendarorder' field.
	* Added: Issue 181: Carddav backends may no optionally not supply the carddata in
	  getCards, if etag and size are specified. This may speed up certain
	  requests.
	* Added: More arguments to beforeWriteContent and beforeCreateFile (see
	  WritingPlugins wiki document).
	* Added: Hook for iCalendar validation. This allows us to validate
	  iCalendar objects when they're uploaded. At the moment we're just
	  validating syntax.
	* Added: VObject now support Windows Timezone names correctly (thanks
	  mrpace2).
	* Added: If a timezonename could not be detected, we fall back on the
	  default PHP timezone.
	* Added: Now a Composer package (thanks willdurand).
	* Fixed: Support for \N as a newline character in the VObject reader.
	* Added: afterWriteContent, afterCreateFile and afterUnbind events.
	* Added: Postgresql example files. Not part of the unittests though, so
	  use at your own risk.
	* Fixed: Issue 182: Removed backticks from sql queries, so it will work
	  with Postgres.

1.5.9-stable (2012-04-16)
	* Fixed: Issue with parsing timezone identifiers that were surrounded by
	  quotes. (Fixes emClient compatibility).

1.5.8-stable (2012-02-22)
	* Fixed: Issue 95: Another timezone parsing issue, this time in
	  calendar-query.

1.5.7-stable (2012-02-19)
	* Fixed: VObject properties are now always encoded before components.
	* Fixed: Sabre_DAVACL had issues with multiple levels of privilege
	  aggregration.
	* Changed: Added 'GuessContentType' plugin to fileserver.php example.
	* Fixed: The Browser plugin will now trigger the correct events when
	  creating files.
	* Fixed: The ICSExportPlugin now considers ACL's.
	* Added: Made it optional to supply carddata from an Addressbook backend
	  when requesting getCards. This can make some operations much faster, and
	  could result in much lower memory use.
	* Fixed: Issue 187: Sabre_DAV_UUIDUtil was missing from includes file.
	* Fixed: Issue 191: beforeUnlock was triggered twice.

1.5.6-stable (2012-01-07)
	* Fixed: Issue 174: VObject could break UTF-8 characters.
	* Fixed: pear package installation issues.

1.5.5-stable (2011-12-16)
	* Fixed: CalDAV time-range filter workaround for recurring events.
	* Fixed: Bug in Sabre_DAV_Locks_Backend_File that didn't allow multiple
	  files to be locked at the same time.

1.5.4-stable (2011-10-28)
	* Fixed: GuessContentType plugin now supports mixed case file extensions.
	* Fixed: DATE-TIME encoding was wrong in VObject. (we used 'DATETIME').
	* Changed: Sending back HTTP 204 after a PUT request on an existing resource
	  instead of HTTP 200. This should fix Evolution CardDAV client
	  compatibility.
	* Fixed: Issue 95: Parsing X-LIC-LOCATION if it's available.
	* Added: All VObject elements now have a reference to their parent node.

1.5.3-stable (2011-09-28)
	* Fixed: Sabre_DAV_Collection was missing from the includes file.
	* Fixed: Issue 152. iOS 1.4.2 apparantly requires HTTP/1.1 200 OK to be in
	  uppercase.
	* Fixed: Issue 153: Support for files with mixed newline styles in
	  Sabre_VObject.
	* Fixed: Issue 159: Automatically converting any vcard and icalendardata
	  to UTF-8.
	* Added: Sabre_DAV_SimpleFile class for easy static file creation.
	* Added: Issue 158: Support for the CARDDAV:supported-address-data
	  property.

1.5.2-stable (2011-09-21)
	* Fixed: carddata and calendardata MySQL fields are now of type
	  'mediumblob'. 'TEXT' was too small sometimes to hold all the data.
	* Fixed: {DAV:}supported-report-set is now correctly reporting the reports
	  for IAddressBook.
	* Added: Sabre_VObject_Property::add() to add duplicate parameters to
	  properties.
	* Added: Issue 151: Sabre_CalDAV_ICalendar and Sabre_CalDAV_ICalendarObject
	  interfaces.
	* Fixed: Issue 140: Not returning 201 Created if an event cancelled the
	  creation of a file.
	* Fixed: Issue 150: Faster URLUtil::encodePath() implementation.
	* Fixed: Issue 144: Browser plugin could interfere with
	  TemporaryFileFilterPlugin if it was loaded first.
	* Added: It's not possible to specify more 'alternate uris' in principal
	  backends.

1.5.1-stable (2011-08-24)
	* Fixed: Issue 137. Hiding action interface in HTML browser for
	  non-collections.
	* Fixed: addressbook-query is now correctly returned from the
	  {DAV:}supported-report-set property.
	* Fixed: Issue 142: Bugs in groupwareserver.php example.
	* Fixed: Issue 139: Rejecting PUT requests with Content-Range.

1.5.0-stable (2011-08-12)
	* Added: CardDAV support.
	* Added: An experimental WebDAV client.
	* Added: MIME-Directory grouping support in the VObject library. This is
	  very useful for people attempting to parse vcards.
	* BC Break: Adding parameters with the VObject libraries now overwrites
	  the previous parameter, rather than just add it. This makes more sense
	  for 99% of the cases.
	* BC Break: lib/Sabre.autoload.php is now removed in favor of
	  lib/Sabre/autoload.php.
	* Deprecated: Sabre_DAV_Directory is now deprecated and will be removed in
	  a future version. Use Sabre_DAV_Collection instead.
	* Deprecated: Sabre_DAV_SimpleDirectory is now deprecated and will be
	  removed in a future version. Use Sabre_DAV_SimpleCollection instead.
	* Fixed: Problem with overriding tablenames for the CalDAV backend.
	* Added: Clark-notation parser to XML utility.
	* Added: unset() support to VObject components.
	* Fixed: Refactored CalDAV property fetching to be faster and simpler.
	* Added: Central string-matcher for CalDAV and CardDAV plugins.
	* Added: i;unicode-casemap support
	* Fixed: VObject bug: wouldn't parse parameters if they weren't specified
	  in uppercase.
	* Fixed: VObject bug: Parameters now behave more like Properties.
	* Fixed: VObject bug: Parameters with no value are now correctly parsed.
	* Changed: If calendars don't specify which components they allow, 'all'
	  components are assumed (e.g.: VEVENT, VTODO, VJOURNAL).
	* Changed: Browser plugin now uses POST variable 'sabreAction' instead of
	  'action' to reduce the chance of collisions.

1.4.4-stable (2011-07-07)
	* Fixed: Issue 131: Custom CalDAV backends could break in certain cases.
	* Added: The option to override the default tablename all PDO backends
	  use. (Issue 60).
	* Fixed: Issue 124: 'File' authentication backend now takes realm into
	  consideration.
	* Fixed: Sabre_DAV_Property_HrefList now properly deserializes. This
	  allows users to update the {DAV:}group-member-set property.
	* Added: Helper functions for DateTime-values in Sabre_VObject package.
	* Added: VObject library can now automatically map iCalendar properties to
	  custom classes.

1.4.3-stable (2011-04-25)
	* Fixed: Issue 123: Added workaround for Windows 7 UNLOCK bug.
	* Fixed: datatype of lastmodified field in mysql.calendars.sql. Please
	  change the DATETIME field to an INT to ensure this field will work
	  correctly.
	* Change: Sabre_DAV_Property_Principal is now renamed to
	  Sabre_DAVACL_Property_Principal.
	* Added: API level support for ACL HTTP method.
	* Fixed: Bug in serializing {DAV:}acl property.
	* Added: deserializer for {DAV:}resourcetype property.
	* Added: deserializer for {DAV:}acl property.
	* Added: deserializer for {DAV:}principal property.

1.4.2-beta (2011-04-01)
	* Added: It's not possible to disable listing of nodes that are denied
	  read access by ACL.
	* Fixed: Changed a few properties in CalDAV classes from private to
	  protected.
	* Fixed: Issue 119: Terrible things could happen when relying on
	  guessBaseUri, the server was running on the root of the domain and a user
	  tried to access a file ending in .php. This is a slight BC break.
	* Fixed: Issue 118: Lock tokens in If headers without a uri should be
	  treated as the request uri, not 'all relevant uri's.
	* Fixed: Issue 120: PDO backend was incorrectly fetching too much locks in
	  cases where there were similar named locked files in a directory.

1.4.1-beta (2011-02-26)
	* Fixed: Sabre_DAV_Locks_Backend_PDO returned too many locks.
	* Fixed: Sabre_HTTP_Request::getHeader didn't return Content-Type when
	  running on apache, so a few workarounds were added.
	* Change: Slightly changed CalDAV Backend API's, to allow for heavy
	  optimizations. This is non-bc breaking.

1.4.0-beta (2011-02-12)
	* Added: Partly RFC3744 ACL support.
	* Added: Calendar-delegation (caldav-proxy) support.
	* BC break: In order to fix Issue 99, a new argument had to be added to
	  Sabre_DAV_Locks_Backend_*::getLocks classes. Consult the classes for
	  details.
	* Deprecated: Sabre_DAV_Locks_Backend_FS is now deprecated and will be
	  removed in a later version. Use PDO or the new File class instead.
	* Deprecated: The Sabre_CalDAV_ICalendarUtil class is now marked
	  deprecated, and will be removed in a future version. Please use
	  Sabre_VObject instead.
	* Removed: All principal-related functionality has been removed from the
	  Sabre_DAV_Auth_Plugin, and moved to the Sabre_DAVACL_Plugin.
	* Added: VObject library, for easy vcard/icalendar parsing using a natural
	  interface.
	* Added: Ability to automatically generate full .ics feeds off calendars.
	  To use: Add the Sabre_CalDAV_ICSExportPlugin, and add ?export to your
	  calendar url.
	* Added: Plugins can now specify a pluginname, for easy access using
	  Sabre_DAV_Server::getPlugin().
	* Added: beforeGetProperties event.
	* Added: updateProperties event.
	* Added: Principal listings and calendar-access can now be done privately,
	  disallowing users from accessing or modifying other users' data.
	* Added: You can now pass arrays to the Sabre_DAV_Server constructor. If
	  it's an array with node-objects, a Root collection will automatically be
	  created, and the nodes are used as top-level children.
	* Added: The principal base uri is now customizable. It used to be
	  hardcoded to 'principals/[user]'.
	* Added: getSupportedReportSet method in ServerPlugin class. This allows
	  you to easily specify which reports you're implementing.
	* Added: A '..' link to the HTML browser.
	* Fixed: Issue 99: Locks on child elements were ignored when their parent
	  nodes were deleted.
	* Fixed: Issue 90: lockdiscovery property and LOCK response now include a
	  {DAV}lockroot element.
	* Fixed: Issue 96: support for 'default' collation in CalDAV text-match
	  filters.
	* Fixed: Issue 102: Ensuring that copy and move with identical source and
	  destination uri's fails.
	* Fixed: Issue 105: Supporting MKCALENDAR with no body.
	* Fixed: Issue 109: Small fixes in Sabre_HTTP_Util.
	* Fixed: Issue 111: Properly catching the ownername in a lock (if it's a
	  string)
	* Fixed: Sabre_DAV_ObjectTree::nodeExist always returned false for the
	  root node.
	* Added: Global way to easily supply new resourcetypes for certain node
	  classes.
	* Fixed: Issue 59: Allowing the user to override the authentication realm
	  in Sabre_CalDAV_Server.
	* Update: Issue 97: Looser time-range checking if there's a recurrence
	  rule in an event. This fixes 'missing recurring events'.

1.3.0 (2010-10-14)
	* Added: childExists method to Sabre_DAV_ICollection. This is an api
	  break, so if you implement Sabre_DAV_ICollection directly, add the method.
	* Changed: Almost all HTTP method implementations now take a uri argument,
	  including events. This allows for internal rerouting of certain calls.
	  If you have custom plugins, make sure they use this argument. If they
	  don't, they will likely still work, but it might get in the way of
	  future changes.
	* Changed: All getETag methods MUST now surround the etag with
	  double-quotes. This was a mistake made in all previous SabreDAV
	  versions. If you don't do this, any If-Match, If-None-Match and If:
	  headers using Etags will work incorrectly. (Issue 85).
	* Added: Sabre_DAV_Auth_Backend_AbstractBasic class, which can be used to
	  easily implement basic authentication.
	* Removed: Sabre_DAV_PermissionDenied class. Use Sabre_DAV_Forbidden
	  instead.
	* Removed: Sabre_DAV_IDirectory interface, use Sabre_DAV_ICollection
	  instead.
	* Added: Browser plugin now uses {DAV:}displayname if this property is
	  available.
	* Added: Cache layer in the ObjectTree.
	* Added: Tree classes now have a delete and getChildren method.
	* Fixed: If-Modified-Since and If-Unmodified-Since would be incorrect if
	  the date is an exact match.
	* Fixed: Support for multiple ETags in If-Match and If-None-Match headers.
	* Fixed: Improved baseUrl handling.
	* Fixed: Issue 67: Non-seekable stream support in ::put()/::get().
	* Fixed: Issue 65: Invalid dates are now ignored.
	* Updated: Refactoring in Sabre_CalDAV to make everything a bit more
	  ledgable.
	* Fixed: Issue 88, Issue 89: Fixed compatibility for running SabreDAV on
	   Windows.
	* Fixed: Issue 86: Fixed Content-Range top-boundary from 'file size' to
	  'file size'-1.

1.2.4 (2010-07-13)
	* Fixed: Issue 62: Guessing baseUrl fails when url contains a
	  query-string.
	* Added: Apache configuration sample for CGI/FastCGI setups.
	* Fixed: Issue 64: Only returning calendar-data when it was actually
	  requested.

1.2.3 (2010-06-26)
	* Fixed: Issue 57: Supporting quotes around etags in If-Match and
	  If-None-Match

1.2.2 (2010-06-21)
	* Updated: SabreDAV now attempts to guess the BaseURI if it's not set.
	* Updated: Better compatibility with BitKinex
	* Fixed: Issue 56: Incorrect behaviour for If-None-Match headers and GET
	  requests.
	* Fixed: Issue with certain encoded paths in Browser Plugin.

1.2.1 (2010-06-07)
	* Fixed: Issue 50, patch by Mattijs Hoitink.
	* Fixed: Issue 51, Adding windows 7 lockfiles to TemporaryFileFilter.
	* Fixed: Issue 38, Allowing custom filters to be added to
	  TemporaryFileFilter.
	* Fixed: Issue 53, ETags in the If: header were always failing. This
	  behaviour is now corrected.
	* Added: Apache Authentication backend, in case authentication through
	  .htaccess is desired.
	* Updated: Small improvements to example files.

1.2.0 (2010-05-24)
	* Fixed: Browser plugin now displays international characters.
	* Changed: More properties in CalDAV classes are now protected instead of
	  private.

1.2.0beta3 (2010-05-14)
	* Fixed: Custom properties were not properly sent back for allprops
	  requests.
	* Fixed: Issue 49, incorrect parsing of PROPPATCH, affecting Office 2007.
	* Changed: Removed CalDAV items from includes.php, and added a few missing
	  ones.

1.2.0beta2 (2010-05-04)
	* Fixed: Issue 46: Fatal error for some non-existent nodes.
	* Updated: some example sql to include email address.
	* Added: 208 and 508 statuscodes from RFC5842.
	* Added: Apache2 configuration examples

1.2.0beta1 (2010-04-28)
	* Fixed: redundant namespace declaration in resourcetypes.
	* Fixed: 2 locking bugs triggered by litmus when no Sabre_DAV_ILockable
	  interface is used.
	* Changed: using http://sabredav.org/ns for all custom xml properties.
	* Added: email address property to principals.
	* Updated: CalendarObject validation.

1.2.0alpha4 (2010-04-24)
	* Added: Support for If-Range, If-Match, If-None-Match, If-Modified-Since,
	  If-Unmodified-Since.
	* Changed: Brand new build system. Functionality is split up between
	  Sabre, Sabre_HTTP, Sabre_DAV and Sabre_CalDAV packages. In addition to
	  that a new non-pear package will be created with all this functionality
	  combined.
	* Changed: Autoloader moved to Sabre/autoload.php.
	* Changed: The Allow: header is now more accurate, with appropriate HTTP
	  methods per uri.
	* Changed: Now throwing back Sabre_DAV_Exception_MethodNotAllowed on a few
	  places where Sabre_DAV_Exception_NotImplemented was used.

1.2.0alpha3 (2010-04-20)
	* Update: Complete rewrite of property updating. Now easier to use and
	  atomic.
	* Fixed: Issue 16, automatically adding trailing / to baseUri.
	* Added: text/plain is used for .txt files in GuessContentType plugin.
	* Added: support for principal-property-search and
	  principal-search-property-set reports.
	* Added: Issue 31: Hiding exception information by default. Can be turned
	  on with the Sabre_DAV_Server::$debugExceptions property.

1.2.0alpha2 (2010-04-08)
	* Added: Calendars are now private and can only be read by the owner.
	* Fixed: double namespace declaration in multistatus responses.
	* Added: MySQL database dumps. MySQL is now also supported next to SQLite.
	* Added: expand-properties REPORT from RFC 3253.
	* Added: Sabre_DAV_Property_IHref interface for properties exposing urls.
	* Added: Issue 25: Throwing error on broken Finder behaviour.
	* Changed: Authentication backend is now aware of current user.

1.2.0alpha1 (2010-03-31)
	* Fixed: Issue 26: Workaround for broken GVFS behaviour with encoded
	  special characters.
	* Fixed: Issue 34: Incorrect Lock-Token response header for LOCK. Fixes
	  Office 2010 compatibility.
	* Added: Issue 35: SabreDAV version to header to OPTIONS response to ease
	  debugging.
	* Fixed: Issue 36: Incorrect variable name, throwing error in some
	  requests.
	* Fixed: Issue 37: Incorrect smultron regex in temporary filefilter.
	* Fixed: Issue 33: Converting ISO-8859-1 characters to UTF-8.
	* Fixed: Issue 39 & Issue 40: Basename fails on non-utf-8 locales.
	* Added: More unittests.
	* Added: SabreDAV version to all error responses.
	* Added: URLUtil class for decoding urls.
	* Changed: Now using pear.sabredav.org pear channel.
	* Changed: Sabre_DAV_Server::getCopyAndMoveInfo is now a public method.

1.1.2-alpha (2010-03-18)
	* Added: RFC5397 - current-user-principal support.
	* Fixed: Issue 27: encoding entities in property responses.
	* Added: naturalselection script now allows the user to specify a 'minimum
	  number of bytes' for deletion. This should reduce load due to less
	  crawling
	* Added: Full support for the calendar-query report.
	* Added: More unittests.
	* Added: Support for complex property deserialization through the static
	  ::unserialize() method.
	* Added: Support for modifying calendar-component-set
	* Fixed: Issue 29: Added TIMEOUT_INFINITE constant

1.1.1-alpha (2010-03-11)
	* Added: RFC5689 - Extended MKCOL support.
	* Fixed: Evolution support for CalDAV.
	* Fixed: PDO-locks backend was pretty much completely broken. This is
	  100% unittested now.
	* Added: support for ctags.
	* Fixed: Comma's between HTTP methods in 'Allow' method.
	* Changed: default argument for Sabre_DAV_Locks_Backend_FS. This means a
	  datadirectory must always be specified from now on.
	* Changed: Moved Sabre_DAV_Server::parseProps to
	  Sabre_DAV_XMLUtil::parseProperties.
	* Changed: Sabre_DAV_IDirectory is now Sabre_DAV_ICollection.
	* Changed: Sabre_DAV_Exception_PermissionDenied is now
	  Sabre_DAV_Exception_Forbidden.
	* Changed: Sabre_CalDAV_ICalendarCollection is removed.
	* Added: Sabre_DAV_IExtendedCollection.
	* Added: Many more unittests.
	* Added: support for calendar-timezone property.

1.1.0-alpha (2010-03-01)
	* Note: This version is forked from version 1.0.5, so release dates may be
	  out of order.
	* Added: CalDAV - RFC 4791
	* Removed: Sabre_PHP_Exception. PHP has a built-in ErrorException for
	  this.
	* Added: PDO authentication backend.
	* Added: Example sql for auth, caldav, locks for sqlite.
	* Added: Sabre_DAV_Browser_GuessContentType plugin
	* Changed: Authentication plugin refactored, making it possible to
	  implement non-digest authentication.
	* Fixed: Better error display in browser plugin.
	* Added: Support for {DAV:}supported-report-set
	* Added: XML utility class with helper functions for the WebDAV protocol.
	* Added: Tons of unittests
	* Added: PrincipalCollection and Principal classes
	* Added: Sabre_DAV_Server::getProperties for easy property retrieval
	* Changed: {DAV:}resourceType defaults to 0
	* Changed: Any non-null resourceType now gets a / appended to the href
	  value. Before this was just for {DAV:}collection's, but this is now also
	  the case for for example {DAV:}principal.
	* Changed: The Href property class can now optionally create non-relative
	  uri's.
	* Changed: Sabre_HTTP_Response now returns false if headers are already
	  sent and header-methods are called.
	* Fixed: Issue 19: HEAD requests on Collections
	* Fixed: Issue 21: Typo in Sabre_DAV_Property_Response
	* Fixed: Issue 18: Doesn't work with Evolution Contacts

1.0.15-stable (2010-05-28)
	* Added: Issue 31: Hiding exception information by default. Can be turned
	  on with the Sabre_DAV_Server::$debugExceptions property.
	* Added: Moved autoload from lib/ to lib/Sabre/autoload.php. This is also
	  the case in the upcoming 1.2.0, so it will improve future compatibility.

1.0.14-stable (2010-04-15)
	* Fixed: double namespace declaration in multistatus responses.

1.0.13-stable (2010-03-30)
	* Fixed: Issue 40: Last references to basename/dirname

1.0.12-stable (2010-03-30)
	* Fixed: Issue 37: Incorrect smultron regex in temporary filefilter.
	* Fixed: Issue 26: Workaround for broken GVFS behaviour with encoded
	  special characters.
	* Fixed: Issue 33: Converting ISO-8859-1 characters to UTF-8.
	* Fixed: Issue 39: Basename fails on non-utf-8 locales.
	* Added: More unittests.
	* Added: SabreDAV version to all error responses.
	* Added: URLUtil class for decoding urls.
	* Updated: Now using pear.sabredav.org pear channel.

1.0.11-stable (2010-03-23)
	* Non-public release. This release is identical to 1.0.10, but it is used
	  to test releasing packages to pear.sabredav.org.

1.0.10-stable (2010-03-22)
	* Fixed: Issue 34: Invalid Lock-Token header response.
	* Added: Issue 35: Addign SabreDAV version to HTTP OPTIONS responses.

1.0.9-stable (2010-03-19)
	* Fixed: Issue 27: Entities not being encoded in PROPFIND responses.
	* Fixed: Issue 29: Added missing TIMEOUT_INFINITE constant.

1.0.8-stable (2010-03-03)
	* Fixed: Issue 21: typos causing errors
	* Fixed: Issue 23: Comma's between methods in Allow header.
	* Added: Sabre_DAV_ICollection interface, to aid in future compatibility.
	* Added: Sabre_DAV_Exception_Forbidden exception. This will replace
	  Sabre_DAV_Exception_PermissionDenied in the future, and can already be
	  used to ensure future compatibility.

1.0.7-stable (2010-02-24)
	* Fixed: Issue 19 regression for MS Office

1.0.6-stable (2010-02-23)
	* Fixed: Issue 19: HEAD requests on Collections

1.0.5-stable (2010-01-22)
	* Fixed: Fatal error when a malformed url was used for unlocking, in
	  conjuction with Sabre.autoload.php due to a incorrect filename.
	* Fixed: Improved unittests and build system

1.0.4-stable (2010-01-11)
	* Fixed: needed 2 different releases. One for googlecode and one for
	  pearfarm. This is to retain the old method to install SabreDAV until
	  pearfarm becomes the standard installation method.

1.0.3-stable (2010-01-11)
	* Added: RFC4709 support (davmount)
	* Added: 6 unittests
	* Added: naturalselection. A tool to keep cache directories below a
	  specified theshold.
	* Changed: Now using pearfarm.org channel server.

1.0.1-stable (2009-12-22)
	* Fixed: Issue 15: typos in examples
	* Fixed: Minor pear installation issues

1.0.0-stable (2009-11-02)
	* Added: SimpleDirectory class. This class allows creating static
	  directory structures with ease.
	* Changed: Custom complex properties and exceptions now get an instance of
	  Sabre_DAV_Server as their first argument in serialize()
	* Changed: Href complex property now prepends server's baseUri
	* Changed: delete before an overwriting copy/move is now handles by server
	  class instead of tree classes
	* Changed: events must now explicitly return false to stop execution.
	  Before, execution would be stopped by anything loosely evaluating to
	  false.
	* Changed: the getPropertiesForPath method now takes a different set of
	  arguments, and returns a different response. This allows plugin
	  developers to return statuses for properties other than 200 and 404. The
	  hrefs are now also always calculated relative to the baseUri, and not
	  the uri of the request.
	* Changed: generatePropFindResponse is renamed to generateMultiStatus, and
	  now takes a list of properties similar to the response of
	  getPropertiesForPath. This was also needed to improve flexibility for
	  plugin development.
	* Changed: Auth plugins are no longer included. They were not yet stable
	  quality, so they will probably be reintroduced in a later version.
	* Changed: PROPPATCH also used generateMultiStatus now.
	* Removed: unknownProperties event. This is replaced by the
	  afterGetProperties event, which should provide more flexibility.
	* Fixed: Only calling getSize() on IFile instances in httpHead()
	* Added: beforeBind event. This is invoked upon file or directory creation
	* Added: beforeWriteContent event, this is invoked by PUT and LOCK on an
	  existing resource.
	* Added: beforeUnbind event. This is invoked right before deletion of any
	  resource.
	* Added: afterGetProperties event. This event can be used to make
	  modifications to property responses.
	* Added: beforeLock and beforeUnlock events.
	* Added: afterBind event.
	* Fixed: Copy and Move could fail in the root directory. This is now
	  fixed.
	* Added: Plugins can now be retrieved by their classname. This is useful
	  for inter-plugin communication.
	* Added: The Auth backend can now return usernames and user-id's.
	* Added: The Auth backend got a getUsers method
	* Added: Sabre_DAV_FSExt_Directory now returns quota info

0.12.1-beta (2009-09-11)
	* Fixed: UNLOCK bug. Unlock didn't work at all

0.12-beta (2009-09-10)
	* Updated: Browser plugin now shows multiple {DAV:}resourcetype values
	  if available.
	* Added: Experimental PDO backend for Locks Manager
	* Fixed: Sending Content-Length: 0 for every empty response. This
	  improves NGinx compatibility.
	* Fixed: Last modification time is reported in UTC timezone. This improves
	  Finder compatibility.

0.11-beta (2009-08-11)
	* Updated: Now in Beta
	* Updated: Pear package no longer includes docs/ directory. These just
	  contained rfc's, which are publically available. This reduces the
	  package from ~800k to ~60k
	* Added: generatePropfindResponse now takes a baseUri argument
	* Added: ResourceType property can now contain multiple resourcetypes.
	* Fixed: Issue 13.

0.10-alpha (2009-08-03)
	* Added: Plugin to automatically map GET requests to non-files to
	  PROPFIND (Sabre_DAV_Browser_MapGetToPropFind). This should allow
	  easier debugging of complicated WebDAV setups.
	* Added: Sabre_DAV_Property_Href class. For future use.
	* Added: Ability to choose to use auth-int, auth or both for HTTP Digest
	  authentication. (Issue 11)
	* Changed: Made more methods in Sabre_DAV_Server public.
	* Fixed: TemporaryFileFilter plugin now intercepts HTTP LOCK requests
	  to non-existent files. (Issue 12)
	* Added: Central list of defined xml namespace prefixes. This can reduce
	  Bandwidth and legibility for xml bodies with user-defined namespaces.
	* Added: now a PEAR-compatible package again, thanks to Michael Gauthier
	* Changed: moved default copy and move logic from ObjectTree to Tree class

0.9-alpha (2009-07-21)
	* Changed: Major refactoring, removed most of the logic from the Tree
	  objects. The Server class now directly works with the INode, IFile
	  and IDirectory objects. If you created your own Tree objects,
	  this will most likely break in this release.
	* Changed: Moved all the Locking logic from the Tree and Server classes
	  into a separate plugin.
	* Changed: TemporaryFileFilter is now a plugin.
	* Added: Comes with an autoloader script. This can be used instead of
	  the includer script, and is preferred by some people.
	* Added: AWS Authentication class.
	* Added: simpleserversetup.py script. This will quickly get a fileserver
	  up and running.
	* Added: When subscribing to events, it is now possible to supply a
	  priority. This is for example needed to ensure that the Authentication
	  Plugin is used before any other Plugin.
	* Added: 22 new tests.
	* Added: Users-manager plugin for .htdigest files. Experimental and
	  subject to change.
	* Added: RFC 2324 HTTP 418 status code
	* Fixed: Exclusive locks could in some cases be picked up as shared locks
	* Fixed: Digest auth for non-apache servers had a bug (still not actually
	  tested this well).

0.8-alpha (2009-05-30)
	* Changed: Renamed all exceptions! This is a compatibility break. Every
	  Exception now follows Sabre_DAV_Exception_FileNotFound convention
	  instead of Sabre_DAV_FileNotFoundException.
	* Added: Browser plugin now allows uploading and creating directories
	  straight from the browser.
	* Added: 12 more unittests
	* Fixed: Locking bug, which became prevalent on Windows Vista.
	* Fixed: Netdrive support
	* Fixed: TemporaryFileFilter filtered out too many files. Fixed some
	  of the regexes.
	* Fixed: Added README and ChangeLog to package

0.7-alpha (2009-03-29)
	* Added: System to return complex properties from PROPFIND.
	* Added: support for {DAV:}supportedlock.
	* Added: support for {DAV:}lockdiscovery.
	* Added: 6 new tests.
	* Added: New plugin system.
	* Added: Simple HTML directory plugin, for browser access.
	* Added: Server class now sends back standard pre-condition error xml
	bodies. This was new since RFC4918.
	* Added: Sabre_DAV_Tree_Aggregrate, which can 'host' multiple Tree objects
	into one.
	* Added: simple basis for HTTP REPORT method. This method is not used yet,
	but can be used by plugins to add reports.
	* Changed: ->getSize is only called for files, no longer for collections.
	r303
	* Changed: Sabre_DAV_FilterTree is now Sabre_DAV_Tree_Filter
	* Changed: Sabre_DAV_TemporaryFileFilter is now called
	Sabre_DAV_Tree_TemporaryFileFilter.
	* Changed: removed functions (get(/set)HTTPRequest(/Response)) from Server
	class, and using a public property instead.
	* Fixed: bug related to parsing proppatch and propfind requests. Didn't
	show up in most clients, but it needed fixing regardless. (r255)
	* Fixed: auth-int is now properly supported within HTTP Digest.
	* Fixed: Using application/xml for a mimetype vs. text/xml as per RFC4918
	sec 8.2.
	* Fixed: TemporaryFileFilter now lets through GET's if they actually
	exist on the backend. (r274)
	* FIxed: Some methods didn't get passed through in the FilterTree (r283).
	* Fixed: LockManager is now slightly more complex, Tree classes slightly
	less. (r287)

0.6-alpha (2009-02-16)
	* Added: Now uses streams for files, instead of strings.
	  This means it won't require to hold entire files in memory, which can be
	  an issue if you're dealing with big files. Note that this breaks
	  compatibility for put() and createFile methods.
	* Added: HTTP Digest Authentication helper class.
	* Added: Support for HTTP Range header
	* Added: Support for ETags within If: headers
	* Added: The API can now return ETags and override the default Content-Type
	* Added: starting with basic framework for unittesting, using PHPUnit.
	* Added: 49 unittests.
	* Added: Abstraction for the HTTP request.
	* Updated: Using Clark Notation for tags in properties. This means tags
	are serialized as {namespace}tagName instead of namespace#tagName
	* Fixed: HTTP_BasicAuth class now works as expected.
	* Fixed: DAV_Server uses / for a default baseUrl.
	* Fixed: Last modification date is no longer ignored in PROPFIND.
	* Fixed: PROPFIND now sends back information about the requestUri even
	  when "Depth: 1" is specified.

0.5-alpha (2009-01-14)
	* Added: Added a very simple example for implementing a mapping to PHP
	  file streams. This should allow easy implementation of for example a
	  WebDAV to FTP proxy.
	* Added: HTTP Basic Authentication helper class.
	* Added: Sabre_HTTP_Response class. This centralizes HTTP operations and
	  will be a start towards the creating of a testing framework.
	* Updated: Backwards compatibility break: all require_once() statements
	  are removed
	  from all the files. It is now recommended to use autoloading of
	  classes, or just including lib/Sabre.includes.php. This fix was made
	  to allow easier integration into applications not using this standard
	  inclusion model.
	* Updated: Better in-file documentation.
	* Updated: Sabre_DAV_Tree can now work with Sabre_DAV_LockManager.
	* Updated: Fixes a shared-lock bug.
	* Updated: Removed ?> from the bottom of each php file.
	* Updated: Split up some operations from Sabre_DAV_Server to
	  Sabre_HTTP_Response.
	* Fixed: examples are now actually included in the pear package.

0.4-alpha (2008-11-05)
	* Passes all litmus tests!
	* Added: more examples
	* Added: Custom property support
	* Added: Shared lock support
	* Added: Depth support to locks
	* Added: Locking on unmapped urls (non-existent nodes)
	* Fixed: Advertising as WebDAV class 3 support

0.3-alpha (2008-06-29)
	* Fully working in MS Windows clients.
	* Added: temporary file filter: support for smultron files.
	* Added: Phing build scripts
	* Added: PEAR package
	* Fixed: MOVE bug identified using finder.
	* Fixed: Using gzuncompress instead of gzdecode in the temporary file
	  filter. This seems more common.

0.2-alpha (2008-05-27)
	* Somewhat working in Windows clients
	* Added: Working PROPPATCH method (doesn't support custom properties yet)
	* Added: Temporary filename handling system
	* Added: Sabre_DAV_IQuota to return quota information
	* Added: PROPFIND now reads the request body and only supplies the
	  requested properties

0.1-alpha (2008-04-04)
	* First release!
	* Passes litmus: basic, http and copymove test.
	* Fully working in Finder and DavFSv2

Project started: 2007-12-13