From 2aa2b332f6e216ceeabc36ef6b942c40d91bda5a Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Wed, 08 Sep 2010 05:40:39 -0400 Subject: [PATCH] - Small performance improvements --- program/include/rcube_imap_generic.php | 33 ++++++++++++++------------------- 1 files changed, 14 insertions(+), 19 deletions(-) diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php index 3a44b3b..0c69c23 100644 --- a/program/include/rcube_imap_generic.php +++ b/program/include/rcube_imap_generic.php @@ -749,31 +749,24 @@ if ($this->putLine("sel1 SELECT \"".$this->escape($mailbox).'"')) { do { - $line = rtrim($this->readLine(300)); - $a = explode(' ', $line); - if (count($a) == 3) { - $token = strtoupper($a[2]); - if ($token == 'EXISTS') { - $this->exists = (int) $a[1]; - } - else if ($token == 'RECENT') { - $this->recent = (int) $a[1]; - } + $line = rtrim($this->readLine(512)); + + if (preg_match('/^\* ([0-9]+) (EXISTS|RECENT)$/', $line, $m)) { + $token = strtolower($m[2]); + $this->$token = (int) $m[1]; } else if (preg_match('/\[?PERMANENTFLAGS\s+\(([^\)]+)\)\]/U', $line, $match)) { $this->permanentflags = explode(' ', $match[1]); } } while (!$this->startsWith($line, 'sel1', true, true)); - if (strcasecmp($a[1], 'OK') == 0) { + if ($this->parseResult($line) == 0) { $this->selected = $mailbox; return true; } - else { - $this->error = "Couldn't select $mailbox"; - } } + $this->error = "Couldn't select $mailbox"; return false; } @@ -1265,7 +1258,7 @@ } break; case 'in-reply-to': - $result[$id]->in_reply_to = preg_replace('/[\n<>]/', '', $string); + $result[$id]->in_reply_to = str_replace(array("\n", '<', '>'), '', $string); break; case 'references': $result[$id]->references = $string; @@ -2003,7 +1996,7 @@ return false; } - function appendFromFile($folder, $path, $headers=null, $separator="\n\n") + function appendFromFile($folder, $path, $headers=null) { if (!$folder) { return false; @@ -2019,14 +2012,16 @@ return false; } + $body_separator = "\r\n\r\n"; $len = filesize($path); + if (!$len) { return false; } if ($headers) { $headers = preg_replace('/[\r\n]+$/', '', $headers); - $len += strlen($headers) + strlen($separator); + $len += strlen($headers) + strlen($body_separator); } // send APPEND command @@ -2042,7 +2037,7 @@ // send headers with body separator if ($headers) { - $this->putLine($headers . $separator, false); + $this->putLine($headers . $body_separator, false); } // send file @@ -2120,7 +2115,7 @@ // return false if not found, parse if found $min_free = PHP_INT_MAX; foreach ($quota_lines as $key => $quota_line) { - $quota_line = preg_replace('/[()]/', '', $quota_line); + $quota_line = str_replace(array('(', ')'), '', $quota_line); $parts = explode(' ', $quota_line); $storage_part = array_search('STORAGE', $parts); -- Gitblit v1.9.1