Skip to content

Commit 7622d0b

Browse files
committed
Fix parsing bug for some CardDAV reports.
Fixes #943
1 parent 11ba8e9 commit 7622d0b

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

lib/CardDAV/Xml/Filter/AddressData.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ static function xmlDeserialize(Reader $reader) {
5656
return $element['attributes']['name'];
5757
}, $elems);
5858

59-
$reader->next();
6059
return $result;
6160

6261
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
namespace Sabre\CardDAV\Xml\Request;
4+
5+
use Sabre\DAV\Xml\XmlTest;
6+
7+
class AddressBookMultiGetTest extends XmlTest {
8+
9+
protected $elementMap = [
10+
'{urn:ietf:params:xml:ns:carddav}addressbook-multiget' => 'Sabre\\CardDAV\\Xml\\Request\AddressBookMultiGetReport',
11+
];
12+
13+
function testDeserialize() {
14+
15+
/* lines look a bit odd but this triggers an XML parsing bug */
16+
$xml = <<<XML
17+
<?xml version='1.0' encoding='UTF-8' ?>
18+
<CARD:addressbook-multiget xmlns="DAV:" xmlns:CARD="urn:ietf:params:xml:ns:carddav">
19+
<prop>
20+
<getcontenttype />
21+
<getetag />
22+
<CARD:address-data content-type="text/vcard" version="4.0" /></prop><href>/foo.vcf</href>
23+
</CARD:addressbook-multiget>
24+
XML;
25+
26+
$result = $this->parse($xml);
27+
$addressBookMultiGetReport = new AddressBookMultiGetReport();
28+
$addressBookMultiGetReport->properties = [
29+
'{DAV:}getcontenttype',
30+
'{DAV:}getetag',
31+
'{urn:ietf:params:xml:ns:carddav}address-data',
32+
];
33+
$addressBookMultiGetReport->hrefs = ['/foo.vcf'];
34+
$addressBookMultiGetReport->contentType = 'text/vcard';
35+
$addressBookMultiGetReport->version = '4.0';
36+
$addressBookMultiGetReport->addressDataProperties = [];
37+
38+
39+
$this->assertEquals(
40+
$addressBookMultiGetReport,
41+
$result['value']
42+
);
43+
44+
}
45+
46+
47+
}

0 commit comments

Comments
 (0)