dev/core#1541 Fix ICalendar random invalid utf8 (PHP <7.4 compat) and tests
authorMathieu Lutfy <mathieu@symbiotic.coop>
Tue, 21 Jun 2022 13:54:05 +0000 (09:54 -0400)
committerSymbiotic Gitlab CI <robot@symbiotic.coop>
Tue, 21 Jun 2022 14:23:58 +0000 (10:23 -0400)
CRM/Utils/ICalendar.php
tests/phpunit/CRM/Utils/ICalendarTest.php

index b23f24f3c11d61ebf5cac9e7472b3634bcc16ced..170dbef1622f82dfe63ae11544add127eac2e4d5 100644 (file)
@@ -38,7 +38,9 @@ class CRM_Utils_ICalendar {
     $text = str_replace(',', '\,', $text);
     $text = str_replace(';', '\;', $text);
     $text = str_replace(["\r\n", "\n", "\r"], "\\n ", $text);
-    $text = implode("\n ", mb_str_split($text, 50));
+    // Remove this check after PHP 7.4 becomes a minimum requirement
+    $str_split = function_exists('mb_str_split') ? 'mb_str_split' : 'str_split';
+    $text = implode("\n ", $str_split($text, 50));
     return $text;
   }
 
@@ -51,6 +53,7 @@ class CRM_Utils_ICalendar {
    * @return string
    */
   public static function unformatText($text) {
+    $text = str_replace("\n ", "", $text);
     $text = str_replace('\n ', "\n", $text);
     $text = str_replace('\;', ';', $text);
     $text = str_replace('\,', ',', $text);
index 33eac671ed86479908fbaa77292b7e715e8a1bcd..180e94b6c41170c4de6b229ae11ca4bf939c47cb 100644 (file)
@@ -27,6 +27,8 @@ class CRM_Utils_ICalendarTest extends CiviUnitTestCase {
 
     this is, a \"test\"!",
     ];
+    $cases[] = ["one, two, three; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahh ahh ahhh"];
+    $cases[] = ["Bonjour! éèçô, этому скромному разработчику не нравится война на Украине 💓 💔 🌈 💕 💖"];
     return $cases;
   }