alecpl
2008-09-16 81b573d98ae143bd11b37ff2027bfad78e2d460c
program/include/rcube_imap.php
@@ -1283,9 +1283,10 @@
   * @param  string Part number
   * @param  object rcube_message_part Part object created by get_structure()
   * @param  mixed  True to print part, ressource to write part contents in
   * @param  resource File pointer to save the message part
   * @return string Message/part body if not printed
   */
  function &get_message_part($uid, $part=1, $o_part=NULL, $print=NULL)
  function &get_message_part($uid, $part=1, $o_part=NULL, $print=NULL, $fp=NULL)
    {
    if (!($msg_id = $this->_uid2id($uid)))
      return FALSE;
@@ -1293,6 +1294,7 @@
    // get part encoding if not provided
    if (!is_object($o_part))
      {
      write_log('errors', 'get_message_part: !is_object');
      $structure_str = iil_C_FetchStructureString($this->conn, $this->mailbox, $msg_id); 
      $structure = iml_GetRawStructureArray($structure_str);
      $part_type = iml_GetPartTypeCode($structure, $part);
@@ -1318,6 +1320,9 @@
      }
    else
      {
      if ($fp && $o_part->encoding == 'base64')
        return iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, $part, 3, $fp);
      else
      $body = iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, $part, 1);
      // decode part body
@@ -1333,6 +1338,12 @@
        $body = rcube_charset_convert($body, $o_part->charset);
        }
      if ($fp)
        {
        fwrite($fp, $body);
   return true;
        }
      }
    return $body;