Missing var
[squirrelmail.git] / functions / imap_messages.php
index f0d5366504b6518055feb00aa5c80d5634e21d04..3b52743e32a7c07ad1e7214e831452c1e9a27654 100755 (executable)
@@ -24,19 +24,19 @@ function sqimap_messages_delete ($imap_stream, $start, $end, $mailbox) {
     if (($move_to_trash == true) && (sqimap_mailbox_exists($imap_stream, $trash_folder) && ($mailbox != $trash_folder))) {
         sqimap_messages_copy ($imap_stream, $start, $end, $trash_folder);
     }
-    sqimap_messages_flag ($imap_stream, $start, $end, "Deleted");
+    sqimap_messages_flag ($imap_stream, $start, $end, "Deleted", true);
 }
 
 /* Sets the specified messages with specified flag */
-function sqimap_messages_flag ($imap_stream, $start, $end, $flag) {
+function sqimap_messages_flag ($imap_stream, $start, $end, $flag, $handle_errors) {
     global $uid_support;
-    $read = sqimap_run_command ($imap_stream, "STORE $start:$end +FLAGS (\\$flag)", true, $response, $message, $uid_support);
+    $read = sqimap_run_command ($imap_stream, "STORE $start:$end +FLAGS (\\$flag)", $handle_errors, $response, $message, $uid_support);
 }
 
 /* Remove specified flag from specified messages */
-function sqimap_messages_remove_flag ($imap_stream, $start, $end, $flag) {
+function sqimap_messages_remove_flag ($imap_stream, $start, $end, $flag, $handle_errors) {
     global $uid_support;
-    $read = sqimap_run_command ($imap_stream, "STORE $start:$end -FLAGS (\\$flag)", true, $response, $message, $uid_support);
+    $read = sqimap_run_command ($imap_stream, "STORE $start:$end -FLAGS (\\$flag)", $handle_errors, $response, $message, $uid_support);
 }
 
 /* Returns some general header information -- FROM, DATE, and SUBJECT */
@@ -90,7 +90,7 @@ function get_reference_header ($imap_stream, $message) {
     $responses = sqimap_read_data_list($imap_stream, $sid, true, $responses, $message);
     if (!eregi("^\\* ([0-9]+) FETCH", $responses[0][0], $regs)) {
         $responses = array ();
-    }
+    } 
     return $responses;
 }
 
@@ -106,7 +106,7 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) {
             $sent_folder, $mailbox, $uid_support;
 
     if (session_is_registered('server_sort_array')) {
-        session_unregister('server_sort_array');
+        sqsession_unregister('server_sort_array');
     }
 
     $sid = sqimap_session_id($uid_support);
@@ -118,10 +118,14 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) {
 
     if ($sort == 6) {
         if ($uid_support) {
-            $uidnext = $mbxresponse['UIDNEXT']-1;
+            if (isset($mbxresponse['UIDNEXT']) && $mbxresponse['UIDNEXT']) {
+                $uidnext = $mbxresponse['UIDNEXT']-1;
+            } else {
+                $uidnext = '*';
+            }
             $uid_query = "$sid SEARCH UID 1:$uidnext\r\n";
             fputs($imap_stream, $uid_query);
-            $uids = sqimap_read_data($imap_stream, $sid, true ,&$response, $message);
+            $uids = sqimap_read_data($imap_stream, $sid, true ,$response, $message);
             if (isset($uids[0])) {
                 if (preg_match("/^\* SEARCH (.+)$/", $uids[0], $regs)) {
                     $server_sort_array = preg_split("/ /", trim($regs[1]));
@@ -134,7 +138,7 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) {
             $qty = $mbxresponse['EXISTS'];
             $server_sort_array = range(1, $qty);
         }
-        session_register('server_sort_array');
+        sqsession_register($server_sort_array, 'server_sort_array');
         return $server_sort_array;
     }
 
@@ -155,7 +159,7 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) {
     if (!empty($sort_on[$sort])) {
         $sort_query = "$sid SORT ($sort_on[$sort]) ".strtoupper($default_charset)." ALL\r\n";
         fputs($imap_stream, $sort_query);
-        $sort_test = sqimap_read_data($imap_stream, $sid, true ,&$response, $message);
+        $sort_test = sqimap_read_data($imap_stream, $sid, true ,$response, $message);
     }
     if (isset($sort_test[0])) {
         if (preg_match("/^\* SORT (.+)$/", $sort_test[0], $regs)) {
@@ -168,7 +172,7 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) {
     if (!preg_match("/OK/", $response)) {
        $server_sort_array = 'no';
     }
-    session_register('server_sort_array');
+    sqsession_register($server_sort_array, 'server_sort_array');
     return $server_sort_array;
 }
 
@@ -177,17 +181,21 @@ function sqimap_get_php_sort_order ($imap_stream, $mbxresponse) {
     global $uid_support;
 
     if (session_is_registered('php_sort_array')) {
-        session_unregister('php_sort_array');
+        sqsession_unregister('php_sort_array');
     }
 
     $sid = sqimap_session_id($uid_support);
     $php_sort_array = array();
 
     if ($uid_support) {
-        $uidnext = $mbxresponse['UIDNEXT']-1;
+        if (isset($mbxresponse['UIDNEXT']) && $mbxresponse['UIDNEXT']) {
+           $uidnext = $mbxresponse['UIDNEXT']-1;
+       } else {
+           $uidnext = '*';
+       }
         $uid_query = "$sid SEARCH UID 1:$uidnext\r\n";
         fputs($imap_stream, $uid_query);
-        $uids = sqimap_read_data($imap_stream, $sid, true ,&$response, $message);
+        $uids = sqimap_read_data($imap_stream, $sid, true ,$response, $message);
         if (isset($uids[0])) {
             if (preg_match("/^\* SEARCH (.+)$/", $uids[0], $regs)) {
                 $php_sort_array = preg_split("/ /", trim($regs[1]));
@@ -200,7 +208,7 @@ function sqimap_get_php_sort_order ($imap_stream, $mbxresponse) {
        $qty = $mbxresponse['EXISTS'];
        $php_sort_array = range(1, $qty);
     }
-    session_register('php_sort_array');
+    sqsession_register($php_sort_array, 'php_sort_array');
     return $php_sort_array;
 }
 
@@ -312,10 +320,10 @@ function get_parent_level ($imap_stream) {
 function get_thread_sort ($imap_stream) {
     global $thread_new, $sort_by_ref, $default_charset, $server_sort_array, $uid_support;
     if (session_is_registered('thread_new')) {
-        session_unregister('thread_new');
+        sqsession_unregister('thread_new');
     }
     if (session_is_registered('server_sort_array')) {
-        session_unregister('server_sort_array');
+        sqsession_unregister('server_sort_array');
     }
     $sid = sqimap_session_id($uid_support);
     $thread_temp = array ();
@@ -369,14 +377,14 @@ function get_thread_sort ($imap_stream) {
                     }
             }
     }
-    session_register('thread_new');
+    sqsession_register($thread_new, 'thread_new');
     $thread_new = array_reverse($thread_new);
     $thread_list = implode(" ", $thread_new);
     $thread_list = str_replace("(", " ", $thread_list);
     $thread_list = str_replace(")", " ", $thread_list);
     $thread_list = preg_split("/\s/", $thread_list, -1, PREG_SPLIT_NO_EMPTY);
     $server_sort_array = $thread_list;
-    session_register('server_sort_array');
+    sqsession_register($server_sort_array, 'server_sort_array');
     return $thread_list;
 }
 
@@ -488,9 +496,9 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list) {
 
         foreach ($read as $read_part) {
             //unfold multi-line headers
-            while ($prevline && strspn($read_part, "\t ") > 0) {
-               $read_part = substr($prevline, 0, -2) . ' ' . ltrim($read_part);
-            }
+           if ($prevline && strpos($read_part, "\t ") === true) {
+               $read_part = substr($prevline, 0, -2) . preg_replace('/(\t\s+)/',' ',$read_part);
+           }
             $prevline = $read_part;
             if ($read_part{0} == '*') {
                 if ($internaldate) {
@@ -697,7 +705,7 @@ function sqimap_get_message ($imap_stream, $id, $mailbox) {
     $bodystructure = implode('',$read);
     $msg =  mime_structure($bodystructure,$flags);
     $read = sqimap_run_command ($imap_stream, "FETCH $id BODY[HEADER]", true, $response, $message, $uid_support);
-    $rfc822_header = new rfc822_header();
+    $rfc822_header = new Rfc822Header();
     $rfc822_header->parseHeader($read);
     $msg->rfc822_header = $rfc822_header;
     return $msg;