Hi, this is graf25, and I'm an idiot. :)
[squirrelmail.git] / functions / display_messages.php
index 3e91a4d176c6e0294cb111e72d1bb57e82a54964..aae91ed1ce05feb5ed93ff49363bb3c8bc1f489a 100644 (file)
@@ -28,12 +28,33 @@ function sqm_baseuri(){
     if (isset($base_uri)){
         return $base_uri;
     }
-    $dirs = array("|src/.*|", "|plugins/.*|", "|functions/.*|");
-    $repl = array("", "", "");
+    $dirs = array('|src/.*|', '|plugins/.*|', '|functions/.*|');
+    $repl = array('', '', '');
     $base_uri = preg_replace($dirs, $repl, $PHP_SELF);
     return $base_uri;
 }
 
+/**
+ * Find out the top REAL path of the squirrelmail installation.
+ *
+ * @return  the real installation directory of squirrelmail.
+ */
+
+function sqm_topdir(){
+    $topdir = '';
+    /**
+     * $levels is just to avoid a potential infinite loop in case
+     * things are REALLY broken. Shouldn't really ever happen.
+     */
+    $levels = 0;
+    while (!(is_dir("$topdir/functions") && is_dir("$topdir/src"))
+           && $levels < 10){
+        $topdir .= '../';
+        $levels++;
+    }
+    return $topdir;
+}
+
 function error_username_password_incorrect() {
     global $frame_top, $color;
     /* XXX: Should really not start the HTML before this, or close off more
@@ -92,13 +113,14 @@ function plain_error_message($message, $color) {
 function logout_error( $errString, $errTitle = '' ) {
 
     GLOBAL $frame_top, $org_logo, $org_name, $org_logo_width, $org_logo_height,
-           $hide_sm_attributions, $version, $DOCUMENT_ROOT,
-           $squirrelmail_language;
+           $hide_sm_attributions, $version, $squirrelmail_language;
+
     $base_uri = sqm_baseuri();
-    include_once($DOCUMENT_ROOT . $base_uri . 'functions/page_header.php' );
+    $topdir = sqm_topdir();
+    include_once( "$topdir/functions/page_header.php" );
     if ( !isset( $org_logo ) ) {
         // Don't know yet why, but in some accesses $org_logo is not set.
-        include( $DOCUMENT_ROOT . $base_uri . 'config/config.php' );
+        include( "$topdir/config/config.php" );
     }
     /* Display width and height like good little people */
     $width_and_height = '';