Skip to content

Commit

Permalink
Merge pull request #946 from fruux/carddav-addressdata-bug
Browse files Browse the repository at this point in the history
Fix parsing bug for some CardDAV reports.
  • Loading branch information
evert committed Feb 15, 2017
2 parents 11ba8e9 + 4daf9aa commit e987775
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 3 deletions.
10 changes: 10 additions & 0 deletions CHANGELOG.md
@@ -1,6 +1,16 @@
ChangeLog
=========

3.2.2 (2017-02-14)
------------------

* #943: Fix CardDAV XML reporting bug, which was affecting several CardDAV
clients. Bug was introduced in 3.2.1.
* The zip release ships with [sabre/vobject 4.1.2][vobj],
[sabre/http 4.2.2][http], [sabre/event 3.0.0][evnt],
[sabre/uri 1.2.0][uri] and [sabre/xml 1.5.0][xml].


3.2.1 (2017-01-28)
------------------

Expand Down
2 changes: 1 addition & 1 deletion composer.json
Expand Up @@ -32,7 +32,7 @@
"psr/log": "^1.0"
},
"require-dev" : {
"phpunit/phpunit" : "> 4.8, <=6.0.0",
"phpunit/phpunit" : "> 4.8, <6.0.0",
"evert/phpdoc-md" : "~0.1.0",
"sabre/cs" : "^1.0.0",
"monolog/monolog": "^1.18"
Expand Down
1 change: 0 additions & 1 deletion lib/CardDAV/Xml/Filter/AddressData.php
Expand Up @@ -56,7 +56,6 @@ static function xmlDeserialize(Reader $reader) {
return $element['attributes']['name'];
}, $elems);

$reader->next();
return $result;

}
Expand Down
2 changes: 1 addition & 1 deletion lib/DAV/Version.php
Expand Up @@ -14,6 +14,6 @@ class Version {
/**
* Full version number
*/
const VERSION = '3.2.1';
const VERSION = '3.2.2';

}
47 changes: 47 additions & 0 deletions tests/Sabre/CardDAV/Xml/Request/AddressBookMultiGetTest.php
@@ -0,0 +1,47 @@
<?php

namespace Sabre\CardDAV\Xml\Request;

use Sabre\DAV\Xml\XmlTest;

class AddressBookMultiGetTest extends XmlTest {

protected $elementMap = [
'{urn:ietf:params:xml:ns:carddav}addressbook-multiget' => 'Sabre\\CardDAV\\Xml\\Request\AddressBookMultiGetReport',
];

function testDeserialize() {

/* lines look a bit odd but this triggers an XML parsing bug */
$xml = <<<XML
<?xml version='1.0' encoding='UTF-8' ?>
<CARD:addressbook-multiget xmlns="DAV:" xmlns:CARD="urn:ietf:params:xml:ns:carddav">
<prop>
<getcontenttype />
<getetag />
<CARD:address-data content-type="text/vcard" version="4.0" /></prop><href>/foo.vcf</href>
</CARD:addressbook-multiget>
XML;

$result = $this->parse($xml);
$addressBookMultiGetReport = new AddressBookMultiGetReport();
$addressBookMultiGetReport->properties = [
'{DAV:}getcontenttype',
'{DAV:}getetag',
'{urn:ietf:params:xml:ns:carddav}address-data',
];
$addressBookMultiGetReport->hrefs = ['/foo.vcf'];
$addressBookMultiGetReport->contentType = 'text/vcard';
$addressBookMultiGetReport->version = '4.0';
$addressBookMultiGetReport->addressDataProperties = [];


$this->assertEquals(
$addressBookMultiGetReport,
$result['value']
);

}


}

0 comments on commit e987775

Please sign in to comment.