thomascube
2008-06-07 235086c7dec474eea538822386c093cf9e1fb93e
program/include/rcube_imap.php
@@ -1074,7 +1074,7 @@
      $struct->ctype_primary = 'multipart';
      
      // find first non-array entry
      for ($i=1; count($part); $i++)
      for ($i=1; $i<count($part); $i++)
        if (!is_array($part[$i]))
          {
          $struct->ctype_secondary = strtolower($part[$i]);
@@ -1085,7 +1085,7 @@
      $struct->parts = array();
      for ($i=0, $count=0; $i<count($part); $i++)
        if (is_array($part[$i]) && count($part[$i]) > 5)
        if (is_array($part[$i]) && count($part[$i]) > 3)
          $struct->parts[] = $this->_structure_part($part[$i], ++$count, $struct->mime_id);
          
      return $struct;
@@ -1248,7 +1248,10 @@
   */
  function &get_body($uid, $part=1)
    {
    return $this->get_message_part($uid, $part);
    $headers = $this->get_headers($uid);
    return rcube_charset_convert(
      $this->mime_decode($this->get_message_part($uid, $part), 'quoted-printable'),
      $headers->charset ? $headers->charset : $this->default_charset);
    }
@@ -1463,7 +1466,6 @@
    if (!is_array($a_uids))
      return false;
    // convert uids to message ids
    $a_mids = array();
    foreach ($a_uids as $uid)
@@ -1480,7 +1482,7 @@
      }
    // remove message ids from search set
    if ($moved && $this->search_set && $mailbox == $this->mailbox)
    if ($deleted && $this->search_set && $mailbox == $this->mailbox)
      $this->search_set = array_diff($this->search_set, $a_mids);
    // remove deleted messages from cache
@@ -2489,10 +2491,12 @@
   */
  function _sort_mailbox_list($a_folders)
    {
    $a_out = $a_defaults = array();
    $a_out = $a_defaults = $folders = array();
    $delimiter = $this->get_hierarchy_delimiter();
    // find default folders and skip folders starting with '.'
    foreach($a_folders as $i => $folder)
    foreach ($a_folders as $i => $folder)
      {
      if ($folder{0}=='.')
        continue;
@@ -2500,15 +2504,31 @@
      if (($p = array_search(strtolower($folder), $this->default_folders_lc)) !== false && !$a_defaults[$p])
        $a_defaults[$p] = $folder;
      else
   {
   $l_folders[$folder] = mb_strtolower(rcube_charset_convert($folder, 'UTF-7'));
        $folders[$folder] = rc_strtolower(rcube_charset_convert($folder, 'UTF-7'));
      }
    asort($folders, SORT_LOCALE_STRING);
    ksort($a_defaults);
    $folders = array_merge($a_defaults, array_keys($folders));
    // finally we must rebuild the list to move
    // subfolders of default folders to their place
    while (list($key, $folder) = each($folders)) {
      $a_out[] = $folder;
      unset($folders[$key]);
      if (in_array(strtolower($folder), $this->default_folders_lc)) {
   foreach ($folders as $idx => $f) {
     if (strpos($f, $folder.$delimiter) === 0) {
           $a_out[] = $f;
       unset($folders[$idx]);
       }
     }
   reset($folders);
   }
      }
    asort($l_folders, SORT_LOCALE_STRING);
    ksort($a_defaults);
    return array_merge($a_defaults, array_keys($l_folders));
    return $a_out;
    }
  /**