alecpl
2009-09-04 ae7f9b3d0a648f0d64e23cf8fe1e1e4c42fd795e
program/include/rcube_imap.php
@@ -36,7 +36,7 @@
 *
 * @package    Mail
 * @author     Thomas Bruederli <roundcube@gmail.com>
 * @version    1.40
 * @version    1.5
 * @link       http://ilohamail.org
 */
class rcube_imap
@@ -70,6 +70,8 @@
  var $debug_level = 1;
  var $error_code = 0;
  var $options = array('imap' => 'check');
  private $host, $user, $pass, $port, $ssl;
  /**
@@ -101,19 +103,26 @@
    // check for Open-SSL support in PHP build
    if ($use_ssl && extension_loaded('openssl'))
      $ICL_SSL = $use_ssl == 'imaps' ? 'ssl' : $use_ssl;
    else if ($use_ssl)
      {
    else if ($use_ssl) {
      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;
    $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($host, $user, $pass, $this->options);
    $this->host = $host;
    $this->user = $user;
      $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;
    $this->port = $port;
    $this->ssl = $use_ssl;
@@ -604,7 +613,7 @@
    else
      {
      $a_index = iil_C_FetchHeaderIndex($this->conn, $mailbox, "1:*", $this->sort_field, $this->skip_deleted);
      if (empty($a_index))
        return array();
@@ -2881,7 +2890,7 @@
  private function _change_subscription($a_mboxes, $mode)
    {
    $updated = FALSE;
    if (is_array($a_mboxes))
      foreach ($a_mboxes as $i => $mbox_name)
        {
@@ -2889,15 +2898,12 @@
        $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');
@@ -2909,7 +2915,7 @@
        $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));
      }