From cde01557640c6052c4fd1d1976ef17cea294d351 Mon Sep 17 00:00:00 2001
From: Paul Mehrer
Date: Fri, 25 Oct 2024 17:21:30 +0200
Subject: [PATCH] tweak(PHP83) fix encoding issue
---
tine20/Tinebase/Convert/VCalendar/Abstract.php | 15 ++++++++-------
tine20/Tinebase/Helper.php | 4 ++--
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/tine20/Tinebase/Convert/VCalendar/Abstract.php b/tine20/Tinebase/Convert/VCalendar/Abstract.php
index f1e9839122..7ed1c9ca38 100644
--- a/tine20/Tinebase/Convert/VCalendar/Abstract.php
+++ b/tine20/Tinebase/Convert/VCalendar/Abstract.php
@@ -57,18 +57,19 @@ public static function getVObject($blob)
$blob = stream_get_contents($blob);
}
- $blob = Tinebase_Core::filterInputForDatabase($blob);
+ $filteredBlob = Tinebase_Core::filterInputForDatabase($blob);
try {
- $vcalendar = self::readVCalBlob($blob);
+ $vcalendar = self::readVCalBlob($filteredBlob);
} catch (Sabre\VObject\ParseException $svpe) {
- // try again with utf8_encoded blob
- $utf8_blob = Tinebase_Helper::mbConvertTo($blob);
- // alse replace some linebreaks and \x00's
+ // replace some linebreaks and \x00's
$search = array("\r\n", "\x00");
$replace = array("\n", '');
- $utf8_blob = str_replace($search, $replace, $utf8_blob);
- $vcalendar = self::readVCalBlob($utf8_blob);
+ $filteredBlob = str_replace($search, $replace, $blob);
+ // try again with utf8_encoded blob
+ $filteredBlob = Tinebase_Helper::mbConvertTo($filteredBlob);
+
+ $vcalendar = self::readVCalBlob($filteredBlob);
}
return $vcalendar;
diff --git a/tine20/Tinebase/Helper.php b/tine20/Tinebase/Helper.php
index 9e2591e9f3..e5574f1919 100644
--- a/tine20/Tinebase/Helper.php
+++ b/tine20/Tinebase/Helper.php
@@ -261,12 +261,12 @@ public static function in_array_case($_arr, $_str)
* @param string $encodingTo (default: utf-8)
* @return string
*/
- public static function mbConvertTo($string, $encodingTo = 'utf-8')
+ public static function mbConvertTo($string, $encodingTo = 'UTF-8')
{
// try to fix bad encodings
$encoding = mb_detect_encoding((string)$string, 'UTF-8', true);
if ($encoding !== 'UTF-8') {
- $encoding = mb_detect_encoding((string)$string, array('UTF-8', 'iso-8859-1', 'iso-8859-15'));
+ $encoding = mb_detect_encoding((string)$string, array('UTF-8', 'ISO-8859-1', 'ISO-8859-15'));
}
if ($encoding !== FALSE) {
$string = @mb_convert_encoding((string)$string, $encodingTo, $encoding);