/** * Private search method * * @return array search results as list of message ids * @access private * @see rcube_imap::search() */ private function _search_index($mailbox, $criteria = 'ALL', $charset = NULL, $sort_field = NULL) { $orig_criteria = $criteria; if ($this->skip_deleted && !preg_match('/UNDELETED/', $criteria)) { $criteria = 'UNDELETED ' . $criteria; } if ($sort_field && $this->get_capability('sort') && (!$this->index_sort || $sort_field != 'date')) { $charset = $charset ? $charset : $this->default_charset; $a_messages = iil_C_Sort($this->conn, $mailbox, $sort_field, $criteria, FALSE, $charset); } else { if ($orig_criteria == 'ALL') { $max = $this->_messagecount($mailbox); $a_messages = $max ? range(1, $max) : array(); } else { $a_messages = iil_C_Search($this->conn, $mailbox, ($charset ? "CHARSET {$charset} " : '') . $criteria); // I didn't found that SEARCH always returns sorted IDs if ($this->index_sort && $this->sort_field == 'date') { sort($a_messages); } } } // update messagecount cache ? // $a_mailbox_cache = get_cache('messagecount'); // $a_mailbox_cache[$mailbox][$criteria] = sizeof($a_messages); // $this->update_cache('messagecount', $a_mailbox_cache); return $a_messages; }
/** * Private search method * * @return array search results as list of message ids * @access private * @see rcube_imap::search() */ function _search_index($mailbox, $criteria = 'ALL', $charset = NULL, $sort_field = NULL) { if ($sort_field && $this->get_capability('sort')) { $charset = $charset ? $charset : $this->default_charset; $a_messages = iil_C_Sort($this->conn, $mailbox, $sort_field, $criteria, FALSE, $charset); } 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]); } } } return $a_messages; }