Added a "bypass trash" checkbox to the mailbox display. When checked, the Delete...
[squirrelmail.git] / functions / imap_general.php
index 63d37823df2aa529f07ccde08ab2cdb63dab2808..17671284c7173093e7adb175b4a1ad648cd398b8 100755 (executable)
@@ -187,7 +187,8 @@ function sqimap_fread($imap_stream,$iSize,$filter=false,
     if (!$filter || !$outputstream) {
         $iBufferSize = $iSize;
     } else {
-        $iBufferSize = 62400; // multiple of 78 in case of base64 decoding.
+        // see php bug 24033. They changed fread behaviour %$^&$%
+        $iBufferSize = 780; // multiple of 78 in case of base64 decoding.
     }
     $iRet = $iSize - $iBufferSize;
     $iRetrieved = 0;
@@ -294,6 +295,26 @@ function sqimap_read_data_list($imap_stream, $tag, $handle_errors,
     exit; 
 }
 
+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]);
+
+    if ($query != '' &&  $cmd != 'login')
+        $string .= _("Query:") . ' ' . htmlspecialchars($query) . '<br>';
+    if ($message_title != '')
+        $string .= $message_title;
+    if ($message != '')
+        $string .= htmlspecialchars($message);
+    $string .= "</font><br>\n";
+    error_box($string,$color);
+}
+
 /*
  * Reads the output from the IMAP stream.  If handle_errors is set to true,
  * this will also handle all errors that are received.  If it is not set,
@@ -461,14 +482,7 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
     /* error processing in case $read is false */
     if ($read === false) {
         unset($data);
-        set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
-        $string = "<b><font color=$color[2]>\n" .
-                  _("ERROR : Connection dropped by imap-server.") .
-                  "</b><br>\n" .
-                  _("Query:") . ' '.
-                  htmlspecialchars($query) . '<br>' . "</font><br>\n";
-        error_box($string,$color);    
+        sqimap_error_box(_("ERROR : Connection dropped by imap-server."), $query);
         exit;
     }
     
@@ -483,67 +497,30 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
     /* Return result or handle errors */
     if ($handle_errors == false) {
         return $aResponse;
-        return( $resultlist );
+        return( $resultlist ); //?? Why this?
     }
-    switch ($response[$tag])
-    {
+    switch ($response[$tag]) {
     case 'OK':
         return $aResponse;
         break;
     case 'NO': 
         /* ignore this error from M$ exchange, it is not fatal (aka bug) */
         if (strstr($message[$tag], 'command resulted in') === false) {
-            set_up_language($squirrelmail_language);
-            require_once(SM_PATH . 'functions/display_messages.php');
-            $string = "<b><font color=$color[2]>\n" .
-                _("ERROR : Could not complete request.") .
-                "</b><br>\n" .
-                _("Query:") . ' ' .
-                htmlspecialchars($query) . '<br>' .
-                _("Reason Given: ") .
-                htmlspecialchars($message[$tag]) . "</font><br>\n";
-            error_box($string,$color);
+            sqimap_error_box(_("ERROR : Could not complete request."), $query, _("Reason Given: "), $message[$tag]);
             echo '</body></html>';
             exit;
         }
         break;
     case 'BAD': 
-        set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
-        $string = "<b><font color=$color[2]>\n" .
-            _("ERROR : Bad or malformed request.") .
-            "</b><br>\n" .
-            _("Query:") . ' '.
-            htmlspecialchars($query) . '<br>' .
-            _("Server responded: ") .
-            htmlspecialchars($message[$tag]) . "</font><br>\n";
-        error_box($string,$color);
+        sqimap_error_box(_("ERROR : Bad or malformed request."), $query, _("Server responded: "), $message[$tag]);
         echo '</body></html>';        
         exit; 
     case 'BYE': 
-        set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
-        $string = "<b><font color=$color[2]>\n" .
-            _("ERROR : Imap server closed the connection.") .
-            "</b><br>\n" .
-            _("Query:") . ' '.
-            htmlspecialchars($query) . '<br>' .
-            _("Server responded: ") .
-            htmlspecialchars($message[$tag]) . "</font><br>\n";
-        error_box($string,$color);
+        sqimap_error_box(_("ERROR : Imap server closed the connection."), $query, _("Server responded: "), $message[$tag]);
         echo '</body></html>';        
         exit;
     default: 
-        set_up_language($squirrelmail_language);
-        require_once(SM_PATH . 'functions/display_messages.php');
-        $string = "<b><font color=$color[2]>\n" .
-            _("ERROR : Unknown imap response.") .
-            "</b><br>\n" .
-            _("Query:") . ' '.
-            htmlspecialchars($query) . '<br>' .
-            _("Server responded: ") .
-            htmlspecialchars($message[$tag]) . "</font><br>\n";
-        error_box($string,$color);
+        sqimap_error_box(_("ERROR : Unknown imap response."), $query, _("Server responded: "), $message[$tag]);
        /* the error is displayed but because we don't know the reponse we
           return the result anyway */
        return $aResponse;    
@@ -787,6 +764,7 @@ function sqimap_get_delimiter ($imap_stream = false) {
         } else {
             fputs ($imap_stream, ". LIST \"INBOX\" \"\"\r\n");
             $read = sqimap_read_data($imap_stream, '.', true, $a, $b);
+            $read = $read['.'][0];     //sqimap_read_data() now returns a tag array of response array
             $quote_position = strpos ($read[0], '"');
             $sqimap_delimiter = substr ($read[0], $quote_position+1, 1);
         }
@@ -795,7 +773,6 @@ function sqimap_get_delimiter ($imap_stream = false) {
 }
 
 
-/* This is a straight copy of imap_mailbox.php:encode_mailbox_name() */
 function sqimap_encode_mailbox_name($what)
 {
        if (ereg("[\"\\\r\n]", $what))
@@ -1004,7 +981,7 @@ function sqimap_unseen_messages ($imap_stream, $mailbox) {
 }
 
 /*
- * Returns the number of unseen/total messages in this folder
+ * Returns the number of total/unseen/recent messages in this folder
  */
 function sqimap_status_messages ($imap_stream, $mailbox) {
     $read_ary = sqimap_run_command ($imap_stream, 'STATUS ' . sqimap_encode_mailbox_name($mailbox) . ' (MESSAGES UNSEEN RECENT)', false, $result, $message);