Add Horde_Registry->initialApp. Needed to prevent some login related redirection...
authorMichael M Slusarz <slusarz@curecanti.org>
Thu, 4 Mar 2010 06:38:16 +0000 (23:38 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Thu, 4 Mar 2010 07:40:00 +0000 (00:40 -0700)
framework/Core/lib/Horde/Registry.php
imp/lib/Application.php

index 55d1aed..6ab1f77 100644 (file)
@@ -84,6 +84,13 @@ class Horde_Registry
     public $sessionHandler = null;
 
     /**
+     * The application that called appInit().
+     *
+     * @var string
+     */
+    public $initialApp;
+
+    /**
      * Application bootstrap initialization.
      * Solves chicken-and-egg problem - need a way to init Horde environment
      * from application without an active Horde_Registry object.
@@ -197,6 +204,8 @@ class Horde_Registry
             Horde_Auth::authenticateFailure($app, $e);
         }
 
+        $GLOBALS['registry']->initialApp = $app;
+
         if (!$args['nocompress']) {
             Horde::compressOutput();
         }
index 8faae81..b9a5a4d 100644 (file)
@@ -117,29 +117,29 @@ class IMP_Application extends Horde_Registry_Application
         $GLOBALS['notification']->addDecorator(new IMP_Notification_Handler_Decorator_Imap());
         $GLOBALS['notification']->addType('status', 'imp.*', 'IMP_Notification_Event_Status');
 
+        $redirect = false;
+
         switch (IMP::getViewMode()) {
         case 'dimp':
             $GLOBALS['notification']->addType('status', 'dimp.*', 'IMP_Notification_Event_Status');
             break;
 
         case 'mimp':
-            if (empty($this->initParams['impmode']) ||
-                ($this->initParams['impmode'] != 'mimp')) {
-                header('Location: ' . IMP_Auth::getInitialPage(true)->setRaw(true));
-                exit;
-            }
+            $redirect = (empty($this->initParams['impmode']) ||
+                         ($this->initParams['impmode'] != 'mimp'));
             break;
 
         case 'imp':
-            if (!empty($this->initParams['impmode']) &&
-                ($this->initParams['impmode'] == 'dimp')) {
-                header('Location: ' . IMP_Auth::getInitialPage(true)->setRaw(true));
-                exit;
-            }
-
+            $redirect = (!empty($this->initParams['impmode']) &&
+                         ($this->initParams['impmode'] == 'dimp'));
             $GLOBALS['notification']->attach('audio');
             break;
         }
+
+        if ($redirect && ($GLOBALS['registry']->initialApp == 'imp')) {
+            header('Location: ' . IMP_Auth::getInitialPage(true)->setRaw(true));
+            exit;
+        }
     }
 
     /* Horde permissions. */