| | |
| | | /** |
| | | * Connect to an IMAP server |
| | | * |
| | | * @param string $host Host to connect |
| | | * @param string $user Username for IMAP account |
| | | * @param string $pass Password for IMAP account |
| | | * @param integer $port Port to connect to |
| | | * @param string $use_ssl SSL schema (either ssl or tls) or null if plain connection |
| | | * @param string $host Host to connect |
| | | * @param string $user Username for IMAP account |
| | | * @param string $pass Password for IMAP account |
| | | * @param integer $port Port to connect to |
| | | * @param string $use_ssl SSL schema (either ssl or tls) or null if plain connection |
| | | * |
| | | * @return boolean TRUE on success, FALSE on failure |
| | | * @return boolean True on success, False on failure |
| | | */ |
| | | public function connect($host, $user, $pass, $port=143, $use_ssl=null) |
| | | { |
| | |
| | | $this->update_cache('messagecount', $a_folder_cache); |
| | | |
| | | return (int)$count; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Public method for listing message flags |
| | | * |
| | | * @param string $folder Folder name |
| | | * @param array $uids Message UIDs |
| | | * @param int $mod_seq Optional MODSEQ value (of last flag update) |
| | | * |
| | | * @return array Indexed array with message flags |
| | | */ |
| | | public function list_flags($folder, $uids, $mod_seq = null) |
| | | { |
| | | if (!strlen($folder)) { |
| | | $folder = $this->folder; |
| | | } |
| | | |
| | | if (!$this->check_connection()) { |
| | | return array(); |
| | | } |
| | | |
| | | // @TODO: when cache was synchronized in this request |
| | | // we might already have asked for flag updates, use it. |
| | | |
| | | $flags = $this->conn->fetch($folder, $uids, true, array('FLAGS'), $mod_seq); |
| | | $result = array(); |
| | | |
| | | if (!empty($flags)) { |
| | | foreach ($flags as $message) { |
| | | $result[$message->uid] = $message->flags; |
| | | } |
| | | } |
| | | |
| | | return $result; |
| | | } |
| | | |
| | | |
| | |
| | | public function index_direct($folder, $sort_field = null, $sort_order = null, $search = null) |
| | | { |
| | | if (!empty($search)) { |
| | | $search = $this->search_set->get_compressed(); |
| | | $search = $search->get_compressed(); |
| | | } |
| | | |
| | | // use message index sort as default sorting |
| | |
| | | public function search_once($folder = null, $str = 'ALL') |
| | | { |
| | | if (!$str) { |
| | | return 'ALL'; |
| | | $str = 'ALL'; |
| | | } |
| | | |
| | | if (!strlen($folder)) { |
| | |
| | | $this->struct_charset = $this->structure_charset($structure); |
| | | } |
| | | |
| | | $headers->ctype = strtolower($headers->ctype); |
| | | $headers->ctype = @strtolower($headers->ctype); |
| | | |
| | | // Here we can recognize malformed BODYSTRUCTURE and |
| | | // 1. [@TODO] parse the message in other way to create our own message structure |
| | |
| | | |
| | | // @TODO: Honor MAXSIZE and DEPTH options |
| | | foreach ($queries as $attrib => $entry) { |
| | | if ($result = $this->conn->getAnnotation($folder, $entry, $attrib)) { |
| | | $res = array_merge_recursive($res, $result); |
| | | $result = $this->conn->getAnnotation($folder, $entry, $attrib); |
| | | |
| | | // an error, invalidate any previous getAnnotation() results |
| | | if (!is_array($result)) { |
| | | return null; |
| | | } |
| | | else { |
| | | foreach ($result as $fldr => $data) { |
| | | $res[$fldr] = array_merge((array) $res[$fldr], $data); |
| | | } |
| | | } |
| | | } |
| | | } |