thomascube
2009-07-13 c6514e01f9486b871ee07928497bafdab3b438e8
program/include/main.inc
@@ -183,9 +183,9 @@
  static $mbstring_loaded = null;
  static $mbstring_list = null;
  static $convert_warning = false;
  static $conv = null;
  $error = false;
  $conv = null;
  $to = empty($to) ? $to = strtoupper(RCMAIL_CHARSET) : rcube_parse_charset($to);
  $from = rcube_parse_charset($from);
@@ -223,34 +223,29 @@
    }
  }
  # try to convert with custom classes
  if (class_exists('utf8'))
    $conv = new utf8();
  // convert string to UTF-8
  // convert charset using bundled classes/functions
  if ($to == 'UTF-8') {
    if ($from == 'UTF7-IMAP') {
      if ($_str = utf7_to_utf8($str))
        $str = $_str;
      else
        $error = true;
        return $_str;
    }
    else if ($from == 'UTF-7') {
      if ($_str = rcube_utf7_to_utf8($str))
        $str = $_str;
      else
        $error = true;
        return $_str;
    }
    else if (($from == 'ISO-8859-1') && function_exists('utf8_encode')) {
      $str = utf8_encode($str);
      return utf8_encode($str);
    }
    else if ($from != 'UTF-8' && $conv) {
      $from = preg_replace(array('/^WINDOWS-*125([0-8])$/', '/^CP-/'), array('CP125\\1', 'CP'), $from);
      $conv->loadCharset($from);
      $str = $conv->strToUtf8($str);
    else if (class_exists('utf8')) {
      if (!$conv)
        $conv = new utf8($from);
      else
        $conv->loadCharset($from);
      if($_str = $conv->strToUtf8($str))
        return $_str;
    }
    else if ($from != 'UTF-8')
      $error = true;
    $error = true;
  }
  
  // encode string for output
@@ -258,36 +253,37 @@
    // @TODO: we need a function for UTF-7 (RFC2152) conversion
    if ($to == 'UTF7-IMAP' || $to == 'UTF-7') {
      if ($_str = utf8_to_utf7($str))
        $str = $_str;
      else
        $error = true;
        return $_str;
    }
    else if ($to == 'ISO-8859-1' && function_exists('utf8_decode')) {
      return utf8_decode($str);
    }
    else if ($to != 'UTF-8' && $conv) {
      $to = preg_replace(array('/^WINDOWS-*125([0-8])$/', '/^CP-/'), array('CP125\\1', 'CP'), $to);
      $conv->loadCharset($to);
      return $conv->utf8ToStr($str);
    else if (class_exists('utf8')) {
      if (!$conv)
        $conv = new utf8($to);
      else
        $conv->loadCharset($from);
      if ($_str = $conv->strToUtf8($str))
        return $_str;
    }
    else if ($to != 'UTF-8') {
      $error = true;
    }
    $error = true;
  }
  
  // report error
  if ($error && !$convert_warning){
  if ($error && !$convert_warning) {
    raise_error(array(
      'code' => 500,
      'type' => 'php',
      'file' => __FILE__,
      'line' => __LINE__,
      'message' => "Could not convert string from $from to $to. Make sure iconv/mbstring is installed or lib/utf8.class is available."
      ), true, false);
    
    $convert_warning = true;
  }
  
  // return UTF-8 string
  // return UTF-8 or original string
  return $str;
  }
@@ -893,6 +889,9 @@
  else if (!$format)
    $format = $CONFIG['date_long'] ? $CONFIG['date_long'] : 'd.m.Y H:i';
  // strftime() format
  if (preg_match('/%[a-z]+/i', $format))
    return strftime($format, $timestamp);
  // parse format string manually in order to provide localized weekday and month names
  // an alternative would be to convert the date() format string to fit with strftime()
@@ -1031,7 +1030,7 @@
/**
 * @access private
 */
function rcube_print_time($timer, $label='Timer')
function rcube_print_time($timer, $label='Timer', $dest='console')
{
  static $print_count = 0;
  
@@ -1042,7 +1041,7 @@
  if (empty($label))
    $label = 'Timer '.$print_count;
  
  console(sprintf("%s: %0.4f sec", $label, $diff));
  write_log($dest, sprintf("%s: %0.4f sec", $label, $diff));
}
@@ -1081,6 +1080,9 @@
    foreach ($a_folders as $folder)
      rcmail_build_folder_tree($a_mailboxes, $folder, $delimiter);
  }
  // allow plugins to alter the folder tree or to localize folder names
  $hook = $RCMAIL->plugins->exec_hook('render_mailboxlist', array('list' => $a_mailboxes, 'delimiter' => $delimiter));
  if ($type=='select') {
    $select = new html_select($attrib);
@@ -1089,12 +1091,12 @@
    if ($attrib['noselection'])
      $select->add(rcube_label($attrib['noselection']), '0');
    
    rcmail_render_folder_tree_select($a_mailboxes, $mbox_name, $attrib['maxlength'], $select, $attrib['realnames']);
    rcmail_render_folder_tree_select($hook['list'], $mbox_name, $attrib['maxlength'], $select, $attrib['realnames']);
    $out = $select->show();
  }
  else {
    $js_mailboxlist = array();
    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($a_mailboxes, $mbox_name, $js_mailboxlist, $attrib), html::$common_attrib);
    $out = html::tag('ul', $attrib, rcmail_render_folder_tree_html($hook['list'], $mbox_name, $js_mailboxlist, $attrib), html::$common_attrib);
    
    $RCMAIL->output->add_gui_object('mailboxlist', $attrib['id']);
    $RCMAIL->output->set_env('mailboxes', $js_mailboxlist);