From 99a4539170b87fbf665e4b6d8884f79d28903007 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sun, 12 Jul 2009 15:35:21 -0400
Subject: [PATCH] - small code improvements + possible bugs fixes

---
 program/include/rcube_imap.php |    8 --------
 program/lib/imap.inc           |   45 +++++++++++++++++++++------------------------
 2 files changed, 21 insertions(+), 32 deletions(-)

diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index c823834..fba30de 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -1035,14 +1035,6 @@
       }
     else
       $a_messages = iil_C_Search($this->conn, $mailbox, ($charset ? "CHARSET $charset " : '') . $criteria);
-
-    // clean message list (there might be some empty entries)
-    if (is_array($a_messages))
-      {
-      foreach ($a_messages as $i => $val)
-        if (empty($val))
-          unset($a_messages[$i]);
-      }
     
     // update messagecount cache ?
 //    $a_mailbox_cache = get_cache('messagecount');
diff --git a/program/lib/imap.inc b/program/lib/imap.inc
index f6c6abe..db94fac 100644
--- a/program/lib/imap.inc
+++ b/program/lib/imap.inc
@@ -898,9 +898,9 @@
 	    return false;
 	}
 	do {
-		$line = chop(iil_ReadLine($conn->fp, 1024));
+		$line = chop(iil_ReadLine($conn->fp));
 		if (iil_StartsWith($line, '* SORT')) {
-			$data .= ($data ? ' ' : '') . substr($line, 7);
+			$data .= substr($line, 7);
     		} else if (preg_match('/^[0-9 ]+$/', $line)) {
 			$data .= $line;
 		}
@@ -913,8 +913,7 @@
                 return false;
 	}
 	
-	$out = explode(' ',$data);
-	return $out;
+	return preg_split('/\s+/', $data, -1, PREG_SPLIT_NO_EMPTY);
 }
 
 function iil_C_FetchHeaderIndex(&$conn, $mailbox, $message_set, $index_field='', $skip_deleted=true) {
@@ -1842,13 +1841,10 @@
 }
 
 function iil_C_CountUnseen(&$conn, $folder) {
-	$index = iil_C_Search($conn, $folder, 'ALL UNSEEN');
-	if (is_array($index)) {
-		if (($cnt = count($index)) && $index[0] != '') {
-			return $cnt;
-		}
-	}
-	return false;
+        $index = iil_C_Search($conn, $folder, 'ALL UNSEEN');
+        if (is_array($index))
+                return count($index);
+        return false;
 }
 
 function iil_C_UID2ID(&$conn, $folder, $uid) {
@@ -1862,45 +1858,46 @@
 }
 
 function iil_C_ID2UID(&$conn, $folder, $id) {
-	$fp = $conn->fp;
+
 	if ($id == 0) {
 	    return 	-1;
 	}
 	$result = -1;
 	if (iil_C_Select($conn, $folder)) {
-		$key = 'FUID';
-		if (iil_PutLine($fp, "$key FETCH $id (UID)")) {
+		$key = 'fuid';
+		if (iil_PutLine($conn->fp, "$key FETCH $id (UID)")) {
 			do {
-				$line=chop(iil_ReadLine($fp, 1024));
+				$line = chop(iil_ReadLine($conn->fp, 1024));
 				if (preg_match("/^\* $id FETCH \(UID (.*)\)/i", $line, $r)) {
 					$result = $r[1];
 				}
-			} while (!preg_match("/^$key/", $line));
+			} while (!iil_StartsWith($line, $key, true));
 		}
 	}
 	return $result;
 }
 
 function iil_C_Search(&$conn, $folder, $criteria) {
-	$fp = $conn->fp;
+
 	if (iil_C_Select($conn, $folder)) {
-		$c = 0;
+		$data = '';
 		
 		$query = 'srch1 SEARCH ' . chop($criteria);
-		if (!iil_PutLineC($fp, $query)) {
+		if (!iil_PutLineC($conn->fp, $query)) {
 			return false;
 		}
 		do {
-			$line=trim(iil_ReadLine($fp, 10000));
-			if (preg_match('/^\* SEARCH/i', $line)) {
-				$str = trim(substr($line, 8));
-				$messages = explode(' ', $str);
+			$line = trim(iil_ReadLine($conn->fp));
+			if (iil_StartsWith($line, '* SEARCH')) {
+				$data .= substr($line, 8);
+    			} else if (preg_match('/^[0-9 ]+$/', $line)) {
+				$data .= $line;
 			}
 		} while (!iil_StartsWith($line, 'srch1', true));
 
 		$result_code = iil_ParseResult($line);
 		if ($result_code == 0) {
-		    return $messages;
+		    return preg_split('/\s+/', $data, -1, PREG_SPLIT_NO_EMPTY);
 		}
 		$conn->error = 'iil_C_Search: ' . $line . "\n";
 		return false;	

--
Gitblit v1.9.1