diff options
-rw-r--r-- | program/lib/Roundcube/rcube_result_multifolder.php | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/program/lib/Roundcube/rcube_result_multifolder.php b/program/lib/Roundcube/rcube_result_multifolder.php index e5abead51..4bbd2188d 100644 --- a/program/lib/Roundcube/rcube_result_multifolder.php +++ b/program/lib/Roundcube/rcube_result_multifolder.php @@ -57,13 +57,8 @@ class rcube_result_multifolder { $this->sets[] = $result; - if ($count = $result->count()) { - $this->meta['count'] += $count; - - // append UIDs to global index - $folder = $result->get_parameters('MAILBOX'); - $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get()); - $this->index = array_merge($this->index, $index); + if ($result->count()) { + $this->append_result($result); } else if ($result->incomplete) { $this->incomplete = true; @@ -71,6 +66,19 @@ class rcube_result_multifolder } /** + * Append message UIDs from the given result to our index + */ + protected function append_result($result) + { + $this->meta['count'] += $result->count(); + + // append UIDs to global index + $folder = $result->get_parameters('MAILBOX'); + $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get()); + $this->index = array_merge($this->index, $index); + } + + /** * Store a global index of (sorted) message UIDs */ public function set_message_index($headers, $sort_field, $sort_order) @@ -312,13 +320,8 @@ class rcube_result_multifolder $this->meta = array('count' => 0); foreach ($this->sets as $result) { - if ($count = $result->count()) { - $this->meta['count'] += $count; - - // append UIDs to global index - $folder = $result->get_parameters('MAILBOX'); - $index = array_map(function($uid) use ($folder) { return $uid . '-' . $folder; }, $result->get()); - $this->index = array_merge($this->index, $index); + if ($result->count()) { + $this->append_result($result); } else if ($result->incomplete) { $this->incomplete = true; |