New config_local settings
[squirrelmail.git] / functions / imap_messages.php
index 19ce2d7f006d67dc626e5162d975b18e476d871b..461de56efec67029132e58d888c60761461fd774 100755 (executable)
@@ -6,7 +6,7 @@
  * This implements functions that manipulate messages
  * NOTE: Quite a few functions in this file are obsolete
  *
- * @copyright © 1999-2007 The SquirrelMail Project Team
+ * @copyright 1999-2016 The SquirrelMail Project Team
  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  * @version $Id$
  * @package squirrelmail
@@ -47,7 +47,6 @@ function sqimap_msgs_list_move($imap_stream, $id, $mailbox, $handle_errors = tru
     if ($source_mailbox!==false && $source_mailbox==$mailbox) {
         return false;
     }
-    $msgs_id = sqimap_message_list_squisher($id);
     if (sqimap_msgs_list_copy ($imap_stream, $id, $mailbox, $handle_errors)) {
         return sqimap_toggle_flag($imap_stream, $id, '\\Deleted', true, true);
     } else {
@@ -66,8 +65,7 @@ function sqimap_msgs_list_move($imap_stream, $id, $mailbox, $handle_errors = tru
  * @since 1.4.0
  */
 function sqimap_msgs_list_delete($imap_stream, $mailbox, $id, $bypass_trash=false) {
-    // FIX ME, remove globals by introducing an associative array with properties
-    // as 4th argument as replacement for the bypass_trash var
+    // FIXME: Remove globals by introducing an associative array with properties as 4th argument as replacement for the $bypass_trash variable.
     global $move_to_trash, $trash_folder;
     if (($move_to_trash == true) && ($bypass_trash != true) &&
         (sqimap_mailbox_exists($imap_stream, $trash_folder) &&  ($mailbox != $trash_folder)) ) {
@@ -165,8 +163,8 @@ function sqimap_get_sort_order($imap_stream, $sSortField, $reverse, $search='ALL
             $sSortField = 'REVERSE '.$sSortField;
         }
         $query = "SORT ($sSortField) ".strtoupper($default_charset)." $search";
-        // FIX ME sqimap_run_command should return the parsed data accessible by $aDATA['SORT']
-        // use sqimap_run_command_list in case of unsollicited responses. If we don't we could loose the SORT response
+        // FIXME: sqimap_run_command() should return the parsed data accessible by $aDATA['SORT']
+        // use sqimap_run_command_list() in case of unsolicited responses. If we don't we could loose the SORT response.
         $aData = sqimap_run_command_list ($imap_stream, $query, false, $response, $message, TRUE);
         /* fallback to default charset */
         if ($response == 'NO') {
@@ -231,7 +229,9 @@ function get_squirrel_sort($imap_stream, $sSortField, $reverse = false, $aUid =
 
     // sqimap_get_small_header (see above) returns fields in lower case,
     // but the code below uses all upper case
-    foreach ($msgs as $k => $v) $msgs[$k][strtoupper($sSortField)] = $msgs[$k][strtolower($sSortField)];
+    foreach ($msgs as $k => $v) 
+        if (isset($msgs[$k][strtolower($sSortField)])) 
+            $msgs[$k][strtoupper($sSortField)] = $msgs[$k][strtolower($sSortField)];
 
     $aUid = array();
     $walk = false;
@@ -622,7 +622,7 @@ function parseFetch(&$aResponse,$aMessageList = array()) {
         $aMsg['ID'] = $id;
         $fetch = substr($read,$i_space+1,5);
         if (!is_numeric($id) && $fetch !== 'FETCH') {
-            $aMsg['ERROR'] = $read; // htmlspecialchars should be done just before display. this is backend code
+            $aMsg['ERROR'] = $read; // sm_encode_html_special_chars should be done just before display. this is backend code
             break;
         }
         $i = strpos($read,'(',$i_space+5);
@@ -714,7 +714,7 @@ function parseFetch(&$aResponse,$aMessageList = array()) {
                                         if  (is_numeric($sPrio)) {
                                             $iPrio = (int) $sPrio;
                                         } elseif ( $sPrio == 'non-urgent' || $sPrio == 'low' ) {
-                                            $iPrio = 3;
+                                            $iPrio = 5;
                                         } elseif ( $sPrio == 'urgent' || $sPrio == 'high' ) {
                                             $iPrio = 1;
                                         } else {
@@ -895,7 +895,10 @@ function sqimap_parse_address($read, &$i) {
  */
 function sqimap_get_message($imap_stream, $id, $mailbox, $hide=0) {
     // typecast to int to prohibit 1:* msgs sets
-    $id = (int) $id;
+    // Update: $id should always be sanitized into a BIGINT so this
+    // is being removed; leaving this code here in case something goes
+    // wrong, however
+    //$id = (int) $id;
     $flags = array();
     $read = sqimap_run_command($imap_stream, "FETCH $id (FLAGS BODYSTRUCTURE)", true, $response, $message, TRUE);
     if ($read) {
@@ -952,11 +955,10 @@ function sqimap_get_message($imap_stream, $id, $mailbox, $hide=0) {
  *
  */
 function parse_message_entities(&$msg, $id, $imap_stream) {
-    global $uid_support;
     if (!empty($msg->entities)) foreach ($msg->entities as $i => $entity) {
-        if (is_object($entity) && get_class($entity) == 'Message') {
+        if (is_object($entity) && strtolower(get_class($entity)) == 'message') {
             if (!empty($entity->rfc822_header)) {
-                $read = sqimap_run_command($imap_stream, "FETCH $id BODY[". $entity->entity_id .".HEADER]", true, $response, $message, $uid_support);
+                $read = sqimap_run_command($imap_stream, "FETCH $id BODY[". $entity->entity_id .".HEADER]", true, $response, $message, TRUE);
                 $rfc822_header = new Rfc822Header();
                 $rfc822_header->parseHeader($read);
                 $msg->entities[$i]->rfc822_header = $rfc822_header;