diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component.php index f33b628a7..cb08c0061 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Component.php @@ -249,7 +249,7 @@ class Component extends Node $result = []; foreach ($this->children as $childGroup) { foreach ($childGroup as $child) { - if ($child instanceof Property && strtoupper($child->group) === $group) { + if ($child instanceof Property && $child->group && strtoupper($child->group) === $group) { $result[] = $child; } } 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 eac789842..90a6df72f 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 @@ -291,6 +291,11 @@ class VCard extends VObject\Document $this->FN = (string) $this->ORG; $repaired = true; + // Otherwise, the NICKNAME property may work + } elseif (isset($this->NICKNAME)) { + $this->FN = (string) $this->NICKNAME; + $repaired = true; + // Otherwise, the EMAIL property may work } elseif (isset($this->EMAIL)) { $this->FN = (string) $this->EMAIL; diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parameter.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parameter.php index 4f1e860d4..7e4d55743 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parameter.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Parameter.php @@ -335,7 +335,7 @@ class Parameter extends Node */ public function xmlSerialize(Xml\Writer $writer) { - foreach (is_array($this->value) ? $this->value : explode(',', $this->value) as $value) { + foreach (explode(',', $this->value) as $value) { $writer->writeElement('text', $value); } } diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/ICalendar/CalAddress.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/ICalendar/CalAddress.php index 2dbbc6eaf..c90967d79 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/ICalendar/CalAddress.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Property/ICalendar/CalAddress.php @@ -53,7 +53,11 @@ class CalAddress extends Text return $input; } list($schema, $everythingElse) = explode(':', $input, 2); + $schema = strtolower($schema); + if ('mailto' === $schema) { + $everythingElse = strtolower($everythingElse); + } - return strtolower($schema).':'.$everythingElse; + return $schema.':'.$everythingElse; } } diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/StringUtil.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/StringUtil.php index 2333d6ab9..b04539e4a 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/StringUtil.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/StringUtil.php @@ -40,23 +40,11 @@ class StringUtil */ public static function convertToUTF8($str) { - $encoding = mb_detect_encoding($str, ['UTF-8', 'ISO-8859-1', 'WINDOWS-1252'], true); - - switch ($encoding) { - case 'ISO-8859-1': - $newStr = utf8_encode($str); - break; - /* Unreachable code. Not sure yet how we can improve this - * situation. - case 'WINDOWS-1252' : - $newStr = iconv('cp1252', 'UTF-8', $str); - break; - */ - default: - $newStr = $str; + if (!mb_check_encoding($str, 'UTF-8') && mb_check_encoding($str, 'ISO-8859-1')) { + $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1'); } // Removing any control characters - return preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', '', $newStr); + return preg_replace('%(?:[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F])%', '', $str); } } diff --git a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Version.php b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Version.php index 64938bf0b..ff8cf49c2 100644 --- a/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Version.php +++ b/snappymail/v/0.0.0/app/libraries/Sabre/VObject/Version.php @@ -14,5 +14,5 @@ class Version /** * Full version number. */ - const VERSION = '4.4.1'; + const VERSION = '4.4.2'; }