Browse Source

Made the webmail_top hook work again for plugins that want to change the URI of the "right" frame; plugins have to change the value of the global variable $right_frame_url. Note this includes moving the webmail_top hook quite a bit; please report any issues.

pdontthink 18 years ago
parent
commit
86c472e5f6
2 changed files with 37 additions and 23 deletions
  1. 3 0
      ChangeLog
  2. 34 23
      src/webmail.php

+ 3 - 0
ChangeLog

@@ -208,6 +208,9 @@ Version 1.5.2 - SVN
     cannot be circumvented by manipulating the URL. External plugins might
     cannot be circumvented by manipulating the URL. External plugins might
     rely on init.php guaranteeing that the user is logged in.
     rely on init.php guaranteeing that the user is logged in.
   - Sort readdir() output in conf.pl (#1755886).
   - Sort readdir() output in conf.pl (#1755886).
+  - Made the webmail_top hook work again for plugins that want to change
+    the URI of the "right" frame; plugins have to change the value of the
+    global variable $right_frame_url
 
 
 Version 1.5.1 (branched on 2006-02-12)
 Version 1.5.1 (branched on 2006-02-12)
 --------------------------------------
 --------------------------------------

+ 34 - 23
src/webmail.php

@@ -63,6 +63,12 @@ if ($location_of_bar == '') {
     $location_of_bar = $temp_location_of_bar;
     $location_of_bar = $temp_location_of_bar;
 }
 }
 
 
+// this value may be changed by a plugin, but initialize
+// it first to avoid register_globals headaches
+//
+$right_frame_url = '';
+do_hook('webmail_top', $null);
+
 // Determine the main frame URL
 // Determine the main frame URL
 /*
 /*
  * There are three ways to call webmail.php
  * There are three ways to call webmail.php
@@ -78,6 +84,11 @@ if ($location_of_bar == '') {
  *
  *
  * The test for // should catch any attempt to include off-site webpages into
  * The test for // should catch any attempt to include off-site webpages into
  * our frameset.
  * our frameset.
+ *
+ * Note that plugins are allowed to completely and freely override the URI
+ * used for the "right" (content) frame, and they do so by modifying the
+ * global variable $right_frame_url.
+ *
  */
  */
 if (empty($right_frame) || (strpos(urldecode($right_frame), '//') !== false)) {
 if (empty($right_frame) || (strpos(urldecode($right_frame), '//') !== false)) {
     $right_frame = '';
     $right_frame = '';
@@ -87,27 +98,29 @@ if ( strpos($right_frame,'?') ) {
 } else {
 } else {
     $right_frame_file = $right_frame;
     $right_frame_file = $right_frame;
 }
 }
-switch($right_frame) {
-    case 'right_main.php':
-        $right_frame_url = "right_main.php?mailbox=".urlencode($mailbox)
-                       . (!empty($sort)?"&sort=$sort":'')
-                       . (!empty($startMessage)?"&startMessage=$startMessage":'');
-        break;
-    case 'options.php':
-        $right_frame_url = 'options.php';
-        break;
-    case 'folders.php':
-        $right_frame_url = 'folders.php';
-        break;
-    case 'compose.php':
-        $right_frame_url = 'compose.php?' . $mailtourl;
-        break;
-    case '':
-        $right_frame_url = 'right_main.php';
-        break;
-    default:
-        $right_frame_url =  urlencode($right_frame);
-        break;
+if (empty($right_frame_url)) {
+    switch($right_frame) {
+        case 'right_main.php':
+            $right_frame_url = "right_main.php?mailbox=".urlencode($mailbox)
+                           . (!empty($sort)?"&sort=$sort":'')
+                           . (!empty($startMessage)?"&startMessage=$startMessage":'');
+            break;
+        case 'options.php':
+            $right_frame_url = 'options.php';
+            break;
+        case 'folders.php':
+            $right_frame_url = 'folders.php';
+            break;
+        case 'compose.php':
+            $right_frame_url = 'compose.php?' . $mailtourl;
+            break;
+        case '':
+            $right_frame_url = 'right_main.php';
+            break;
+        default:
+            $right_frame_url =  urlencode($right_frame);
+            break;
+    }
 }
 }
 
 
 $oErrorHandler->setDelayedErrors(true);
 $oErrorHandler->setDelayedErrors(true);
@@ -116,8 +129,6 @@ $oTemplate->assign('nav_size', $left_size);
 $oTemplate->assign('nav_on_left', $location_of_bar=='left');
 $oTemplate->assign('nav_on_left', $location_of_bar=='left');
 $oTemplate->assign('right_frame_url', $right_frame_url);
 $oTemplate->assign('right_frame_url', $right_frame_url);
 
 
-do_hook('webmail_top', $null);
-
 displayHtmlHeader($org_title, '', false, true);
 displayHtmlHeader($org_title, '', false, true);
 
 
 $oTemplate->display('webmail.tpl');
 $oTemplate->display('webmail.tpl');