summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2009-08-12 11:42:12 +0000
committerthomascube <thomas@roundcube.net>2009-08-12 11:42:12 +0000
commit76791cf3c91c74c1da7ffe4112cea4c339eb774e (patch)
tree6ff4019df893ba0f20814a52a9a496570050ac1b
parent875ac893f18342384b13726ba4d200e5f76bc0c9 (diff)
Extend message_compose hook with the possibility to specify attachments
-rw-r--r--program/steps/mail/compose.inc32
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);