diff options
author | thomascube <thomas@roundcube.net> | 2011-08-29 17:06:29 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2011-08-29 17:06:29 +0000 |
commit | d78771ad3ce75dc7eb5bb43f822be0b0ab8d6db2 (patch) | |
tree | 1bc468c9787e6084e5aacfe9d869aba3b1f73668 | |
parent | 33ee817dcf7a6e5f83f2ee20d5a9450553ab58b9 (diff) |
Add plugin hook message_part_get for message part downloads
-rw-r--r-- | program/steps/mail/get.inc | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc index 9138554f7..4eccd287e 100644 --- a/program/steps/mail/get.inc +++ b/program/steps/mail/get.inc @@ -79,10 +79,23 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) { $ctype_secondary = strtolower($part->ctype_secondary); $mimetype = sprintf('%s/%s', $ctype_primary, $ctype_secondary); + // allow post-processing of the message body + $plugin = $RCMAIL->plugins->exec_hook('message_part_get', + array('id' => $part->mime_id, 'mimetype' => $mimetype, 'part' => $part, 'download' => !empty($_GET['_download']))); + + if ($plugin['abort']) + exit; + + // overwrite modified vars from plugin + $mimetype = $plugin['mimetype']; + list($ctype_primary, $ctype_secondary) = explode('/', $mimetype); + if ($plugin['body']) + $part->body = $plugin['body']; + $browser = $RCMAIL->output->browser; // send download headers - if ($_GET['_download']) { + if ($plugin['download']) { header("Content-Type: application/octet-stream"); if ($browser->ie) header("Content-Type: application/force-download"); @@ -97,7 +110,7 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) { } // deliver part content - if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($_GET['_download'])) { + if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($plugin['download'])) { // get part body if not available if (!$part->body) $part->body = $MESSAGE->get_part_content($part->mime_id); @@ -119,7 +132,7 @@ else if ($pid = get_input_value('_part', RCUBE_INPUT_GET)) { else $filename = addcslashes($filename, '"'); - $disposition = !empty($_GET['_download']) ? 'attachment' : 'inline'; + $disposition = !empty($plugin['download']) ? 'attachment' : 'inline'; header("Content-Disposition: $disposition; filename=\"$filename\""); |