X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fimap_search.php;h=d6ea4cb01d4d3ef773840c4f5e52e05619bd1781;hp=3759a45a9d6a2b238a3306d8b343690d71993c43;hb=91e0dccca7b2452d8b450791cae3aa4125e8889e;hpb=e5837601c28172b0a44f8fa6099584b6dbc8cf61 diff --git a/functions/imap_search.php b/functions/imap_search.php index 3759a45a..d6ea4cb0 100644 --- a/functions/imap_search.php +++ b/functions/imap_search.php @@ -1,174 +1,125 @@ -
No Messages Found
"; - return; - } else { - echo ""; - } -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++) { - $messagelist[$q] = trim($messagelist[$q]); - if ($mailbox == $sent_folder) - $hdr = sqimap_get_small_header ($imapConnection, $messagelist[$q], true); - else - $hdr = sqimap_get_small_header ($imapConnection, $messagelist[$q], false); - $from[$q] = $hdr->from; - $date[$q] = $hdr->date; - $subject[$q] = $hdr->subject; - $id[$q] = $messagelist[$q]; - - $flags[$q] = sqimap_get_flags ($imapConnection, $messagelist[$q]); + 0) { - $j=0; -echo "
"._("Found")." ".count($messagelist)." "._("Messages")."
\n"; -echo "
\n"; -echo ""; - echo ""; -echo "
"; - - echo "\n\n\n
"; - echo "\n"; - echo " \n"; - echo " \n"; - echo " "; - echo " \n"; - - echo "
\n"; - echo " ". _("Move selected to:") .""; - echo " "; - echo " \n"; - - echo " \n"; - echo "  ". _("checked messages") ."\n"; - echo "
\n\n\n"; - echo "
"; - echo ""; - echo ""; - echo " "; - /** FROM HEADER **/ - if ($mailbox == $sent_folder) - echo " "; - else - echo " "; - /** DATE HEADER **/ - echo " "; - echo " \n"; - /** SUBJECT HEADER **/ - echo " \n"; - echo ""; - -while ($j < count($msgs)) { - printMessageInfo($imapConnection, $msgs[$j]["ID"], 0, $j, $mailbox, "", 0); - //echo $msgs[$j]["SUBJECT"]."
"; - $j++; - } -echo "
 ". _("To") ."". _("From") ."". _("Date") ." ". _("Subject") ."
"; -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, TRUE); + + /* 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]); + } + + $msgs = fillMessageArray($imapConnection,$id,$cnt); + + return $msgs; } -?> + + +?> \ No newline at end of file