diff options
author | call-me-matt <nextcloud@matthiasheinisch.de> | 2020-10-09 16:27:41 +0200 |
---|---|---|
committer | call-me-matt <nextcloud@matthiasheinisch.de> | 2020-10-12 21:27:38 +0200 |
commit | 1b2386d10850f570ff6352f6847f293dd399b307 (patch) | |
tree | 5b1d001ade064f301b1392e27663a9c496c7985e /apps/dav/lib | |
parent | 0dbb99a81bc39cee97f6644faef5bec24881b69c (diff) | |
download | nextcloud-server-1b2386d10850f570ff6352f6847f293dd399b307.tar.gz nextcloud-server-1b2386d10850f570ff6352f6847f293dd399b307.zip |
handle nested properties, fixes #20544
Signed-off-by: call-me-matt <nextcloud@matthiasheinisch.de>
Diffstat (limited to 'apps/dav/lib')
-rw-r--r-- | apps/dav/lib/CardDAV/AddressBookImpl.php | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/apps/dav/lib/CardDAV/AddressBookImpl.php b/apps/dav/lib/CardDAV/AddressBookImpl.php index 1c35e2c400c..785ec2b7a01 100644 --- a/apps/dav/lib/CardDAV/AddressBookImpl.php +++ b/apps/dav/lib/CardDAV/AddressBookImpl.php @@ -146,7 +146,22 @@ class AddressBookImpl implements IAddressBook { } foreach ($properties as $key => $value) { - $vCard->$key = $vCard->createProperty($key, $value); + if (is_array($value)) { + $vCard->remove($key); + foreach ($value as $entry) { + if (($key === "ADR" || $key === "PHOTO") && is_string($entry["value"])) { + $entry["value"] = stripslashes($entry["value"]); + $entry["value"] = explode(';', $entry["value"]); + } + $property = $vCard->createProperty($key, $entry["value"]); + if (isset($entry["type"])) { + $property->add('TYPE', $entry["type"]); + } + $vCard->add($property); + } + } elseif ($key !== 'URI') { + $vCard->$key = $vCard->createProperty($key, $value); + } } if ($update) { |