Wrong variable name used
[squirrelmail.git] / functions / imap_general.php
index 1373a20e3d7cd2756bee325e89425d833f748ce2..8d6d27ee218abf35964e7e5f28e610fc48636466 100755 (executable)
@@ -13,9 +13,8 @@
  */
 
 /** Includes.. */
-require_once(SM_PATH . 'functions/page_header.php');
-require_once(SM_PATH . 'functions/auth.php');
-include_once(SM_PATH . 'functions/rfc822address.php');
+
+require_once(SM_PATH . 'functions/rfc822address.php');
 
 
 /**
@@ -64,11 +63,10 @@ function sqimap_run_command_list ($imap_stream, $query, $handle_errors, &$respon
     } else {
         global $squirrelmail_language, $color;
         set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
         $string = "<b><font color=\"$color[2]\">\n" .
                 _("ERROR: No available IMAP stream.") .
                 "</b></font>\n";
-        error_box($string,$color);
+        error_box($string);
         return false;
     }
 }
@@ -115,11 +113,10 @@ function sqimap_run_command ($imap_stream, $query, $handle_errors, &$response,
     } else {
         global $squirrelmail_language, $color;
         set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
         $string = "<b><font color=\"$color[2]\">\n" .
                 _("ERROR: No available IMAP stream.") .
                 "</b></font>\n";
-        error_box($string,$color);
+        error_box($string);
         return false;
     }
 }
@@ -317,9 +314,8 @@ function sqimap_fread($imap_stream,$iSize,$filter=false,
  */
 function sqimap_read_data_list($imap_stream, $tag, $handle_errors,
           &$response, &$message, $query = '') {
-    global $color, $squirrelmail_language;
+    global $color, $oTemplate, $squirrelmail_language;
     set_up_language($squirrelmail_language);
-    require_once(SM_PATH . 'functions/display_messages.php');
     $string = "<b><font color=\"$color[2]\">\n" .
         _("ERROR: Bad function call.") .
         "</b><br />\n" .
@@ -330,8 +326,8 @@ function sqimap_read_data_list($imap_stream, $tag, $handle_errors,
           'sqimap_run_command or sqimap_run_command_list instead<br /><br />'.
           'The following query was issued:<br />'.
            htmlspecialchars($query) . '<br />' . "</font><br />\n";
-    error_box($string,$color);
-    echo '</body></html>';
+    error_box($string);
+    $oTemplate->display('footer.tpl');
     exit;
 }
 
@@ -350,7 +346,6 @@ function sqimap_error_box($title, $query = '', $message_title = '', $message = '
     global $color, $squirrelmail_language;
 
     set_up_language($squirrelmail_language);
-    require_once(SM_PATH . 'functions/display_messages.php');
     $string = "<font color=\"$color[2]\"><b>\n" . $title . "</b><br />\n";
     $cmd = explode(' ',$query);
     $cmd= strtolower($cmd[0]);
@@ -364,7 +359,7 @@ function sqimap_error_box($title, $query = '', $message_title = '', $message = '
     $string .= "</font><br />\n";
     if ($link != '')
         $string .= $link;
-    error_box($string,$color);
+    error_box($string);
 }
 
 /**
@@ -461,7 +456,7 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
 
           case '*':
           {
-            if (($sCommand == "FETCH" || $sCommand == "STORE") && preg_match('/^\*\s\d+\sFETCH/',$read)) {
+            if (($sCommand == "FETCH" || $sCommand == "STORE")  && preg_match('/^\*\s\d+\sFETCH/',$read)) {
                 /* check for literal */
                 $s = substr($read,-3);
                 $fetch_data = array();
@@ -748,7 +743,9 @@ function sqimap_create_stream($server,$port,$tls=0) {
  * Logs the user into the IMAP server.  If $hide is set, no error messages
  * will be displayed.  This function returns the IMAP connection handle.
  * @param string $username user name
- * @param string $password encrypted password
+ * @param string $password password encrypted with onetimepad. Since 1.5.2 
+ *  function can use internal password functions, if parameter is set to 
+ *  boolean false. 
  * @param string $imap_server_address address of imap server
  * @param integer $imap_port port of imap server
  * @param boolean $hide controls display connection errors
@@ -758,11 +755,21 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
     global $color, $squirrelmail_language, $onetimepad, $use_imap_tls,
            $imap_auth_mech, $sqimap_capabilities;
 
-    if (!isset($onetimepad) || empty($onetimepad)) {
-        sqgetglobalvar('onetimepad' , $onetimepad , SQ_SESSION );
+    /* get imap login password */
+    if ($password===false) {
+        /* standard functions */
+        $password = sqauth_read_password();
+    } else {
+        /* old way. $key must be extracted from cookie */
+        if (!isset($onetimepad) || empty($onetimepad)) {
+            sqgetglobalvar('onetimepad' , $onetimepad , SQ_SESSION );
+        }
+        /* Decrypt the password */
+        $password = OneTimePadDecrypt($password, $onetimepad);
     }
+
     if (!isset($sqimap_capabilities)) {
-        sqgetglobalvar('sqimap_capabilities' , $capability , SQ_SESSION );
+        sqgetglobalvar('sqimap_capabilities' , $sqimap_capabilities , SQ_SESSION );
     }
 
     $host = $imap_server_address;
@@ -770,9 +777,6 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
 
     $imap_stream = sqimap_create_stream($imap_server_address,$imap_port,$use_imap_tls);
 
-    /* Decrypt the password */
-    $password = OneTimePadDecrypt($password, $onetimepad);
-
     if (($imap_auth_mech == 'cram-md5') OR ($imap_auth_mech == 'digest-md5')) {
         // We're using some sort of authentication OTHER than plain or login
         $tag=sqimap_session_id(false);
@@ -831,7 +835,7 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
          *
          **/
         $tag=sqimap_session_id(false);
-        $sasl = (isset($capability['SASL-IR']) && $capability['SASL-IR']) ? true : false;
+        $sasl = (isset($sqimap_capabilities['SASL-IR']) && $sqimap_capabilities['SASL-IR']) ? true : false;
         $auth = base64_encode("$username\0$username\0$password");
         if ($sasl) {
             // IMAP Extension for SASL Initial Client Response
@@ -863,7 +867,6 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
                 /* "BAD" and anything else gets reported here. */
                 $message = htmlspecialchars($message);
                 set_up_language($squirrelmail_language, true);
-                require_once(SM_PATH . 'functions/display_messages.php');
                 if ($response == 'BAD') {
                     $string = sprintf (_("Bad request: %s")."<br />\r\n", $message);
                 } else {
@@ -875,7 +878,7 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
                         $string .= htmlspecialchars($line) . "<br />\n";
                     }
                 }
-                error_box($string,$color);
+                error_box($string);
                 exit;
             } else {
                 /*
@@ -890,8 +893,8 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
                  */
 
                 set_up_language($squirrelmail_language, true);
-                include_once(SM_PATH . 'functions/display_messages.php' );
                 sqsession_destroy();
+                sqsetcookieflush();
                 /* terminate the session nicely */
                 sqimap_logout($imap_stream);
                 logout_error( _("Unknown user or password incorrect.") );
@@ -911,7 +914,6 @@ function sqimap_login ($username, $password, $imap_server_address, $imap_port, $
     if ( stristr($message, 'REFERRAL imap') === TRUE ) {
         sqimap_logout($imap_stream);
         set_up_language($squirrelmail_language, true);
-        include_once(SM_PATH . 'functions/display_messages.php' );
         sqsession_destroy();
         logout_error( _("Your mailbox is not located at this server. Try a different server or consult your system administrator") );
         exit;
@@ -948,14 +950,22 @@ function sqimap_capability($imap_stream, $capability='', $bUseCache=true) {
 
     if (!$bUseCache || ! sqgetGlobalVar('sqimap_capabilities', $sqimap_capabilities, SQ_SESSION)) {
         $read = sqimap_run_command($imap_stream, 'CAPABILITY', true, $a, $b);
-
         $c = explode(' ', $read[0]);
         for ($i=2; $i < count($c); $i++) {
             $cap_list = explode('=', $c[$i]);
             if (isset($cap_list[1])) {
+                if(isset($sqimap_capabilities[trim($cap_list[0])]) &&
+                 !is_array($sqimap_capabilities[trim($cap_list[0])])) {
+                    // Remove array key that was added in 'else' block below
+                    // This is to accomodate for capabilities like:
+                    // SORT SORT=MODSEQ
+                    unset($sqimap_capabilities[trim($cap_list[0])]);
+                }
                 $sqimap_capabilities[trim($cap_list[0])][] = $cap_list[1];
             } else {
-                $sqimap_capabilities[trim($cap_list[0])] = TRUE;
+                if(!isset($sqimap_capabilities[trim($cap_list[0])])) {
+                    $sqimap_capabilities[trim($cap_list[0])] = TRUE;
+                }
             }
         }
     }
@@ -1296,5 +1306,3 @@ function map_yp_alias($username) {
    $yp = `ypmatch $username aliases`;
    return chop(substr($yp, strlen($username)+1));
 }
-
-?>