From 497193750bc17183d7cfb1b36e0427465d638f33 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Mon, 5 Sep 2022 22:35:13 +0200 Subject: [PATCH] Idea to solve https://github.com/sabre-io/vobject/issues/589 --- .../Sabre/VObject/Component/VCard.php | 2 + .../libraries/Sabre/VObject/Parser/Json.php | 4 ++ .../libraries/Sabre/VObject/Parser/XML.php | 21 ++++++ .../Sabre/VObject/Property/XCrypto.php | 71 +++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/XCrypto.php diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component/VCard.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component/VCard.php index 82fab82bb..bb6d7a490 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component/VCard.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component/VCard.php @@ -136,6 +136,8 @@ class VCard extends VObject\Document 'HOBBY' => VObject\Property\FlatText::class, 'INTEREST' => VObject\Property\FlatText::class, 'ORG-DIRECTORY' => VObject\Property\FlatText::class, + + 'X-CRYPTO' => VObject\Property\XCrypto::class, ]; /** diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/Json.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/Json.php index f33603207..d0be82c9b 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/Json.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/Json.php @@ -151,6 +151,10 @@ class Json extends Parser unset($parameters['group']); } + if ('X-CRYPTO' === $propertyName) { + $propertyType = 'X-CRYPTO'; + } + $prop = $this->root->createProperty($propertyName, null, $parameters, $valueType); $prop->setJsonValue($value); diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/XML.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/XML.php index 78773173d..b8011391f 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/XML.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parser/XML.php @@ -272,6 +272,27 @@ class XML extends Parser } break; + case 'xcard:x-crypto': + foreach ($xmlProperty['value'] as $i => $xmlPropertyChild) { + if (is_array($xmlPropertyChild)) { + $propertyParameterValues = []; + foreach ($xmlPropertyChild['value'] as $xmlParameter) { + if (is_array($xmlParameter['value'])) { + foreach ($xmlParameter['value'] as $xmlParameterValues) { + $propertyParameterValues[] = $xmlParameterValues['value']; + } + } else { + $propertyParameterValues[] = $xmlParameter['value']; + } + } + $propertyParameters[static::getTagName($xmlPropertyChild['name'])] + = implode(',', $propertyParameterValues); + } + array_splice($xmlProperty['value'], $i, 1); + } + $propertyType = 'X-CRYPTO'; + break; + default: $propertyType = static::getTagName($xmlProperty['value'][0]['name']); diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/XCrypto.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/XCrypto.php new file mode 100644 index 000000000..61f300306 --- /dev/null +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/XCrypto.php @@ -0,0 +1,71 @@ +setValue(MimeDir::unescapeValue($val, $this->delimiter)); + } + + /** + * Returns a raw mime-dir representation of the value. + * + * @return string + */ + public function getRawMimeDirValue() + { + $result = []; + foreach ($this->parameters as $parameter) { + $result[] = strtolower($parameter->name) . '=' . $parameter->getValue(); + } + return implode(',', $result); + } + + public function xmlSerialize(\Sabre\Xml\Writer $writer): void + { + $writer->startElement(strtolower($this->name)); + foreach ($this->parameters as $parameter) { + $writer->startElement(strtolower($parameter->name)); + $writer->write($parameter); + $writer->endElement(); + } + $writer->endElement(); + } +}