Fix small mistype
[squirrelmail.git] / functions / imap_search.php
index 2512eeccb04f6fd5ee7c522f5a67ca73031fa8e8..86e6f2bd43e36ba3e383f624051240393ef2fa8f 100644 (file)
@@ -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 = '') {
 
     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;
@@ -90,7 +110,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,10 +161,12 @@ function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$colo
 
     if (count($messagelist) > 0) {
         $j=0;
-        if (!isset ($msg)) { $msg = ""; }
+        if (!isset ($msg)) { 
+            $msg = ''; 
+        }
 
         mail_message_listing_beginning( $imapConnection,
-            "move_messages.php?msg=$msg&mailbox=$urlMailbox&where=" . urlencode($search_where) . "&what=".urlencode($search_what),
+            "move_messages.php?msg=$msg&mailbox=$urlMailbox&pos=$pos&where=" . urlencode($search_where) . "&what=".urlencode($search_what),
             $mailbox,
             -1,
             '<b>' . _("Found") . ' ' . count($messagelist) . ' ' . _("messages") . '</b>',
@@ -160,4 +182,4 @@ function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$colo
     }
 }
 
-?>
\ No newline at end of file
+?>