thomascube
2011-09-28 63d6e6dfc35e6d82c4a64f37c408794c163becd4
program/include/rcube_imap.php
@@ -418,7 +418,7 @@
    function set_search_set($str=null, $msgs=null, $charset=null, $sort_field=null, $threads=false, $sorted=false)
    {
        if (is_array($str) && $msgs == null)
            list($str, $msgs, $charset, $sort_field, $threads) = $str;
            list($str, $msgs, $charset, $sort_field, $threads, $sorted) = $str;
        if ($msgs === false)
            $msgs = array();
        else if ($msgs != null && !is_array($msgs))
@@ -1505,7 +1505,10 @@
        // use message index sort as default sorting
        if (!$this->sort_field) {
            if ($this->skip_deleted) {
                $a_index = $this->_search_index($mailbox, 'ALL');
                $a_index = $this->conn->search($mailbox, 'ALL UNDELETED');
                // I didn't found that SEARCH should return sorted IDs
                if (is_array($a_index))
                    sort($a_index);
            } else if ($max = $this->_messagecount($mailbox)) {
                $a_index = range(1, $max);
            }
@@ -2492,13 +2495,16 @@
        }
        // convert charset (if text or message part)
        if ($body && !$skip_charset_conv &&
            preg_match('/^(text|message)$/', $o_part->ctype_primary)
        ) {
            if (!$o_part->charset || strtoupper($o_part->charset) == 'US-ASCII') {
                $o_part->charset = $this->default_charset;
        if ($body && preg_match('/^(text|message)$/', $o_part->ctype_primary)) {
            // Remove NULL characters (#1486189)
            $body = str_replace("\x00", '', $body);
           if (!$skip_charset_conv) {
                if (!$o_part->charset || strtoupper($o_part->charset) == 'US-ASCII') {
                    $o_part->charset = $this->default_charset;
                }
                $body = rcube_charset_convert($body, $o_part->charset);
            }
            $body = rcube_charset_convert($body, $o_part->charset);
        }
        return $body;
@@ -3074,6 +3080,9 @@
        if (isset($data['folders'])) {
            $a_folders = $data['folders'];
        }
        else if (!$this->conn->connected()) {
           return array();
        }
        else {
            // Server supports LIST-EXTENDED, we can use selection options
            $config = rcmail::get_instance()->config;
@@ -3513,6 +3522,10 @@
     */
    function mailbox_info($mailbox)
    {
        if ($this->icache['options'] && $this->icache['options']['name'] == $mailbox) {
            return $this->icache['options'];
        }
        $acl       = $this->get_capability('ACL');
        $namespace = $this->get_namespace();
        $options   = array();
@@ -3565,7 +3578,8 @@
        }
        if (!empty($options['rights'])) {
            $options['norename'] = !in_array('x', $options['rights']);
            $options['norename'] = !in_array('x', $options['rights']) && !in_array('d', $options['rights']);
            if (!$options['noselect']) {
                $options['noselect'] = !in_array('r', $options['rights']);
            }
@@ -3573,6 +3587,8 @@
        else {
            $options['norename'] = $options['is_root'] || $options['namespace'] != 'personal';
        }
        $this->icache['options'] = $options;
        return $options;
    }
@@ -3790,7 +3806,7 @@
            // @TODO: Honor MAXSIZE and DEPTH options
            foreach ($queries as $attrib => $entry)
                if ($result = $this->conn->getAnnotation($mailbox, $entry, $attrib))
                    $res = array_merge($res, $result);
                    $res = array_merge_recursive($res, $result);
            return $res;
        }
@@ -3828,13 +3844,13 @@
    /**
     * Enable or disable indexes caching
     *
     * @param boolean $type Cache type (@see rcmail::get_cache)
     * @param string $type Cache type (@see rcmail::get_cache)
     * @access public
     */
    function set_caching($type)
    {
        if ($type) {
            $this->caching = true;
            $this->caching = $type;
        }
        else {
            if ($this->cache)
@@ -3851,7 +3867,7 @@
    {
        if ($this->caching && !$this->cache) {
            $rcmail = rcmail::get_instance();
            $this->cache = $rcmail->get_cache('IMAP', $type);
            $this->cache = $rcmail->get_cache('IMAP', $this->caching);
        }
        return $this->cache;