X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fimap_search.php;h=fbc9baeb551345657dbc1f549faa7eeff5750bbe;hb=e5f1d1ee9a85d2a271135d05f6d1300996e48aa8;hp=4190597ffca77b500273a3a7bb96ab5939fb211f;hpb=15e6162eacc97158393bc75aed3afeb7b19c24a6;p=squirrelmail.git diff --git a/functions/imap_search.php b/functions/imap_search.php index 4190597f..fbc9baeb 100644 --- a/functions/imap_search.php +++ b/functions/imap_search.php @@ -17,29 +17,49 @@ require_once('../functions/array.php'); require_once('../functions/mailbox_display.php'); require_once('../functions/mime.php'); -function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$color) { +function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$color, $search_position = '', $search_all, $count_all) { global $msgs, $message_highlight_list, $squirrelmail_language, $languages, $index_order; + global $pos; + + $pos = $search_position; $urlMailbox = urlencode($mailbox); - $isid = sqimap_session_id(); /* Construct the Search QuERY */ - $ss = $isid; + +# account for multiple search terms + + $multi_search = array (); + $search_what = ereg_replace("[ ]{2,}", ' ', $search_what); + $multi_search = split (' ', $search_what); + if (count($multi_search)==1) { + $search_string = $search_where . ' ' . '"' . $multi_search[0] . '"'; + } + else { + $search_string = ''; + $count = count($multi_search); + for ($x=0;$x<$count;$x++) { + $search_string = $search_string . ' ' . $search_where . " " . '"' . $multi_search[$x] . '" '; + } + } + $search_string = trim($search_string); + +# now use $search_string in the imap search + if (isset($languages[$squirrelmail_language]['CHARSET']) && $languages[$squirrelmail_language]['CHARSET']) { - $ss .= " SEARCH CHARSET ".$languages[$squirrelmail_language]['CHARSET']." ALL $search_where \"$search_what\"\r\n"; + $ss = "SEARCH CHARSET ".$languages[$squirrelmail_language]['CHARSET']." ALL $search_string"; } else { - $ss .= " SEARCH ALL $search_where \"$search_what\"\r\n"; + $ss .= "SEARCH ALL $search_string\""; } - fputs($imapConnection,$ss); /* Read Data Back From IMAP */ - $readin = sqimap_read_data ($imapConnection, $isid, false, $result, $message); + $readin = sqimap_run_command ($imapConnection, $ss, true, $result, $message); if (isset($languages[$squirrelmail_language]['CHARSET']) && strtolower($result) == 'no') { - $ss = $isid . " SEARCH CHARSET \"US-ASCII\" ALL $search_where \"$search_what\"\r\n"; - fputs ($imapConnection, $ss); - $readin = sqimap_read_data ($imapConnection, $isid, true, $result, $message); + // $ss = "SEARCH CHARSET \"US-ASCII\" ALL $search_where \"$search_what\""; + $ss = "SEARCH CHARSET \"US-ASCII\" ALL $search_string"; + $readin = sqimap_run_command ($imapConnection, $ss, true, $result, $message); } unset($messagelist); $msgs=""; $c = 0; @@ -59,9 +79,18 @@ function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$colo /* If nothing is found * SEARCH should be the first error else echo errors */ if (isset($errors) && strstr($errors,"* SEARCH")) { + if ($search_all != "all") { echo '
' . _("No Messages Found") . '
'; return; - } else if (isset($errors)) { + } + else { + return; + } + } +// else if ($search_all == 'all') { +// return; +// } + else if (isset($errors)) { echo ""; } @@ -90,7 +119,7 @@ function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$colo $j = 0; while ($j < count($messagelist)) { - $date[$j] = ereg_replace(' ', ' ', $date[$j]); + $date[$j] = str_replace(' ', ' ', $date[$j]); $tmpdate = explode(" ", trim($date[$j])); $messages[$j]["TIME_STAMP"] = getTimeStamp($tmpdate); @@ -141,22 +170,40 @@ function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$colo if (count($messagelist) > 0) { $j=0; - if (!isset ($msg)) { $msg = ""; } - - mail_message_listing_beginning( $imapConnection, - "move_messages.php?msg=$msg&mailbox=$urlMailbox&where=" . urlencode($search_where) . "&what=".urlencode($search_what), - $mailbox, - -1, - '' . _("Found") . ' ' . count($messagelist) . ' ' . _("messages") . '', - get_selectall_link($start_msg, $sort) ); - - + if (!isset ($msg)) { + $msg = ''; + } + if ($search_all != 'all') { + if ( !isset( $start_msg ) ) { + $start_msg =0; + } + if ( !isset( $sort ) ) { + $sort = 0; + } + mail_message_listing_beginning( $imapConnection, + "move_messages.php?msg=$msg&mailbox=$urlMailbox&pos=$pos&where=" . urlencode($search_where) . "&what=".urlencode($search_what), + $mailbox, + -1, + '' . _("Found") . ' ' . count($messagelist) . ' ' . _("messages") . ''. + get_selectall_link($start_msg, $sort)); + } + else { + mail_message_listing_beginning( $imapConnection, + "move_messages.php?msg=$msg&mailbox=$urlMailbox&pos=$pos&where=" . urlencode($search_where) . "&what=".urlencode($search_what), + $mailbox, + -1, + '' . _("Found") . ' ' . count($messagelist) . ' ' . _("messages") . ''); + } + echo "
$mailbox
"; while ($j < count($msgs)) { printMessageInfo($imapConnection, $msgs[$j]["ID"], 0, $j, $mailbox, '', 0, $search_where, $search_what); $j++; + echo ''; } - echo ''; + echo ''; + $count_all = count($msgs); } + return $count_all; } ?>