From 330a10b95294bcc082b880f30d9548891d63a1b0 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Tue, 15 Jun 2010 06:15:41 -0400 Subject: [PATCH] - remove debug code --- program/steps/mail/func.inc | 125 +++++++++++++++++++++++++++++++++++------ 1 files changed, 106 insertions(+), 19 deletions(-) diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 93eb97f..a63b509 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -171,6 +171,10 @@ && (($f = array_search('from', $a_show_cols)) !== false) && array_search('to', $a_show_cols) === false) $a_show_cols[$f] = 'to'; + // make sure 'threads' column is present + if (!in_array('threads', $a_show_cols)) + array_unshift($a_show_cols, 'threads'); + $skin_path = $_SESSION['skin_path'] = $CONFIG['skin_path']; // set client env @@ -223,7 +227,7 @@ */ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $head_replace=FALSE) { - global $CONFIG, $IMAP, $OUTPUT; + global $CONFIG, $IMAP, $RCMAIL, $OUTPUT; if (!empty($_SESSION['list_attrib']['columns'])) $a_show_cols = $_SESSION['list_attrib']['columns']; @@ -238,6 +242,18 @@ && (($f = array_search('from', $a_show_cols)) !== false) && array_search('to', $a_show_cols) === false) $a_show_cols[$f] = 'to'; + // make sure 'threads' column is present + if (!in_array('threads', $a_show_cols)) + array_unshift($a_show_cols, 'threads'); + + // Plugins may set header's list_cols/list_flags and other rcube_mail_header variables + // and list columns + $plugin = $RCMAIL->plugins->exec_hook('messages_list', + array('messages' => $a_headers, 'cols' => $a_show_cols)); + + $a_show_cols = $plugin['cols']; + $a_headers = $plugin['messages']; + $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL; $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead); @@ -245,20 +261,22 @@ if (empty($a_headers)) return; - // remove 'attachment' and 'flag' columns, we don't need them here - if(($key = array_search('attachment', $a_show_cols)) !== FALSE) + // remove 'threads', 'attachment', 'flag' columns, we don't need them here + if (($key = array_search('attachment', $a_show_cols)) !== FALSE) unset($a_show_cols[$key]); - if(($key = array_search('flag', $a_show_cols)) !== FALSE) + if (($key = array_search('flag', $a_show_cols)) !== FALSE) unset($a_show_cols[$key]); - + if (($key = array_search('threads', $a_show_cols)) !== FALSE) + unset($a_show_cols[$key]); // loop through message headers + foreach ($a_headers as $n => $header) { - $a_msg_cols = array(); - $a_msg_flags = array(); - if (empty($header)) continue; + + $a_msg_cols = array(); + $a_msg_flags = array(); $IMAP->set_charset(!empty($header->charset) ? $header->charset : $CONFIG['default_charset']); @@ -307,6 +325,12 @@ $a_msg_flags['attachment'] = 1; $a_msg_flags['mbox'] = $mbox; + // merge with plugin result + if (!empty($header->list_flags) && is_array($header->list_flags)) + $a_msg_flags = array_merge($a_msg_flags, $header->list_flags); + if (!empty($header->list_cols) && is_array($header->list_cols)) + $a_msg_cols = array_merge($a_msg_cols, $header->list_cols); + $OUTPUT->command('add_message_row', $header->uid, $a_msg_cols, @@ -314,7 +338,7 @@ $insert_top); } - if ($IMAP->threading && $a_headers) { + if ($IMAP->threading) { $OUTPUT->command('init_threads', (array) $roots); } } @@ -345,7 +369,7 @@ else $list_menu = ''; - $cells = array(array('className' => 'threads', 'html' => $list_menu)); + $cells = array(); foreach ($a_show_cols as $col) { // get column name @@ -355,6 +379,9 @@ break; case 'attachment': $col_name = sprintf($image_tag, $skin_path, $attrib['attachmenticon'], ''); + break; + case 'threads': + $col_name = $list_menu; break; default: $col_name = Q(rcube_label($col)); @@ -524,12 +551,16 @@ } -function rcmail_send_unread_count($mbox_name, $force=false) +function rcmail_send_unread_count($mbox_name, $force=false, $count=null) { global $RCMAIL; $old_unseen = $_SESSION['unseen_count'][$mbox_name]; - $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force); + + if ($count === null) + $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force); + else + $unseen = $count; if ($unseen != $old_unseen || ($mbox_name == 'INBOX')) $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX')); @@ -932,6 +963,11 @@ // fetch part if not available if (!isset($part->body)) $part->body = $MESSAGE->get_part_content($part->mime_id); + + // message is cached but not exists (#1485443), or other error + if ($part->body === false) { + rcmail_message_error($MESSAGE->uid); + } // re-format format=flowed content if ($part->ctype_secondary == "plain" && $part->ctype_parameters['format'] == "flowed") @@ -1366,8 +1402,8 @@ if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { if (preg_match_all('/<([^@]+@[^>]+)>/', $headers_enc['To'], $m)) { $headers_enc['To'] = implode(', ', $m[1]); - } } + } $msg_body = $message->get(); @@ -1376,10 +1412,23 @@ 'file' => __FILE__, 'line' => __LINE__, 'message' => "Could not create message: ".$msg_body->getMessage()), TRUE, FALSE); - else if (ini_get('safe_mode')) - $sent = mail($headers_enc['To'], $headers_enc['Subject'], $msg_body, $header_str); - else - $sent = mail($headers_enc['To'], $headers_enc['Subject'], $msg_body, $header_str, "-f$from"); + else { + $delim = $RCMAIL->config->header_delimiter(); + $to = $headers_enc['To']; + $subject = $headers_enc['Subject']; + + if ($delim != "\r\n") { + $header_str = str_replace("\r\n", $delim, $header_str); + $msg_body = str_replace("\r\n", $delim, $msg_body); + $to = str_replace("\r\n", $delim, $to); + $subject = str_replace("\r\n", $delim, $subject); + } + + if (ini_get('safe_mode')) + $sent = mail($to, $subject, $msg_body, $header_str); + else + $sent = mail($to, $subject, $msg_body, $header_str, "-f$from"); + } } if ($sent) { @@ -1418,7 +1467,7 @@ $recipient = array_shift($IMAP->decode_address_list($message->headers->mdn_to)); $mailto = $recipient['mailto']; - $compose = new Mail_mime($RCMAIL->config->header_delimiter()); + $compose = new Mail_mime("\r\n"); $compose->setParam('text_encoding', 'quoted-printable'); $compose->setParam('html_encoding', 'quoted-printable'); @@ -1429,7 +1478,7 @@ // compose headers array $headers = array( - 'Date' => date('r'), + 'Date' => rcmail_user_date(), 'From' => $sender, 'To' => $message->headers->mdn_to, 'Subject' => rcube_label('receiptread') . ': ' . $message->subject, @@ -1474,6 +1523,29 @@ return false; } +// Returns RFC2822 formatted current date in user's timezone +function rcmail_user_date() +{ + global $CONFIG; + + // get user's timezone + if ($CONFIG['timezone'] === 'auto') { + $tz = isset($_SESSION['timezone']) ? $_SESSION['timezone'] : date('Z')/3600; + } + else { + $tz = $CONFIG['timezone']; + if ($CONFIG['dst_active']) + $tz++; + } + + $date = time() + $tz * 60 * 60; + $date = gmdate('r', $date); + $date = preg_replace('/[+-][0-9]{4}$/', sprintf('%+05d', $tz * 100), $date); + + return $date; +} + + function rcmail_search_filter($attrib) { global $OUTPUT, $CONFIG; @@ -1506,6 +1578,21 @@ return $out; } +function rcmail_message_error($uid=null) +{ + global $RCMAIL; + + // Set env variables for messageerror.html template + if ($RCMAIL->action == 'show') { + $mbox_name = $RCMAIL->imap->get_mailbox_name(); + $RCMAIL->output->set_env('mailbox', $mbox_name); + $RCMAIL->output->set_env('uid', null); + } + // display error message + $RCMAIL->output->show_message('messageopenerror', 'error'); + // ... display message error page + $RCMAIL->output->send('messageerror'); +} // register UI objects $OUTPUT->add_handlers(array( -- Gitblit v1.9.1