thomascube
2011-04-14 bf80b5a237418621970a7c2bfd4f99c9373cb471
Fix vcard folding with uncode characters (#1487868)

2 files modified
22 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/include/rcube_vcard.php 21 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix vcard folding with uncode characters (#1487868)
- Keep all submitted data if contact form validation fails (#1487865)
- Handle uncode strings in rcube_addressbook::normalize_string() (#1487866)
- Fix bug where template name without plugin prefix was used in render_page hook
program/include/rcube_vcard.php
@@ -465,7 +465,26 @@
  private static function rfc2425_fold_callback($matches)
  {
    return ":\n  ".rtrim(chunk_split($matches[1], 72, "\n  "));
    // use mb string function if available
    if (function_exists('mb_ereg_replace')) {
      mb_internal_encoding(RCMAIL_CHARSET);
      return ":\n  " . mb_ereg_replace('(.{70})', "\\1\n  ", $matches[1]);
    }
    // chunk_split string and avoid lines breaking multibyte characters
    $c = 66;
    $out = ":\n  " . substr($matches[1], 0, $c);
    for ($n = $c; $c < strlen($matches[1]); $c++) {
      // break if length > 70 or mutlibyte character starts after position 66
      if ($n > 70 || ($n > 66 && ord($matches[1][$c]) >> 6 == 3)) {
        $out .= "\n  ";
        $n = 0;
      }
      $out .= $matches[1][$c];
      $n++;
    }
    return $out;
  }
  private static function rfc2425_fold($val)