A better solution to the problem of $DOCUMENT_ROOT.
authorgraf25 <graf25@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 7 Jun 2002 20:54:51 +0000 (20:54 +0000)
committergraf25 <graf25@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Fri, 7 Jun 2002 20:54:51 +0000 (20:54 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@2932 7612ce4b-ef26-0410-bec9-ea0150e637f0

functions/display_messages.php

index 8a39eade60854dd7fab0662cb2da1d28ea5a23f7..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
@@ -95,10 +116,11 @@ function logout_error( $errString, $errTitle = '' ) {
            $hide_sm_attributions, $version, $squirrelmail_language;
 
     $base_uri = sqm_baseuri();
-    include_once( '../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( '../config/config.php' );
+        include( "$topdir/config/config.php" );
     }
     /* Display width and height like good little people */
     $width_and_height = '';