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