| | |
| | | protected $icache = array(); |
| | | |
| | | protected $plugins; |
| | | protected $list_page = 1; |
| | | protected $delimiter; |
| | | protected $namespace; |
| | | protected $sort_field = ''; |
| | |
| | | |
| | | |
| | | /** |
| | | * protected method for getting nr of messages |
| | | * Protected method for getting number of messages |
| | | * |
| | | * @param string $folder Folder name |
| | | * @param string $mode Mode for count [ALL|THREADS|UNSEEN|RECENT|EXISTS] |
| | | * @param boolean $force Force reading from server and update cache |
| | | * @param boolean $status Enables storing folder status info (max UID/count), |
| | | * required for folder_status() |
| | | * @param string $folder Folder name |
| | | * @param string $mode Mode for count [ALL|THREADS|UNSEEN|RECENT|EXISTS] |
| | | * @param boolean $force Force reading from server and update cache |
| | | * @param boolean $status Enables storing folder status info (max UID/count), |
| | | * required for folder_status() |
| | | * @param boolean $no_search Ignore current search result |
| | | * |
| | | * @return int Number of messages |
| | | * @see rcube_imap::count() |
| | | */ |
| | | protected function countmessages($folder, $mode='ALL', $force=false, $status=true) |
| | | protected function countmessages($folder, $mode = 'ALL', $force = false, $status = true, $no_search = false) |
| | | { |
| | | $mode = strtoupper($mode); |
| | | |
| | | // count search set, assume search set is always up-to-date (don't check $force flag) |
| | | if ($this->search_string && $folder == $this->folder && ($mode == 'ALL' || $mode == 'THREADS')) { |
| | | // Count search set, assume search set is always up-to-date (don't check $force flag) |
| | | // @TODO: this could be handled in more reliable way, e.g. a separate method |
| | | // maybe in rcube_imap_search |
| | | if (!$no_search && $this->search_string && $folder == $this->folder) { |
| | | if ($mode == 'ALL') { |
| | | return $this->search_set->count_messages(); |
| | | } |
| | | else { |
| | | else if ($mode == 'THREADS') { |
| | | return $this->search_set->count(); |
| | | } |
| | | } |
| | |
| | | $old = $this->get_folder_stats($folder); |
| | | |
| | | // refresh message count -> will update |
| | | $this->countmessages($folder, 'ALL', true); |
| | | $this->countmessages($folder, 'ALL', true, true, true); |
| | | |
| | | $result = 0; |
| | | |
| | |
| | | |
| | | /** |
| | | * Fetch message headers and body structure from the IMAP server and build |
| | | * an object structure similar to the one generated by PEAR::Mail_mimeDecode |
| | | * an object structure. |
| | | * |
| | | * @param int $uid Message UID to fetch |
| | | * @param string $folder Folder to read from |
| | | * @param int $uid Message UID to fetch |
| | | * @param string $folder Folder to read from |
| | | * |
| | | * @return object rcube_message_header Message data |
| | | */ |
| | |
| | | $structure[1] = $m[2]; |
| | | } |
| | | else { |
| | | // Try to parse the message using Mail_mimeDecode package |
| | | // We need a better solution, Mail_mimeDecode parses message |
| | | // Try to parse the message using rcube_mime_decode. |
| | | // We need a better solution, it parses message |
| | | // in memory, which wouldn't work for very big messages, |
| | | // (it uses up to 10x more memory than the message size) |
| | | // it's also buggy and not actively developed |
| | |
| | | } |
| | | |
| | | // INBOX should always be available |
| | | if ((!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) { |
| | | if (!strlen($root) && (!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) { |
| | | array_unshift($a_mboxes, 'INBOX'); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | // INBOX should always be available |
| | | if ((!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) { |
| | | if (!strlen($root) && (!$filter || $filter == 'mail') && !in_array('INBOX', $a_mboxes)) { |
| | | array_unshift($a_mboxes, 'INBOX'); |
| | | } |
| | | |