diff options
author | thomascube <thomas@roundcube.net> | 2009-08-12 11:42:12 +0000 |
---|---|---|
committer | thomascube <thomas@roundcube.net> | 2009-08-12 11:42:12 +0000 |
commit | 76791cf3c91c74c1da7ffe4112cea4c339eb774e (patch) | |
tree | 6ff4019df893ba0f20814a52a9a496570050ac1b | |
parent | 875ac893f18342384b13726ba4d200e5f76bc0c9 (diff) |
Extend message_compose hook with the possibility to specify attachments
-rw-r--r-- | program/steps/mail/compose.inc | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 5d5a949e3..2565d46f1 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -56,11 +56,41 @@ if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_v // pipe compose parameters thru plugins $plugin = $RCMAIL->plugins->exec_hook('message_compose', $_SESSION['compose']); $_SESSION['compose']['param'] = $plugin['param']; + + // add attachments listed by message_compose hook + if (is_array($plugin['attachments'])) { + foreach ($plugin['attachments'] as $attach) { + // we have structured data + if (is_array($attach)) { + $attachment = $attach; + } + // only a file path is given + else { + $filename = basename($attach); + $attachment = array( + 'name' => $filename, + 'mimetype' => rc_mime_content_type($attach, $filename), + 'path' => $attach + ); + } + + // save attachment if valid + if (($attachment['data'] && $attachment['name']) || ($attachment['path'] && file_exists($attachment['path']))) { + $attachment = rcmail::get_instance()->plugins->exec_hook('save_attachment', $attachment); + } + + if ($attachment['status'] && !$attachment['abort']) { + unset($attachment['data'], $attachment['status'], $attachment['abort']); + $_SESSION['compose']['attachments'][$attachment['id']] = $attachment; + } + } + } // redirect to a unique URL with all parameters stored in session $OUTPUT->redirect(array('_action' => 'compose', '_id' => $_SESSION['compose']['id'])); } + // add some labels to client $OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning', 'nobodywarning', 'notsentwarning', 'savingmessage', 'sendingmessage', 'messagesaved', @@ -685,7 +715,7 @@ function rcmail_save_attachment(&$message, $pid) $attachment = rcmail::get_instance()->plugins->exec_hook('save_attachment', $attachment); if ($attachment['status']) { - unset($attachment['data'], $attachment['status'], $attachment['content_id']); + unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']); return $attachment; } else if ($path) { @unlink($path); |