From e93e54fb265481d60bcb4fd2e995366afa758b72 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Sun, 21 Sep 2008 07:05:41 -0400 Subject: [PATCH] Tiny correction of phpdoc --- program/include/rcube_imap.php | 116 ++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 72 insertions(+), 44 deletions(-) diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 8a7ad2c..e7ad17a 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -1017,7 +1017,7 @@ * an object structure similar to the one generated by PEAR::Mail_mimeDecode * * @param int Message UID to fetch - * @return object stdClass Message part tree or False on failure + * @return object rcube_message_part Message part tree or False on failure */ function &get_structure($uid) { @@ -1198,65 +1198,66 @@ } // some servers (eg. dovecot-1.x) have no support for parameter value continuations // we must fetch and parse headers "manually" + //TODO: fetching headers for a second time is not effecient, this code should be moved somewhere earlier --tensor if ($i<2) { // TODO: fetch only Content-Type/Content-Disposition header - $headers = iil_C_FetchPartBody($this->conn, $this->mailbox, $this->_msg_id, $struct->mime_id.'.HEADER'); - $filename_mime = ''; - $i = 0; - while (preg_match('/filename\*'.$i.'\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { - $filename_mime .= $matches[1]; - $i++; - } - } + $headers = iil_C_FetchPartHeader($this->conn, $this->mailbox, $this->_msg_id, $part->mime_id); + $filename_mime = ''; + $i = 0; + while (preg_match('/filename\*'.$i.'\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { + $filename_mime .= $matches[1]; + $i++; + } } + } else if (!empty($part->d_parameters['filename*0*'])) { $i = 0; while (isset($part->d_parameters['filename*'.$i.'*'])) { $i++; - $filename_encoded .= $part->d_parameters['filename*'.$i.'*']; - } - if ($i<2) { - $headers = iil_C_FetchPartBody($this->conn, $this->mailbox, $this->_msg_id, $struct->mime_id.'.HEADER'); - $filename_encoded = ''; - $i = 0; - while (preg_match('/filename\*'.$i.'\*\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { - $filename_encoded .= $matches[1]; - $i++; - } - } + $filename_encoded .= $part->d_parameters['filename*'.$i.'*']; } + if ($i<2) { + $headers = iil_C_FetchPartHeader($this->conn, $this->mailbox, $this->_msg_id, $part->mime_id); + $filename_encoded = ''; + $i = 0; $matches = array(); + while (preg_match('/filename\*'.$i.'\*\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { + $filename_encoded .= $matches[1]; + $i++; + } + } + } else if (!empty($part->ctype_parameters['name*0'])) { $i = 0; while (isset($part->ctype_parameters['name*'.$i])) { $i++; $filename_mime .= $part->ctype_parameters['name*'.$i]; - } - if ($i<2) { - $headers = iil_C_FetchPartBody($this->conn, $this->mailbox, $this->_msg_id, $struct->mime_id.'.HEADER'); - $filename_mime = ''; - $i = 0; - while (preg_match('/\s+name\*'.$i.'\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { - $filename_mime .= $matches[1]; - $i++; - } - } } + if ($i<2) { + $headers = iil_C_FetchPartHeader($this->conn, $this->mailbox, $this->_msg_id, $part->mime_id); + $filename_mime = ''; + $i = 0; $matches = array(); + while (preg_match('/\s+name\*'.$i.'\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { + $filename_mime .= $matches[1]; + $i++; + } + } + } else if (!empty($part->ctype_parameters['name*0*'])) { $i = 0; while (isset($part->ctype_parameters['name*'.$i.'*'])) { $i++; $filename_encoded .= $part->ctype_parameters['name*'.$i.'*']; - } - if ($i<2) { - $headers = iil_C_FetchPartBody($this->conn, $this->mailbox, $this->_msg_id, $struct->mime_id.'.HEADER'); - $filename_encoded = ''; - $i = 0; - while (preg_match('/\s+name\*'.$i.'\*\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { - $filename_encoded .= $matches[1]; - $i++; - } - } } + if ($i<2) { + $headers = iil_C_FetchPartHeader($this->conn, $this->mailbox, $this->_msg_id, $part->mime_id); + $filename_encoded = ''; + $i = 0; $matches = array(); + while (preg_match('/\s+name\*'.$i.'\*\s*=\s*"*([^"\n;]+)[";]*/', $headers, $matches)) { + $filename_encoded .= $matches[1]; + $i++; + } + } + } // Content-Disposition else if (!empty($part->headers['content-description'])) $filename_mime = $part->headers['content-description']; @@ -1266,7 +1267,7 @@ // decode filename if (!empty($filename_mime)) { $part->filename = rcube_imap::decode_mime_string($filename_mime, - $part->charset ? $part->charset : rc_detect_encoding($filename_mime, $this->default_charset)); + $part->charset ? $part->charset : rc_detect_encoding($filename_mime, $this->default_charset)); } else if (!empty($filename_encoded)) { // decode filename according to RFC 2231, Section 4 @@ -1283,9 +1284,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; @@ -1318,7 +1320,10 @@ } else { - $body = iil_C_HandlePartBody($this->conn, $this->mailbox, $msg_id, $part, 1); + 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 if ($o_part->encoding) @@ -1333,8 +1338,14 @@ $body = rcube_charset_convert($body, $o_part->charset); } + + if ($fp) + { + fwrite($fp, $body); + return true; + } } - + return $body; } @@ -1371,6 +1382,23 @@ return $body; } + + + /** + * Returns the message headers as string + * + * @param int Message UID + * @return string Message headers string + */ + function &get_raw_headers($uid) + { + if (!($msg_id = $this->_uid2id($uid))) + return FALSE; + + $headers = iil_C_FetchPartHeader($this->conn, $this->mailbox, $msg_id, NULL); + + return $headers; + } /** -- Gitblit v1.9.1