Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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;
 }