| | |
| | | * |
| | | * @package Mail |
| | | * @author Thomas Bruederli <roundcube@gmail.com> |
| | | * @version 1.40 |
| | | * @version 1.5 |
| | | * @link http://ilohamail.org |
| | | */ |
| | | class rcube_imap |
| | |
| | | raise_error(array('code' => 403, 'type' => 'imap', 'file' => __FILE__, |
| | | 'message' => 'Open SSL not available;'), TRUE, FALSE); |
| | | $port = 143; |
| | | } |
| | | } |
| | | |
| | | $ICL_PORT = $port; |
| | | $IMAP_USE_INTERNAL_DATE = false; |
| | | |
| | | $data = rcmail::get_instance()->plugins->exec_hook('imap_connect', array('host' => $host, 'user' => $user)); |
| | | if (!empty($data['pass'])) |
| | | $pass = $data['pass']; |
| | | $attempt = 0; |
| | | do { |
| | | $data = rcmail::get_instance()->plugins->exec_hook('imap_connect', array('host' => $host, 'user' => $user, 'attempt' => ++$attempt)); |
| | | if (!empty($data['pass'])) |
| | | $pass = $data['pass']; |
| | | |
| | | $this->conn = iil_Connect($data['host'], $data['user'], $pass, $this->options); |
| | | $this->conn = iil_Connect($data['host'], $data['user'], $pass, $this->options); |
| | | } while(!$this->conn && $data['retry']); |
| | | |
| | | $this->host = $data['host']; |
| | | $this->user = $data['user']; |
| | | $this->pass = $pass; |
| | |
| | | else |
| | | { |
| | | $a_index = iil_C_FetchHeaderIndex($this->conn, $mailbox, "1:*", $this->sort_field, $this->skip_deleted); |
| | | |
| | | |
| | | if (empty($a_index)) |
| | | return array(); |
| | | |
| | |
| | | private function _change_subscription($a_mboxes, $mode) |
| | | { |
| | | $updated = FALSE; |
| | | |
| | | |
| | | if (is_array($a_mboxes)) |
| | | foreach ($a_mboxes as $i => $mbox_name) |
| | | { |
| | |
| | | $a_mboxes[$i] = $mailbox; |
| | | |
| | | if ($mode=='subscribe') |
| | | $result = iil_C_Subscribe($this->conn, $mailbox); |
| | | $updated = iil_C_Subscribe($this->conn, $mailbox); |
| | | else if ($mode=='unsubscribe') |
| | | $result = iil_C_UnSubscribe($this->conn, $mailbox); |
| | | |
| | | if ($result>=0) |
| | | $updated = TRUE; |
| | | $updated = iil_C_UnSubscribe($this->conn, $mailbox); |
| | | } |
| | | |
| | | // get cached mailbox list |
| | | |
| | | // get cached mailbox list |
| | | if ($updated) |
| | | { |
| | | $a_mailbox_cache = $this->get_cache('mailboxes'); |
| | |
| | | $a_mailbox_cache = array_merge($a_mailbox_cache, $a_mboxes); |
| | | else if ($mode=='unsubscribe') |
| | | $a_mailbox_cache = array_diff($a_mailbox_cache, $a_mboxes); |
| | | |
| | | |
| | | // write mailboxlist to cache |
| | | $this->update_cache('mailboxes', $this->_sort_mailbox_list($a_mailbox_cache)); |
| | | } |