| | |
| | | } |
| | | |
| | | // Clear internal status cache |
| | | unset($this->data['STATUS:'.$mailbox]); |
| | | $this->clear_status_cache($mailbox); |
| | | |
| | | if (!empty($messages) && $messages != '*' && $this->hasCapability('UIDPLUS')) { |
| | | $messages = self::compressMessageSet($messages); |
| | |
| | | * |
| | | * @return int Number of messages, False on error |
| | | */ |
| | | function countMessages($mailbox, $refresh = false) |
| | | function countMessages($mailbox) |
| | | { |
| | | if ($refresh) { |
| | | $this->selected = null; |
| | | } |
| | | |
| | | if ($this->selected === $mailbox) { |
| | | if ($this->selected === $mailbox && isset($this->data['EXISTS'])) { |
| | | return $this->data['EXISTS']; |
| | | } |
| | | |
| | |
| | | */ |
| | | function countRecent($mailbox) |
| | | { |
| | | if (!strlen($mailbox)) { |
| | | $mailbox = 'INBOX'; |
| | | if ($this->selected === $mailbox && isset($this->data['RECENT'])) { |
| | | return $this->data['RECENT']; |
| | | } |
| | | |
| | | $this->select($mailbox); |
| | | // Check internal cache |
| | | $cache = $this->data['STATUS:'.$mailbox]; |
| | | if (!empty($cache) && isset($cache['RECENT'])) { |
| | | return (int) $cache['RECENT']; |
| | | } |
| | | |
| | | if ($this->selected === $mailbox) { |
| | | return $this->data['RECENT']; |
| | | // Try STATUS (should be faster than SELECT) |
| | | $counts = $this->status($mailbox, array('RECENT')); |
| | | if (is_array($counts)) { |
| | | return (int) $counts['RECENT']; |
| | | } |
| | | |
| | | return false; |
| | |
| | | |
| | | // Clear internal status cache |
| | | unset($this->data['STATUS:'.$to]); |
| | | unset($this->data['STATUS:'.$from]); |
| | | $this->clear_status_cache($from); |
| | | |
| | | $result = $this->execute('UID MOVE', array( |
| | | $this->compressMessageSet($messages), $this->escape($to)), |
| | |
| | | } |
| | | |
| | | /** |
| | | * Clear internal status cache |
| | | */ |
| | | protected function clear_status_cache($mailbox) |
| | | { |
| | | unset($this->data['STATUS:' . $mailbox]); |
| | | unset($this->data['EXISTS']); |
| | | unset($this->data['RECENT']); |
| | | unset($this->data['UNSEEN']); |
| | | } |
| | | |
| | | /** |
| | | * Converts flags array into string for inclusion in IMAP command |
| | | * |
| | | * @param array $flags Flags (see self::flags) |