From 48bc52e835bd5485f7443d54399e4fb0d36732d7 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Sat, 13 Feb 2010 12:33:25 -0500 Subject: [PATCH] - Fix imap_init hook broken in r3258 (#1486493) --- index.php | 8 +------- program/include/rcube_plugin_api.php | 9 --------- program/include/rcmail.php | 25 ++++++++++++++++++++----- program/steps/mail/func.inc | 5 +---- 4 files changed, 22 insertions(+), 25 deletions(-) diff --git a/index.php b/index.php index 7251b53..dc6bfd4 100644 --- a/index.php +++ b/index.php @@ -30,14 +30,8 @@ // include environment require_once 'program/include/iniset.php'; -// init application and start session with requested task +// init application, start session, init output class, etc. $RCMAIL = rcmail::get_instance(); - -// init output class -$OUTPUT = !empty($_REQUEST['_remote']) ? $RCMAIL->init_json() : $RCMAIL->load_gui(!empty($_REQUEST['_framed'])); - -// init plugin API -$RCMAIL->plugins->init(); // turn on output buffering ob_start(); diff --git a/program/include/rcmail.php b/program/include/rcmail.php index cd61872..68ab500 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -130,12 +130,17 @@ // 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 @@ // 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 @@ 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 @@ 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 b19c0a3..c895578 100644 --- a/program/include/rcube_plugin_api.php +++ b/program/include/rcube_plugin_api.php @@ -150,15 +150,6 @@ $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 73919d3..f522d0d 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -24,9 +24,6 @@ // 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 @@ // 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'])) -- Gitblit v1.9.1