X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fimap_mailbox.php;h=eeb5c7d407dd17f2b14e3a580399e56144f499b1;hb=de3178dc1a5117827e254544c6f164dba653ad83;hp=df3692044b27eec2df832502402534d2c0bbe124;hpb=d56050e17bf919a100069eee0a454083bb9b0a05;p=squirrelmail.git diff --git a/functions/imap_mailbox.php b/functions/imap_mailbox.php index df369204..eeb5c7d4 100755 --- a/functions/imap_mailbox.php +++ b/functions/imap_mailbox.php @@ -5,7 +5,7 @@ * * This implements all functions that manipulate mailboxes * - * @copyright © 1999-2007 The SquirrelMail Project Team + * @copyright © 1999-2009 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail @@ -110,8 +110,7 @@ function compact_mailboxes_response($ary) { */ for ($i = 0, $iCnt=count($ary); $i < $iCnt; $i++) { if (isset($ary[$i + 1]) && substr($ary[$i], -3) == "}\r\n") { - if (ereg("^(\\* [A-Z]+.*)\\{[0-9]+\\}([ \n\r\t]*)$", - $ary[$i], $regs)) { + if (preg_match('/^(\* [A-Z]+.*)\{[0-9]+\}([ \n\r\t]*)$/', $ary[$i], $regs)) { $ary[$i] = $regs[1] . '"' . addslashes(trim($ary[$i+1])) . '"' . $regs[2]; array_splice($ary, $i+1, 2); } @@ -283,6 +282,34 @@ function isDraftMailbox($box,$include_subs=true) { ($include_subs && isBoxBelow($box, $draft_folder)) ); } +/** + * Is the given folder "sent-like" in nature? + * + * The most obvious use of this is to know what folders you usually + * want to show the To field instead of the From field on the mailbox list + * + * This function returns TRUE if the given folder is the sent + * folder (or any of its subfolders) or if it is the draft + * folder (or any of its subfolders) + * + * @param string $mailbox + * + * @return boolean See explanation above + * + */ +function handleAsSent($mailbox) { + global $handleAsSent_result; + + /* First check if this is the sent or draft folder. */ + $handleAsSent_result = isSentMailbox($mailbox) || isDraftMailbox($mailbox); + + /* Then check the result of the handleAsSent hook. */ + do_hook('check_handleAsSent_result', $mailbox); + + /* And return the result. */ + return $handleAsSent_result; +} + /** * Expunges a mailbox * @@ -485,7 +512,8 @@ function sqimap_mailbox_delete ($imap_stream, $mailbox) { // subscribe again sqimap_subscribe ($imap_stream, $mailbox); } else { - do_hook('rename_or_delete_folder', $temp=array(&$mailbox, 'delete', '')); + $temp = array(&$mailbox, 'delete', ''); + do_hook('rename_or_delete_folder', $temp); removePref($data_dir, $username, "thread_$mailbox"); removePref($data_dir, $username, "collapse_folder_$mailbox"); } @@ -540,7 +568,8 @@ function sqimap_mailbox_rename( $imap_stream, $old_name, $new_name ) { sqimap_subscribe($imap_stream, $new_name.$postfix); setPref($data_dir, $username, 'thread_'.$new_name.$postfix, $oldpref_thread); setPref($data_dir, $username, 'collapse_folder_'.$new_name.$postfix, $oldpref_collapse); - do_hook('rename_or_delete_folder', $temp=array(&$old_name, 'rename', &$new_name)); + $temp = array(&$old_name, 'rename', &$new_name); + do_hook('rename_or_delete_folder', $temp); $l = strlen( $old_name ) + 1; $p = 'unformatted'; @@ -566,7 +595,8 @@ function sqimap_mailbox_rename( $imap_stream, $old_name, $new_name ) { } setPref($data_dir, $username, 'thread_'.$new_sub, $oldpref_thread); setPref($data_dir, $username, 'collapse_folder_'.$new_sub, $oldpref_collapse); - do_hook('rename_or_delete_folder', $temp=array(&$box[$p], 'rename', &$new_sub)); + $temp = array(&$box[$p], 'rename', &$new_sub); + do_hook('rename_or_delete_folder', $temp); } } } @@ -645,8 +675,7 @@ function sqimap_mailbox_parse ($line) { $boxesall[$g]['id'] = $g; $boxesall[$g]['flags'] = array(); - if (isset($line[$g])) { - ereg("\(([^)]*)\)",$line[$g],$regs); + if (isset($line[$g]) && preg_match('/\(([^)]*)\)/',$line[$g],$regs) ) { /** * Since 1.5.1 flags are stored with RFC3501 naming * and also the old way for backwards compatibility