diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2021-04-30 21:36:05 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2021-04-30 21:36:05 +0200 |
commit | a9f39aab29f1d08c58c6b3ef87f461c29740bf19 (patch) | |
tree | a72c34268d28cfe658ddd954327e81bf3866d9da /apps/dav/lib | |
parent | 36c9441c37368ad2cd0e044dc5f2adcf036e92d8 (diff) | |
download | nextcloud-server-a9f39aab29f1d08c58c6b3ef87f461c29740bf19.tar.gz nextcloud-server-a9f39aab29f1d08c58c6b3ef87f461c29740bf19.zip |
fix creating vcards with multiple string values
Internally it is valid to provide multiple values for a property as
plain string. An exampe is given in the PhpDoc of
AddressBookImpl::search().
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/dav/lib')
-rw-r--r-- | apps/dav/lib/CardDAV/AddressBookImpl.php | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/apps/dav/lib/CardDAV/AddressBookImpl.php b/apps/dav/lib/CardDAV/AddressBookImpl.php index a2895fed34a..e270b579e1f 100644 --- a/apps/dav/lib/CardDAV/AddressBookImpl.php +++ b/apps/dav/lib/CardDAV/AddressBookImpl.php @@ -150,13 +150,17 @@ class AddressBookImpl implements IAddressBook { 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"]); + if (is_string($entry)) { + $property = $vCard->createProperty($key, $entry); + } else { + 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); } |