diff options
Diffstat (limited to 'program/include')
-rw-r--r-- | program/include/rcmail.php | 25 | ||||
-rw-r--r-- | program/include/rcube_plugin_api.php | 9 |
2 files changed, 20 insertions, 14 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']; - } } |