X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fimap_search.php;h=38832fc1be862cc1af0ec8fc60ea3d7ac8b743cb;hp=a92e8970bf65c7c4b52f746ecb381f047edb3247;hb=d672fcab6c386d4dcdb2373204e1bd3c90149bd3;hpb=76f9855ef5faf574a80c28cf521acb894b5011f9 diff --git a/functions/imap_search.php b/functions/imap_search.php index a92e8970..38832fc1 100644 --- a/functions/imap_search.php +++ b/functions/imap_search.php @@ -1,155 +1,124 @@ -
No Messages Found
"; - return; - } else if (isset($errors)) { - echo ""; - } - - # HACKED CODED FROM ANOTHER FUNCTION, Could Probably dump this and mondify - # exsitising code with a search true/false varible. - - - global $sent_folder; - for ($q = 0; $q < count($messagelist); $q++) { - $id[$q] = trim($messagelist[$q]); - } - $issent = ($mailbox == $sent_folder); - $hdr_list = sqimap_get_small_header_list($imapConnection, $id, $issent); - $flags = sqimap_get_flags_list($imapConnection, $id, $issent); - foreach ($hdr_list as $hdr) { - $from[] = $hdr->from; - $date[] = $hdr->date; - $subject[] = $hdr->subject; - $to[] = $hdr->to; - $priority[] = $hdr->priority; - $cc[] = $hdr->cc; - $size[] = $hdr->size; - $type[] = $hdr->type0; - } - - $j = 0; - while ($j < count($messagelist)) { - $date[$j] = ereg_replace(' ', ' ', $date[$j]); - $tmpdate = explode(" ", trim($date[$j])); - - $messages[$j]["TIME_STAMP"] = getTimeStamp($tmpdate); - $messages[$j]["DATE_STRING"] = getDateString($messages[$j]["TIME_STAMP"]); - $messages[$j]["ID"] = $id[$j]; - $messages[$j]["FROM"] = decodeHeader($from[$j]); - $messages[$j]["FROM-SORT"] = strtolower(sqimap_find_displayable_name(decodeHeader($from[$j]))); - $messages[$j]["SUBJECT"] = decodeHeader($subject[$j]); - $messages[$j]["SUBJECT-SORT"] = strtolower(decodeHeader($subject[$j])); - $messages[$j]["TO"] = decodeHeader($to[$j]); - $messages[$j]["PRIORITY"] = $priority[$j]; - $messages[$j]["CC"] = $cc[$j]; - $messages[$j]["SIZE"] = $size[$j]; - $messages[$j]["TYPE0"] = $type[$j]; - - $num = 0; - while ($num < count($flags[$j])) { - if ($flags[$j][$num] == "Deleted") { - $messages[$j]["FLAG_DELETED"] = true; + 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), - '', -1, '' . _("Found") . ' ' . count($messagelist) . ' ' . _("messages") . '', - ' '); - - - while ($j < count($msgs)) { - printMessageInfo($imapConnection, $msgs[$j]["ID"], 0, $j, $mailbox, "", 0, $search_where, $search_what); - $j++; - } - echo ""; - echo ""; - } - } + $search_string .= $search_where . ' {' . strlen($multi_search_part) + . "}\r\n" . $multi_search_part . ' '; + } + } + + $search_string = trim($search_string); + + /* now use $search_string in the imap search */ + if ($allow_charset_search && isset($languages[$squirrelmail_language]['CHARSET']) && + $languages[$squirrelmail_language]['CHARSET']) { + $ss = "SEARCH CHARSET " + . strtoupper($languages[$squirrelmail_language]['CHARSET']) + . " ALL $search_string"; + } else { + $ss = "SEARCH ALL $search_string"; + } + + /* read data back from IMAP */ + $readin = sqimap_run_command($imapConnection, $ss, false, $result, $message, $uid_support); + + /* try US-ASCII charset if search fails */ + if (isset($languages[$squirrelmail_language]['CHARSET']) + && strtolower($result) == 'no') { + $ss = "SEARCH CHARSET \"US-ASCII\" ALL $search_string"; + $readin = sqimap_run_command ($imapConnection, $ss, true, + $result, $message); + } + + unset($messagelist); + + /* Keep going till we find the SEARCH response */ + foreach ($readin as $readin_part) { + /* Check to see if a SEARCH response was received */ + if (substr($readin_part, 0, 9) == '* SEARCH ') { + $messagelist = preg_split("/ /", substr($readin_part, 9)); + } else if (isset($errors)) { + $errors = $errors.$readin_part; + } else { + $errors = $readin_part; + } + } + + /* If nothing is found * SEARCH should be the first error else echo errors */ + if (isset($errors)) { + if (strstr($errors,'* SEARCH')) { + return array(); + } + echo ''; + } + + + global $sent_folder; + + $cnt = count($messagelist); + for ($q = 0; $q < $cnt; $q++) { + $id[$q] = trim($messagelist[$q]); + } + $issent = ($mailbox == $sent_folder); + + $msgs = fillMessageArray($imapConnection,$id,$cnt); + + return $msgs; +} + + ?>