alecpl
2011-04-14 5c4c06665c23d9b8fe3d6a47e15d0b3f6daee368
- Fixed vcard folding: use one space, use mb_regex_encoding() (#1487868)


2 files modified
11 ■■■■ changed files
program/include/iniset.php 5 ●●●●● patch | view | raw | blame | history
program/include/rcube_vcard.php 6 ●●●● patch | view | raw | blame | history
program/include/iniset.php
@@ -74,9 +74,10 @@
@set_time_limit(120);
// set internal encoding for mbstring extension
if(extension_loaded('mbstring'))
if (extension_loaded('mbstring')) {
    mb_internal_encoding(RCMAIL_CHARSET);
    @mb_regex_encoding(RCMAIL_CHARSET);
}
/**
 * Use PHP5 autoload for dynamic class loading
program/include/rcube_vcard.php
@@ -467,16 +467,16 @@
  {
    // use mb string function if available
    if (function_exists('mb_ereg_replace')) {
      return ":\n  " . mb_ereg_replace('(.{70})', "\\1\n  ", $matches[1]);
      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);
    $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  ";
        $out .= "\n ";
        $n = 0;
      }
      $out .= $matches[1][$c];