aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib
diff options
context:
space:
mode:
authorcall-me-matt <nextcloud@matthiasheinisch.de>2020-10-09 16:27:41 +0200
committercall-me-matt <nextcloud@matthiasheinisch.de>2020-10-12 21:27:38 +0200
commit1b2386d10850f570ff6352f6847f293dd399b307 (patch)
tree5b1d001ade064f301b1392e27663a9c496c7985e /apps/dav/lib
parent0dbb99a81bc39cee97f6644faef5bec24881b69c (diff)
downloadnextcloud-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.php17
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) {