thomascube
2008-03-21 17b5fb797f4bc142fee8cd72ade3890b4dfdbd82
program/include/rcube_imap.inc
@@ -51,6 +51,7 @@
  var $sort_order = 'DESC';
  var $delimiter = NULL;
  var $caching_enabled = FALSE;
  var $default_charset = 'ISO-8859-1';
  var $default_folders = array('INBOX');
  var $default_folders_lc = array('inbox');
  var $cache = array();
@@ -200,6 +201,20 @@
    
    if (empty($this->delimiter))
      $this->get_hierarchy_delimiter();
    }
  /**
   * Set default message charset
   *
   * This will be used for message decoding if a charset specification is not available
   *
   * @param  string   Charset string
   * @access public
   */
  function set_charset($cs)
    {
    $this->default_charset = $ch;
    }
@@ -1145,12 +1160,16 @@
      }
      
    // normalize filename property
    if (!empty($struct->d_parameters['filename']))
      $struct->filename = $this->decode_mime_string($struct->d_parameters['filename']);
    else if (!empty($struct->ctype_parameters['name']))
      $struct->filename = $this->decode_mime_string($struct->ctype_parameters['name']);
    if ($filename_mime = $struct->d_parameters['filename'] ? $struct->d_parameters['filename'] : $struct->ctype_parameters['name'])
      $struct->filename = rcube_imap::decode_mime_string($filename_mime, $this->default_charset);
    else if ($filename_encoded = $struct->d_parameters['filename*'] ? $struct->d_parameters['filename*'] : $struct->ctype_parameters['name*'])
    {
      // decode filename according to RFC 2231, Section 4
      list($filename_charset,, $filename_urlencoded) = split('\'', $filename_encoded);
      $struct->filename = rcube_charset_convert(urldecode($filename_urlencoded), $filename_charset);
    }
    else if (!empty($struct->headers['content-description']))
      $struct->filename = $this->decode_mime_string($struct->headers['content-description']);
      $struct->filename = rcube_imap::decode_mime_string($struct->headers['content-description'], $this->default_charset);
      
    return $struct;
    }
@@ -1237,9 +1256,9 @@
      // convert charset (if text or message part)
      if ($o_part->ctype_primary=='text' || $o_part->ctype_primary=='message')
        {
        // assume ISO-8859-1 if no charset specified
        // assume default if no charset specified
        if (empty($o_part->charset))
          $o_part->charset = 'ISO-8859-1';
          $o_part->charset = $this->default_charset;
        $body = rcube_charset_convert($body, $o_part->charset);
        }
@@ -2293,7 +2312,7 @@
   */
  function decode_header($input, $remove_quotes=FALSE)
    {
    $str = $this->decode_mime_string((string)$input);
    $str = rcube_imap::decode_mime_string((string)$input, $this->default_charset);
    if ($str{0}=='"' && $remove_quotes)
      $str = str_replace('"', '', $str);
    
@@ -2410,7 +2429,7 @@
      return rcube_charset_convert($body, $ctype_param['charset']);
    // defaults to what is specified in the class header
    return rcube_charset_convert($body,  'ISO-8859-1');
    return rcube_charset_convert($body,  $this->default_charset);
    }