Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

"MDL-14907, fixed UTF8 fold in iCal export, thanks Tomasz Muras"

  • Loading branch information...
commit 1afd70b2ac5d02342bf35fc08ec080976d93ddbf 1 parent bc6a100
dongsheng authored
Showing with 21 additions and 6 deletions.
  1. +21 −6 lib/bennu/iCalendar_rfc2445.php
View
27 lib/bennu/iCalendar_rfc2445.php
@@ -54,19 +54,34 @@
function rfc2445_fold($string) {
- if(strlen($string) <= RFC2445_FOLDED_LINE_LENGTH) {
+ if(mb_strlen($string, 'utf-8') <= RFC2445_FOLDED_LINE_LENGTH) {
return $string;
}
$retval = '';
+
+ $i=0;
+ $len_count=0;
- while(strlen($string) > RFC2445_FOLDED_LINE_LENGTH) {
- $retval .= substr($string, 0, RFC2445_FOLDED_LINE_LENGTH - 1) . RFC2445_CRLF . ' ';
- $string = substr($string, RFC2445_FOLDED_LINE_LENGTH - 1);
+ //multi-byte string, get the correct length
+ $section_len = mb_strlen($string, 'utf-8');
+
+ while($len_count<$section_len) {
+
+ //get the current portion of the line
+ $section = mb_substr($string, ($i * RFC2445_FOLDED_LINE_LENGTH), (RFC2445_FOLDED_LINE_LENGTH), 'utf-8');
+
+ //increment the length we've processed by the length of the new portion
+ $len_count += mb_strlen($section, 'utf-8');
+
+ /* Add the portion to the return value, terminating with CRLF.HTAB
+ As per RFC 2445, CRLF.HTAB will be replaced by the processor of the
+ data */
+ $retval .= $section.RFC2445_CRLF.RFC2445_WSP;
+
+ $i++;
}
- $retval .= $string;
-
return $retval;
}
Please sign in to comment.
Something went wrong with that request. Please try again.