diff options
Diffstat (limited to 'program')
-rw-r--r-- | program/include/rcmail.php | 25 | ||||
-rw-r--r-- | program/include/rcube_plugin_api.php | 9 | ||||
-rw-r--r-- | program/steps/mail/func.inc | 5 |
3 files changed, 21 insertions, 18 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php index cd6187281..68ab5004c 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -130,12 +130,17 @@ class rcmail // set current task to session $_SESSION['task'] = $this->task; - // create IMAP object - if ($this->task == 'login') - $this->imap_init(); - + // init output class + if (!empty($_REQUEST['_remote'])) + $GLOBALS['OUTPUT'] = $this->init_json(); + else + $GLOBALS['OUTPUT'] = $this->load_gui(!empty($_REQUEST['_framed'])); + // create plugin API and load plugins $this->plugins = rcube_plugin_api::get_instance(); + + // init plugins + $this->plugins->init(); } @@ -395,7 +400,11 @@ class rcmail // set global object for backward compatibility $GLOBALS['IMAP'] = $this->imap; - + + $hook = $this->plugins->exec_hook('imap_init', array('fetch_headers' => $this->imap->fetch_add_headers)); + if ($hook['fetch_headers']) + $this->imap->fetch_add_headers = $hook['fetch_headers']; + if ($connect) $this->imap_connect(); } @@ -409,6 +418,9 @@ class rcmail public function imap_connect() { $conn = false; + + if (!$this->imap) + $this->imap_init(); if ($_SESSION['imap_host'] && !$this->imap->conn) { if (!($conn = $this->imap->connect($_SESSION['imap_host'], $_SESSION['username'], $this->decrypt($_SESSION['password']), $_SESSION['imap_port'], $_SESSION['imap_ssl']))) { @@ -494,6 +506,9 @@ class rcmail if ($user = rcube_user::query($username, $host)) $username = $user->data['username']; + if (!$this->imap) + $this->imap_init(); + // exit if IMAP login failed if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) return false; diff --git a/program/include/rcube_plugin_api.php b/program/include/rcube_plugin_api.php index b19c0a3f4..c895578b9 100644 --- a/program/include/rcube_plugin_api.php +++ b/program/include/rcube_plugin_api.php @@ -150,15 +150,6 @@ class rcube_plugin_api $this->register_hook('template_container', array($this, 'template_container_hook')); // maybe also register a shudown function which triggers shutdown functions of all plugin objects - - - // call imap_init right now - // (should actually be done in rcmail::imap_init() but plugins are not initialized then) - if ($rcmail->imap) { - $hook = $this->exec_hook('imap_init', array('fetch_headers' => $rcmail->imap->fetch_add_headers)); - if ($hook['fetch_headers']) - $rcmail->imap->fetch_add_headers = $hook['fetch_headers']; - } } diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 73919d3aa..f522d0dc3 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -24,9 +24,6 @@ $EMAIL_ADDRESS_PATTERN = '([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9][a-z0-9\-\.]*\\.[a- // actions that do not require imap connection $NOIMAP_ACTIONS = array('spell', 'addcontact', 'autocomplete', 'upload', 'display-attachment', 'remove-attachment'); -// Init IMAP object -$RCMAIL->imap_init(); - // log in to imap server if (!in_array($RCMAIL->action, $NOIMAP_ACTIONS) && !$RCMAIL->imap_connect()) { $RCMAIL->kill_session(); @@ -42,7 +39,7 @@ if (!in_array($RCMAIL->action, $NOIMAP_ACTIONS) && !$RCMAIL->imap_connect()) { // set imap properties and session vars if ($mbox = get_input_value('_mbox', RCUBE_INPUT_GPC)) $IMAP->set_mailbox(($_SESSION['mbox'] = $mbox)); -else +else if ($IMAP) $_SESSION['mbox'] = $IMAP->get_mailbox_name(); if (!empty($_GET['_page'])) |