X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fimap_messages.php;h=c0732acae4a7c01f61b3f04e0d9223fd5962730c;hb=1cbd87548bd63a925cb3d4ce025ae40b616b7c64;hp=f16b5d2b7ffcb3331b6f00ffc9ba4dbbac802285;hpb=3b8fe16c6c92c04070b81018f8860868dea52289;p=squirrelmail.git diff --git a/functions/imap_messages.php b/functions/imap_messages.php index f16b5d2b..c0732aca 100755 --- a/functions/imap_messages.php +++ b/functions/imap_messages.php @@ -6,7 +6,7 @@ * This implements functions that manipulate messages * NOTE: Quite a few functions in this file are obsolete * - * @copyright © 1999-2006 The SquirrelMail Project Team + * @copyright © 1999-2007 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail @@ -69,16 +69,15 @@ function sqimap_msgs_list_delete($imap_stream, $mailbox, $id, $bypass_trash=fals // FIX ME, remove globals by introducing an associative array with properties // as 4th argument as replacement for the bypass_trash var global $move_to_trash, $trash_folder; - $bRes = true; if (($move_to_trash == true) && ($bypass_trash != true) && (sqimap_mailbox_exists($imap_stream, $trash_folder) && ($mailbox != $trash_folder)) ) { - $bRes = sqimap_msgs_list_copy ($imap_stream, $id, $trash_folder); - } - if ($bRes) { - return sqimap_toggle_flag($imap_stream, $id, '\\Deleted', true, true); - } else { - return false; + /** + * turn off internal error handling (fourth argument = false) and + * ignore copy to trash errors (allows to delete messages when overquota) + */ + sqimap_msgs_list_copy ($imap_stream, $id, $trash_folder, false); } + return sqimap_toggle_flag($imap_stream, $id, '\\Deleted', true, true); } @@ -204,7 +203,7 @@ function parseUidList($aData,$sCommand) { for ($i=0,$iCnt=count($aData);$i<$iCnt;++$i) { for ($j=0,$jCnt=count($aData[$i]);$j<$jCnt;++$j) { if (preg_match("/^\* $sCommand (.+)$/", $aData[$i][$j], $aMatch)) { - $aUid += preg_split("/ /", trim($aMatch[1])); + $aUid += explode(' ', trim($aMatch[1])); } } } @@ -456,33 +455,6 @@ function elapsedTime($start) { return $timepassed; } - -/** - * Normalise the different Priority headers into a uniform value, - * namely that of the X-Priority header (1, 3, 5). Supports: - * Prioirty, X-Priority, Importance. - * X-MS-Mail-Priority is not parsed because it always coincides - * with one of the other headers. - * - * FIXME: DUPLICATE CODE ALERT: - * NOTE: this is actually a duplicate from the function in - * class/mime/Rfc822Header.php. - * @todo obsolate function or use it instead of code block in parseFetch() - */ -function parsePriority($sValue) { - $aValue = split('/\w/',trim($sValue)); - $value = strtolower(array_shift($aValue)); - if ( is_numeric($value) ) { - return $value; - } - if ( $value == 'urgent' || $value == 'high' ) { - return 1; - } elseif ( $value == 'non-urgent' || $value == 'low' ) { - return 5; - } - return 3; -} - /** * Parses a string in an imap response. String starts with " or { which means it * can handle double quoted strings and literal strings @@ -731,8 +703,9 @@ function parseFetch(&$aResponse,$aMessageList = array()) { case 'x-priority': $aMsg['x-priority'] = ($value) ? (int) $value{0} : 3; break; case 'priority': case 'importance': + // duplicate code with Rfc822Header.cls:parsePriority() if (!isset($aMsg['x-priority'])) { - $aPrio = split('/\w/',trim($value)); + $aPrio = preg_split('/\s/',trim($value)); $sPrio = strtolower(array_shift($aPrio)); if (is_numeric($sPrio)) { $iPrio = (int) $sPrio; @@ -913,9 +886,10 @@ function sqimap_parse_address($read, &$i) { * @param resource $imap_stream imap connection * @param integer $id uid of the message * @param string $mailbox used for error handling, can be removed because we should return an error code and generate the message elsewhere - * @return Message Message object + * @param int $hide Indicates whether or not to hide any errors: 0 = don't hide, 1 = hide (just exit), 2 = hide (return FALSE), 3 = hide (return error string) (OPTIONAL; default don't hide) + * @return mixed Message object or FALSE/error string if error occurred and $hide is set to 2/3 */ -function sqimap_get_message($imap_stream, $id, $mailbox) { +function sqimap_get_message($imap_stream, $id, $mailbox, $hide=0) { // typecast to int to prohibit 1:* msgs sets $id = (int) $id; $flags = array(); @@ -923,15 +897,23 @@ function sqimap_get_message($imap_stream, $id, $mailbox) { if ($read) { if (preg_match('/.+FLAGS\s\((.*)\)\s/AUi',$read[0],$regs)) { if (trim($regs[1])) { - $flags = preg_split('/ /', $regs[1],-1,'PREG_SPLIT_NI_EMPTY'); + $flags = preg_split('/ /', $regs[1],-1,PREG_SPLIT_NO_EMPTY); } } } else { + + if ($hide == 1) exit; + if ($hide == 2) return FALSE; + /* the message was not found, maybe the mailbox was modified? */ global $sort, $startMessage, $color; - $errmessage = _("The server couldn't find the message you requested.") . - '

'._("Most probably your message list was out of date and the message has been moved away or deleted (perhaps by another program accessing the same mailbox)."); + $errmessage = _("The server couldn't find the message you requested."); + + if ($hide == 3) return $errmessage; + + $errmessage .= '

'._("Most probably your message list was out of date and the message has been moved away or deleted (perhaps by another program accessing the same mailbox)."); + /* this will include a link back to the message list */ error_message($errmessage, $mailbox, $sort, (int) $startMessage, $color); exit; @@ -944,5 +926,3 @@ function sqimap_get_message($imap_stream, $id, $mailbox) { $msg->rfc822_header = $rfc822_header; return $msg; } - -?>