Added a search by header option to filters -- needs error checking on the searchstring
[squirrelmail.git] / plugins / filters / filters.php
index 6257cd9175d9766c3de05874063975d33a32f886..a144822c08721bd1f839c4df5b339eb0521cab36 100644 (file)
@@ -324,9 +324,23 @@ function user_filters($imap_stream) {
 }
 
 function filter_search_and_delete($imap, $where, $what, $where_to) {
-    // Don't mess with the " characters on this fputs line!
-    fputs ($imap, 'a001 SEARCH ALL ' . $where . ' "' . addslashes($what) .
-        "\"\r\n");
+    global $languages, $squirrelmail_language;
+    if (isset($languages[$squirrelmail_language]['CHARSET']) &&
+        $languages[$squirrelmail_language]['CHARSET']) {
+        $search_str = "SEARCH CHARSET "
+            . strtoupper($languages[$squirrelmail_language]['CHARSET']) 
+            . " ALL ";
+    } else {
+        $search_str = "SEARCH CHARSET US-ASCII ALL ";
+    }
+    if ($where == "Header") {
+       $what = explode(':', $what);
+       $where = trim($where . ' ' . $what[0]);
+       $what = addslashes(trim($what[1]));
+    }
+    $search_str .= $where . ' {' . strlen($what) . "}\r\n" . $what . "\r\n";
+    
+    fputs ($imap, "a001 $search_str");
     $read = filters_sqimap_read_data ($imap, 'a001', true, $response, $message);
 
     // This may have problems with EIMS due to it being goofy