From 580ff9c55e81aae04add43c95071c57e346a19ce Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Mon, 25 Jan 2010 14:05:05 -0500 Subject: [PATCH] - set svn:keywords --- program/steps/mail/search.inc | 67 ++++++++++++++++++++------------- 1 files changed, 40 insertions(+), 27 deletions(-) diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc index b7ab2e1..6a1c8c4 100644 --- a/program/steps/mail/search.inc +++ b/program/steps/mail/search.inc @@ -11,6 +11,8 @@ | Thomas Bruederli <roundcube@gmail.com> | +-----------------------------------------------------------------------+ + $Id$ + */ $REMOTE_REQUEST = TRUE; @@ -21,13 +23,14 @@ $_SESSION['page'] = 1; // using encodeURI with javascript "should" give us -// a correctly UTF-8 encoded query string -$imap_charset = 'UTF-8'; +// a correctly encoded query string +$imap_charset = RCMAIL_CHARSET; // get search string $str = get_input_value('_q', RCUBE_INPUT_GET); $filter = get_input_value('_filter', RCUBE_INPUT_GET); $mbox = get_input_value('_mbox', RCUBE_INPUT_GET); +$headers = get_input_value('_headers', RCUBE_INPUT_GET); $search_request = md5($mbox.$filter.$str); // add list filter string @@ -39,47 +42,55 @@ if (preg_match("/^from:.*/i", $str)) { list(,$srch) = explode(":", $str); - $subject = "HEADER FROM"; - $search = trim($srch); + $subject['from'] = "HEADER FROM"; } -else if (preg_match("/^to.*:/i", $str)) +else if (preg_match("/^to:.*/i", $str)) { list(,$srch) = explode(":", $str); - $subject = "HEADER TO"; - $search = trim($srch); + $subject['to'] = "HEADER TO"; } else if (preg_match("/^cc:.*/i", $str)) { list(,$srch) = explode(":", $str); - $subject = "HEADER CC"; - $search = trim($srch); + $subject['cc'] = "HEADER CC"; +} +else if (preg_match("/^bcc:.*/i", $str)) +{ + list(,$srch) = explode(":", $str); + $subject['bcc'] = "HEADER BCC"; } else if (preg_match("/^subject:.*/i", $str)) { list(,$srch) = explode(":", $str); - $subject = "HEADER SUBJECT"; - $search = trim($srch); + $subject['subject'] = "HEADER SUBJECT"; } else if (preg_match("/^body:.*/i", $str)) { list(,$srch) = explode(":", $str); - $subject = "TEXT"; - $search = trim($srch); + $subject['text'] = "TEXT"; } -// search in subject and sender by default else if(trim($str)) { - $from = ($mbox == $CONFIG['sent_mbox'] || $mbox == $CONFIG['drafts_mbox']) ? "TO" : "FROM"; - $subject = array("HEADER SUBJECT", "HEADER $from"); - $search = trim($str); + if ($headers) { + $headers = explode(',', $headers); + foreach($headers as $header) + switch ($header) { + case 'text': $subject['text'] = 'TEXT'; break; + default: $subject[$header] = 'HEADER '.$header; + } + } else { + // search in subject by default + $subject['subject'] = 'HEADER SUBJECT'; + } } -if ($subject && !is_array($subject)) - $search_str .= sprintf(" %s {%d}\r\n%s", $subject, strlen($search), $search); -else if ($subject) { - $search_str .= ' OR'; - foreach($subject as $sub) +$search = $srch ? trim($srch) : trim($str); + +if ($subject) { + $search_str .= str_repeat(' OR', count($subject)-1); + foreach ($subject as $sub) $search_str .= sprintf(" %s {%d}\r\n%s", $sub, strlen($search), $search); + $_SESSION['search_mods'] = $subject; } $search_str = trim($search_str); @@ -96,15 +107,17 @@ if (!is_array($_SESSION['search'])) $_SESSION['search'] = array(); +if ($search_str) { + $_SESSION['search'][$search_request] = $IMAP->get_search_set(); + $_SESSION['last_text_search'] = $str; +} + // Make sure we got the headers if (!empty($result_h)) { - if ($search_str) { - $_SESSION['search'][$search_request] = $IMAP->get_search_set(); - $_SESSION['last_text_search'] = $str; - } rcmail_js_message_list($result_h); - $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count)); + if ($search_str) + $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count)); } else { -- Gitblit v1.9.1