Added 'message_compose' hook

release-0.6
thomascube 15 years ago
parent 996f0b4a1f
commit 75969686c2

@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Added 'message_compose' hook
- Added 'imap_connect' hook (#1485956)
- Fix vcard_attachments plugin (#1486035)
- Updated PEAR::Auth_SASL to 1.0.3 version

@ -545,7 +545,7 @@ function JQ($str)
* @return string Field value or NULL if not available
*/
function get_input_value($fname, $source, $allow_html=FALSE, $charset=NULL)
{
{
global $OUTPUT;
$value = NULL;
@ -582,7 +582,26 @@ function get_input_value($fname, $source, $allow_html=FALSE, $charset=NULL)
return rcube_charset_convert($value, $OUTPUT->get_charset(), $charset);
else
return $value;
}
/**
* Convert array of request parameters (prefixed with _)
* to a regular array with non-prefixed keys.
*
* @param int Source to get value from (GPC)
* @return array Hash array with all request parameters
*/
function request2param($mode = RCUBE_INPUT_GPC)
{
$out = array();
$src = $mode == RCUBE_INPUT_GET ? $_GET : ($mode == RCUBE_INPUT_POST ? $_POST : $_REQUEST);
foreach ($src as $key => $value) {
$fname = $key[0] == '_' ? substr($key, 1) : $key;
$out[$fname] = get_input_value($key, $mode);
}
return $out;
}
/**
* Remove all non-ascii and non-word chars
@ -958,8 +977,11 @@ function console()
{
$args = func_get_args();
if (class_exists('rcmail', false))
rcmail::get_instance()->plugins->exec_hook('console', $args);
if (class_exists('rcmail', false)) {
$rcmail = rcmail::get_instance();
if (is_object($rcmail->plugins))
$rcmail->plugins->exec_hook('console', $args);
}
$msg = array();
foreach ($args as $arg)

@ -38,20 +38,24 @@ if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_v
rcmail_compose_cleanup();
$_SESSION['compose'] = array(
'id' => uniqid(rand()),
'param' => array_map('strip_tags', $_GET),
'param' => request2param(RCUBE_INPUT_GET),
'mailbox' => $IMAP->get_mailbox_name(),
);
// process values like "mailto:foo@bar.com?subject=new+message&cc=another"
if ($_SESSION['compose']['param']['_to']) {
$mailto = explode('?', $_SESSION['compose']['param']['_to']);
if ($_SESSION['compose']['param']['to']) {
$mailto = explode('?', $_SESSION['compose']['param']['to']);
if (count($mailto) > 1) {
$_SESSION['compose']['param']['_to'] = $mailto[0];
$_SESSION['compose']['param']['to'] = $mailto[0];
parse_str($mailto[1], $query);
foreach ($query as $f => $val)
$_SESSION['compose']['param']["_$f"] = $val;
$_SESSION['compose']['param'][$f] = $val;
}
}
// pipe compose parameters thru plugins
$plugin = $RCMAIL->plugins->exec_hook('message_compose', $_SESSION['compose']);
$_SESSION['compose']['param'] = $plugin['param'];
// redirect to a unique URL with all parameters stored in session
$OUTPUT->redirect(array('_action' => 'compose', '_id' => $_SESSION['compose']['id']));
@ -71,13 +75,13 @@ if (!empty($CONFIG['drafts_mbox'])) {
$OUTPUT->set_env('mailbox', $IMAP->get_mailbox_name());
// get reference message and set compose mode
if ($msg_uid = $_SESSION['compose']['param']['_reply_uid'])
if ($msg_uid = $_SESSION['compose']['param']['reply_uid'])
$compose_mode = RCUBE_COMPOSE_REPLY;
else if ($msg_uid = $_SESSION['compose']['param']['_forward_uid'])
else if ($msg_uid = $_SESSION['compose']['param']['forward_uid'])
$compose_mode = RCUBE_COMPOSE_FORWARD;
else if ($msg_uid = $_SESSION['compose']['param']['_uid'])
else if ($msg_uid = $_SESSION['compose']['param']['uid'])
$compose_mode = RCUBE_COMPOSE_EDIT;
else if ($msg_uid = $_SESSION['compose']['param']['_draft_uid']) {
else if ($msg_uid = $_SESSION['compose']['param']['draft_uid']) {
$RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']);
$compose_mode = RCUBE_COMPOSE_DRAFT;
}
@ -98,7 +102,7 @@ if (!empty($msg_uid))
$_SESSION['compose']['reply_msgid'] = $MESSAGE->headers->messageID;
$_SESSION['compose']['references'] = trim($MESSAGE->headers->references . " " . $MESSAGE->headers->messageID);
if (!empty($_SESSION['compose']['param']['_all']))
if (!empty($_SESSION['compose']['param']['all']))
$MESSAGE->reply_all = 1;
}
else if ($compose_mode == RCUBE_COMPOSE_DRAFT)
@ -138,23 +142,23 @@ function rcmail_compose_headers($attrib)
case 'to':
$fname = '_to';
$header = 'to';
$header = $param = 'to';
// we have a set of recipients stored is session
if (($mailto_id = $_SESSION['compose']['param']['_mailto']) && $_SESSION['mailto'][$mailto_id])
if (($mailto_id = $_SESSION['compose']['param']['mailto']) && $_SESSION['mailto'][$mailto_id])
$fvalue = urldecode($_SESSION['mailto'][$mailto_id]);
case 'cc':
if (!$fname)
{
$fname = '_cc';
$header = 'cc';
$header = $param = 'cc';
}
case 'bcc':
if (!$fname)
{
$fname = '_bcc';
$header = 'bcc';
$header = $param = 'bcc';
}
$allow_attrib = array('id', 'class', 'style', 'cols', 'rows', 'tabindex');
@ -164,17 +168,19 @@ function rcmail_compose_headers($attrib)
case 'replyto':
case 'reply-to':
$fname = '_replyto';
$param = 'replyto';
$allow_attrib = array('id', 'class', 'style', 'size', 'tabindex');
$field_type = 'html_inputfield';
break;
}
if ($fname && !empty($_POST[$fname]))
if ($fname && !empty($_POST[$fname])) {
$fvalue = get_input_value($fname, RCUBE_INPUT_POST, TRUE);
else if ($fname && !$fvalue && !empty($_SESSION['compose']['param'][$fname]))
$fvalue = $_SESSION['compose']['param'][$fname];
else if ($header && $compose_mode == RCUBE_COMPOSE_REPLY)
{
}
else if ($fname && !$fvalue && !empty($_SESSION['compose']['param'][$param])) {
$fvalue = $_SESSION['compose']['param'][$param];
}
else if ($header && $compose_mode == RCUBE_COMPOSE_REPLY) {
// get recipent address(es) out of the message headers
if ($header=='to' && !empty($MESSAGE->headers->replyto))
$fvalue = $MESSAGE->headers->replyto;
@ -298,7 +304,7 @@ function rcmail_compose_header_from($attrib)
$select_from->add(format_email_recipient($sql_arr['email'], $sql_arr['name']), $identity_id);
// add signature to array
if (!empty($sql_arr['signature']) && empty($_SESSION['compose']['param']['_nosig']))
if (!empty($sql_arr['signature']) && empty($_SESSION['compose']['param']['nosig']))
{
$a_signatures[$identity_id]['text'] = $sql_arr['signature'];
$a_signatures[$identity_id]['is_html'] = ($sql_arr['html_signature'] == 1) ? true : false;
@ -369,6 +375,11 @@ function rcmail_compose_body($attrib)
{
$body = get_input_value('_message', RCUBE_INPUT_POST, true);
}
else if ($_SESSION['compose']['param']['body'])
{
$body = $_SESSION['compose']['param']['body'];
$isHtml = false;
}
else if ($compose_mode)
{
if (($isHtml || $compose_mode == RCUBE_COMPOSE_DRAFT) && $MESSAGE->has_html_part())
@ -392,9 +403,9 @@ function rcmail_compose_body($attrib)
else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT)
$body = rcmail_create_draft_body($body, $isHtml);
}
else if (!empty($_SESSION['compose']['param']['_body']))
else if (!empty($_SESSION['compose']['param']['body']))
{
$body = $_SESSION['compose']['param']['_body'];
$body = $_SESSION['compose']['param']['body'];
}
$out = $form_start ? "$form_start\n" : '';
@ -719,8 +730,8 @@ function rcmail_compose_subject($attrib)
else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
$subject = $MESSAGE->subject;
}
else if (!empty($_SESSION['compose']['param']['_subject'])) {
$subject = $_SESSION['compose']['param']['_subject'];
else if (!empty($_SESSION['compose']['param']['subject'])) {
$subject = $_SESSION['compose']['param']['subject'];
}
$out = $form_start ? "$form_start\n" : '';

Loading…
Cancel
Save