Added a counter pref and a fix for the imapid
[squirrelmail.git] / functions / imap_general.php
index b5576283b0c65b0cc7fbd4b83eed91e632c5903c..066fb4c2d80138bfc1eb815979893dd6fb47e0df 100755 (executable)
@@ -1,33 +1,34 @@
 <?php
 
    /**
-    **  imap.php
-    **
-    **  Copyright (c) 1999-2001 The Squirrelmail Development Team
-    **  Licensed under the GNU GPL. For full terms see the file COPYING.    
-    **
-    **  This implements all functions that do general imap functions.
-    **
-    **  $Id$
-    **/
-
-global $imap_general_debug;
-$imap_general_debug = false;
-
-   /******************************************************************************
-    **  Sets an unique session id in order to avoid simultanous sessions crash.
-    ******************************************************************************/
+    *   imap.php
+    *
+    *   Copyright (c) 1999-2001 The Squirrelmail Development Team
+    *   Licensed under the GNU GPL. For full terms see the file COPYING.
+    *
+    *   This implements all functions that do general imap functions.
+    *
+    *   $Id$
+    */
+
+    /**
+    * Unique SessionId
+    *
+    * Sets an unique session id in order to avoid simultanous sessions crash.
+    *
+    * @return  string  a 4 chars unique string
+    */
+    function sqimap_session_id() {
+
+        global $data_dir, $username;
+
+        $IMAPSessionID = substr(session_id(), -4);
+        if( $IMAPSessionID == '' ) {
+            $IMAPSessionID = str_pad( dechex( getPref( $data_dir, $username, 'counter', 0 ) ),
+                                      4, '0', STR_PAD_LEFT);
+        }
 
-   function sqimap_session_id() {
-      if (session_id() != '')
-         return substr(session_id(), -4);
-        
-      global $RememberedSessionID;
-      
-      if (! isset($RememberedSessionID))
-         $RememberedSessionID = GenerateRandomString(4, '', 7);
-        
-      return $RememberedSessionID;
+        return( $IMAPSessionID );
    }
 
 
@@ -40,11 +41,10 @@ $imap_general_debug = false;
    function sqimap_read_data_list ($imap_stream, $pre, $handle_errors,
                                    &$response, &$message) {
       global $color, $squirrelmail_language;
-      global $imap_general_debug;
 
       $read = '';
       $resultlist = array();
-      
+
       $more_msgs = true;
       while ($more_msgs) {
          $data = array();
@@ -57,13 +57,6 @@ $imap_general_debug = false;
             $size = $regs[1];
          } else if (ereg("^\\* [0-9]+ FETCH", $read, $regs)) {
             // Sizeless response, probably single-line
-
-            // For debugging purposes
-            if ($imap_general_debug) {
-                echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
-                flush();
-            }
-
             $size = -1;
             $data[] = $read;
             $read = fgets($imap_stream, 9096);
@@ -74,13 +67,6 @@ $imap_general_debug = false;
             while (strpos($read, "\n") === false) {
                $read .= fgets($imap_stream, 9096);
             }
-
-            // For debugging purposes
-            if ($imap_general_debug) {
-                echo "<small><tt><font color=\"#CC0000\">$read</font></tt></small><br>\n";
-                flush();
-            }
-
             // If we know the size, no need to look at the end parameters
             if ($size > 0) {
                if ($total_size == $size) {
@@ -121,7 +107,6 @@ $imap_general_debug = false;
       $response = $regs[1];
       $message = trim($regs[2]);
       
-      if ($imap_general_debug) { echo '--<br>'; }
       if ($handle_errors == false) { return $resultlist; }
      
       if ($response == 'NO') {
@@ -157,12 +142,13 @@ $imap_general_debug = false;
     **  will be displayed.  This function returns the imap connection handle.
     ******************************************************************************/
    function sqimap_login ($username, $password, $imap_server_address, $imap_port, $hide) {
+      
       global $color, $squirrelmail_language, $HTTP_ACCEPT_LANGUAGE, $onetimepad;
 
-      $imap_stream = fsockopen ($imap_server_address, $imap_port,
-         $error_number, $error_string, 15);
+      $imap_stream = fsockopen ( $imap_server_address, $imap_port,
+                                 $error_number, $error_string, 15);
       $server_info = fgets ($imap_stream, 1024);
-
+        
       // Decrypt the password
       $password = OneTimePadDecrypt($password, $onetimepad);
 
@@ -263,7 +249,6 @@ $imap_general_debug = false;
 
    function sqimap_capability($imap_stream, $capability) {
         global $sqimap_capabilities;
-global $imap_general_debug;
 
         if (!is_array($sqimap_capabilities)) {
             fputs ($imap_stream, sqimap_session_id() . " CAPABILITY\r\n");
@@ -287,7 +272,7 @@ global $imap_general_debug;
     **  Returns the delimeter between mailboxes:  INBOX/Test, or INBOX.Test... 
     ******************************************************************************/
    function sqimap_get_delimiter ($imap_stream = false) {
-global $imap_general_debug;
+
       global $sqimap_delimiter;
       global $optional_delimiter;