From 1f803b6e3c54182cdbba2ced4aa1552fed2ba1d4 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Mon, 19 Sep 2011 12:15:36 -0400 Subject: [PATCH] - Fix PHP error when fetching messages index when threaded mode is enabled --- program/include/rcube_imap.php | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-) diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index d9549af..58bad75 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -176,12 +176,13 @@ $attempt = 0; do { $data = rcmail::get_instance()->plugins->exec_hook('imap_connect', - array('host' => $host, 'user' => $user, 'attempt' => ++$attempt)); + array_merge($this->options, array('host' => $host, 'user' => $user, + 'attempt' => ++$attempt))); if (!empty($data['pass'])) $pass = $data['pass']; - $this->conn->connect($data['host'], $data['user'], $pass, $this->options); + $this->conn->connect($data['host'], $data['user'], $pass, $data); } while(!$this->conn->connected() && $data['retry']); $this->host = $data['host']; @@ -813,7 +814,7 @@ $mailbox = $this->mailbox; } - return $this->_list_headers($mailbox, $page, $sort_field, $sort_order, false, $slice); + return $this->_list_headers($mailbox, $page, $sort_field, $sort_order, $slice); } @@ -1086,7 +1087,7 @@ if (!empty($parents)) { $headers[$idx]->parent_uid = end($parents); - if (!$header->seen) + if (empty($header->flags['SEEN'])) $headers[$parents[0]]->unread_children++; } array_push($parents, $header->uid); @@ -1504,7 +1505,10 @@ // use message index sort as default sorting if (!$sort_field) { if ($this->skip_deleted) { - $a_index = $this->_search_index($mailbox, 'ALL'); + $a_index = $this->conn->search($mailbox, 'ALL UNDELETED'); + // I didn't found that SEARCH should return sorted IDs + if (is_array($a_index)) + sort($a_index); } else if ($max = $this->_messagecount($mailbox)) { $a_index = range(1, $max); } @@ -3421,6 +3425,8 @@ if ($this->conn->selected != $mailbox) { if ($this->conn->select($mailbox)) $this->mailbox = $mailbox; + else + return null; } $data = $this->conn->data; @@ -3517,6 +3523,19 @@ /** + * Synchronizes messages cache. + * + * @param string $mailbox Folder name + */ + public function mailbox_sync($mailbox) + { + if ($mcache = $this->get_mcache_engine()) { + $mcache->synchronize($mailbox); + } + } + + + /** * Get message header names for rcube_imap_generic::fetchHeader(s) * * @return string Space-separated list of header names -- Gitblit v1.9.1