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)

---
 program/include/rcmail.php |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

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;

--
Gitblit v1.9.1