X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;ds=sidebyside;f=functions%2Fimap_messages.php;h=d609c8ea873b212380fc7639a99de4055e01d280;hb=26f9a94a1f7c04666c65f75dce311988df6b6a94;hp=330f5bc4a369a2b3fc9d08d747dbbcb95209b0c5;hpb=b135de9c8c0238f850abca25b972b0969bc5d205;p=squirrelmail.git diff --git a/functions/imap_messages.php b/functions/imap_messages.php index 330f5bc4..d609c8ea 100755 --- a/functions/imap_messages.php +++ b/functions/imap_messages.php @@ -3,7 +3,7 @@ /** * imap_messages.php * - * Copyright (c) 1999-2002 The SquirrelMail Project Team + * Copyright (c) 1999-2003 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * This implements functions that manipulate messages @@ -12,12 +12,22 @@ */ /* Copies specified messages to specified folder */ +/* obsolete */ function sqimap_messages_copy ($imap_stream, $start, $end, $mailbox) { global $uid_support; $read = sqimap_run_command ($imap_stream, "COPY $start:$end \"$mailbox\"", true, $response, $message, $uid_support); } +function sqimap_msgs_list_copy ($imap_stream, $id, $mailbox) { + global $uid_support; + $msgs_id = sqimap_message_list_squisher($id); + $read = sqimap_run_command ($imap_stream, "COPY $msgs_id \"$mailbox\"", true, $response, $message, $uid_support); + $read = sqimap_run_command ($imap_stream, "STORE $msgs_id +FLAGS (\\Deleted)", true, $response, $message, $uid_support); +} + + /* Deletes specified messages and moves them to trash if possible */ +/* obsolete */ function sqimap_messages_delete ($imap_stream, $start, $end, $mailbox) { global $move_to_trash, $trash_folder, $auto_expunge, $uid_support; @@ -27,6 +37,16 @@ function sqimap_messages_delete ($imap_stream, $start, $end, $mailbox) { sqimap_messages_flag ($imap_stream, $start, $end, "Deleted", true); } +function sqimap_msgs_list_delete ($imap_stream, $mailbox, $id) { + global $move_to_trash, $trash_folder, $uid_support; + $msgs_id = sqimap_message_list_squisher($id); + if (($move_to_trash == true) && (sqimap_mailbox_exists($imap_stream, $trash_folder) && ($mailbox != $trash_folder))) { + $read = sqimap_run_command ($imap_stream, "COPY $msgs_id \"$trash_folder\"", true, $response, $message, $uid_support); + } + $read = sqimap_run_command ($imap_stream, "STORE $msgs_id +FLAGS (\\Deleted)", true, $response, $message, $uid_support); +} + + /* Sets the specified messages with specified flag */ function sqimap_messages_flag ($imap_stream, $start, $end, $flag, $handle_errors) { global $uid_support; @@ -39,6 +59,14 @@ function sqimap_messages_remove_flag ($imap_stream, $start, $end, $flag, $handle $read = sqimap_run_command ($imap_stream, "STORE $start:$end -FLAGS (\\$flag)", $handle_errors, $response, $message, $uid_support); } +function sqimap_toggle_flag($imap_stream, $id, $flag, $set, $handle_errors) { + global $uid_support; + $msgs_id = sqimap_message_list_squisher($id); + $set_string = ($set ? '+' : '-'); + $read = sqimap_run_command ($imap_stream, "STORE $msgs_id ".$set_string."FLAGS ($flag)", $handle_errors, $response, $message, $uid_support); +} + + /* Returns some general header information -- FROM, DATE, and SUBJECT */ class small_header { var $from = '', $subject = '', $date = '', $to = '', @@ -56,7 +84,7 @@ function sqimap_get_small_header ($imap_stream, $id, $sent) { */ function sqimap_message_list_squisher($messages_array) { if( !is_array( $messages_array ) ) { - return; + return $messages_array; } sort($messages_array, SORT_NUMERIC); @@ -105,8 +133,8 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) { $internal_date_sort, $server_sort_array, $sent_folder, $mailbox, $uid_support; - if (session_is_registered('server_sort_array')) { - session_unregister('server_sort_array'); + if (sqsession_is_registered('server_sort_array')) { + sqsession_unregister('server_sort_array'); } $sid = sqimap_session_id($uid_support); @@ -118,7 +146,11 @@ 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); @@ -134,7 +166,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; } @@ -168,7 +200,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; } @@ -176,8 +208,8 @@ function sqimap_get_sort_order ($imap_stream, $sort, $mbxresponse) { function sqimap_get_php_sort_order ($imap_stream, $mbxresponse) { global $uid_support; - if (session_is_registered('php_sort_array')) { - session_unregister('php_sort_array'); + if (sqsession_is_registered('php_sort_array')) { + sqsession_unregister('php_sort_array'); } $sid = sqimap_session_id($uid_support); @@ -204,7 +236,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; } @@ -315,11 +347,11 @@ 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'); + if (sqsession_is_registered('thread_new')) { + sqsession_unregister('thread_new'); } - if (session_is_registered('server_sort_array')) { - session_unregister('server_sort_array'); + if (sqsession_is_registered('server_sort_array')) { + sqsession_unregister('server_sort_array'); } $sid = sqimap_session_id($uid_support); $thread_temp = array (); @@ -373,17 +405,18 @@ 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; } + function elapsedTime($start) { $stop = gettimeofday(); $timepassed = 1000000 * ($stop['sec'] - $start['sec']) + $stop['usec'] - $start['usec']; @@ -427,14 +460,14 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list) { _("ERROR : Could not complete request.") . '
' . _("Unknown response from IMAP server: ") . ' 1.' . - $r[0] . "
\n"; + htmlspecialchars($r[0]) . "
\n"; } else if (! isset($id2index[$regs[1]]) || !count($id2index[$regs[1]])) { set_up_language($squirrelmail_language); echo '
' . _("ERROR : Could not complete request.") . '
' . _("Unknown message number in reply from server: ") . - $regs[1] . "

\n"; + htmlspecialchars($regs[1]) . "
\n"; } else { $read_list[$id2index[$regs[1]]] = $r; } @@ -445,14 +478,14 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list) { _("ERROR : Could not complete request.") . '
' . _("Unknown response from IMAP server: ") . ' 1.' . - $r[0] . "
\n"; + htmlspecialchars($r[0]) . "
\n"; } else if (! isset($id2index[$regs[2]]) || !count($id2index[$regs[2]])) { set_up_language($squirrelmail_language); echo '
' . _("ERROR : Could not complete request.") . '
' . _("Unknown message number in reply from server: ") . - $regs[2] . "

\n"; + htmlspecialchars($regs[2]) . "
\n"; } else { $read_list[$id2index[$regs[2]]] = $r; $unique_id = $regs[2]; @@ -476,13 +509,13 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list) { $subject = _("(no subject)"); $from = _("Unknown Sender"); $priority = 0; - $messageid = "<>"; - $cc = ""; - $to = ""; - $date = ""; - $type[0] = ""; - $type[1] = ""; - $inrepto = ""; + $messageid = '<>'; + $cc = ''; + $to = ''; + $date = ''; + $type[0] = ''; + $type[1] = ''; + $inrepto = ''; $flag_seen = false; $flag_answered = false; $flag_deleted = false; @@ -492,8 +525,8 @@ 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} == '*') { @@ -503,7 +536,7 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list) { $tmpdate = str_replace(' ',' ',$tmpdate); $tmpdate = explode(' ',$tmpdate); $date = str_replace('-',' ',$tmpdate[0]) . " " . - $tmpdate[1] . " " . + $tmpdate[1] . ' ' . $tmpdate[2]; } } @@ -529,7 +562,7 @@ function sqimap_get_small_header_list ($imap_stream, $msg_list) { $unique_id = $reg[1]; } } else { - $firstchar = $read_part{0}; + $firstchar = strtoupper($read_part{0}); if ($firstchar == 'T') { $regpattern = $patterns[0]; $id = 1; @@ -701,7 +734,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;