* won't be changed - the array element for the message
* will just be removed.
*/
-function sqimap_mailbox_expunge_dmn($message_id)
+function sqimap_mailbox_expunge_dmn($message_id, $aMbxResponse, &$server_sort_array)
{
global $msgs, $msort, $sort, $imapConnection,
- $mailbox, $mbx_response, $auto_expunge,
+ $mailbox, $auto_expunge,
$sort, $allow_server_sort, $thread_sort_messages, $allow_thread_sort,
$username, $data_dir;
$cnt = 0;
+ if (!isset($sort) || $sort === false) {
+ sqgetGlobalVar('sort',$sort,SQ_GET);
+ }
// Got to grab this out of prefs, since it isn't saved from mailbox_view.php
if ($allow_thread_sort) {
$thread_sort_messages = getPref($data_dir, $username, "thread_$mailbox",0);
if ($auto_expunge) {
$cnt = sqimap_mailbox_expunge($imapConnection, $mailbox, true);
+ } else {
+ return $cnt;
}
// And after all that mucking around, update the sort list!
// Remind me why the hell we need those two arrays again?!
+
if ( $allow_thread_sort && $thread_sort_messages ) {
$server_sort_array = get_thread_sort($imapConnection);
} elseif ( $allow_server_sort ) {
- $server_sort_array = sqimap_get_sort_order($imapConnection, $sort, $mbx_response);
+ if (is_array($server_sort_array)) {
+ $key = array_search($message_id,$server_sort_array,true);
+ if ($key !== false) {
+ unset($server_sort_array[$key]);
+ $server_sort_array = array_values($server_sort_array);
+ } else {
+ $server_sort_array = sqimap_get_sort_order($imapConnection,$sort,$aMbxResponse);
+ }
+ } else {
+ $server_sort_array = sqimap_get_sort_order($imapConnection,$sort,$aMbxResponse);
+ }
} else {
- $server_sort_array = sqimap_get_php_sort_order($imapConnection, $mbx_response);
+ $server_sort_array = sqimap_get_php_sort_order($imapConnection,
+ $sort,$aMbxResponse);
}
+ sqsession_register($server_sort_array,'server_sort_array');
return $cnt;
}
* Selects a mailbox
*/
function sqimap_mailbox_select ($imap_stream, $mailbox) {
- global $auto_expunge;
-
if ($mailbox == 'None') {
return;
}
$result['RIGHTS']=$regs[1];
}
- if ($auto_expunge) {
- $tmp = sqimap_run_command($imap_stream, 'EXPUNGE', false, $a, $b);
- }
return $result;
}
/**
* Subscribes to an existing folder.
*/
-function sqimap_subscribe ($imap_stream, $mailbox) {
+function sqimap_subscribe ($imap_stream, $mailbox,$debug=true) {
$read_ary = sqimap_run_command($imap_stream, 'SUBSCRIBE ' .
sqimap_encode_mailbox_name($mailbox),
- true, $response, $message);
+ $debug, $response, $message);
}
/**
* Returns sorted mailbox lists in several different ways.
* See comment on sqimap_mailbox_parse() for info about the returned array.
*/
-function sqimap_mailbox_list($imap_stream) {
+
+
+function sqimap_mailbox_list($imap_stream, $force=false) {
global $default_folder_prefix;
- if (!isset($boxesnew)) {
+ if (!sqgetGlobalVar('boxesnew',$boxesnew,SQ_SESSION) || $force) {
global $data_dir, $username, $list_special_folders_first,
$folder_prefix, $trash_folder, $sent_folder, $draft_folder,
$move_to_trash, $move_to_sent, $save_as_draft,
- $delimiter, $noselect_fix_enable;
-
+ $delimiter, $noselect_fix_enable, $imap_server_type;
$inbox_in_list = false;
$inbox_subscribed = false;
+ $listsubscribed = sqimap_capability($imap_stream,'LIST-SUBSCRIBED');
require_once(SM_PATH . 'include/load_prefs.php');
+
+ if ($listsubscribed) {
+ $lsub = 'LIST (SUBSCRIBED)';
+ } else {
+ $lsub = 'LSUB';
+ }
+
if ($noselect_fix_enable) {
- $lsub_args = "LSUB \"$folder_prefix\" \"*%\"";
+
+ $lsub_args = "$lsub \"$folder_prefix\" \"*%\"";
} else {
- $lsub_args = "LSUB \"$folder_prefix\" \"*\"";
+ $lsub_args = "$lsub \"$folder_prefix\" \"*\"";
}
/* LSUB array */
$lsub_ary = sqimap_run_command ($imap_stream, $lsub_args,
true, $response, $message);
- $lsub_ary = compact_mailboxes_response($lsub_ary);
+ $lsub_ary = compact_mailboxes_response($lsub_ary);
$sorted_lsub_ary = array();
for ($i = 0, $cnt = count($lsub_ary);$i < $cnt; $i++) {
+
$temp_mailbox_name = find_mailbox_name($lsub_ary[$i]);
$sorted_lsub_ary[] = $temp_mailbox_name;
if (!$inbox_subscribed && strtoupper($temp_mailbox_name) == 'INBOX') {
* call to retrieve the flags for the mailbox
* Note: according RFC2060 an imap server may provide \NoSelect flags in the LSUB response.
* in other words, we cannot rely on it.
- */
+ */
$sorted_list_ary = array();
- for ($i=0; $i < count($sorted_lsub_ary); $i++) {
+ // if (!$listsubscribed) {
+ for ($i=0; $i < count($sorted_lsub_ary); $i++) {
if (substr($sorted_lsub_ary[$i], -1) == $delimiter) {
$mbx = substr($sorted_lsub_ary[$i], 0, strlen($sorted_lsub_ary[$i])-1);
}
else {
$mbx = $sorted_lsub_ary[$i];
}
- $mbx = stripslashes($mbx);
+
$read = sqimap_run_command ($imap_stream, 'LIST "" ' . sqimap_encode_mailbox_name($mbx),
true, $response, $message);
+
$read = compact_mailboxes_response($read);
+
if (isset($read[0])) {
$sorted_list_ary[$i] = $read[0];
} else {
$sorted_list_ary[$i] = '';
}
- }
+ }
+ // }
/*
* Just in case they're not subscribed to their inbox,
* we'll get it for them anyway
*/
if (!$inbox_subscribed) {
- $inbox_ary = sqimap_run_command ($imap_stream, 'LIST "" INBOX',
+ $inbox_ary = sqimap_run_command ($imap_stream, 'LIST "" "INBOX"',
true, $response, $message);
- $sorted_list_ary[] = implode('', compact_mailboxes_response($inbox_ary));
+ $sorted_list_ary[] = implode('',compact_mailboxes_response($inbox_ary));
$sorted_lsub_ary[] = find_mailbox_name($inbox_ary[0]);
}
}
}
}
-
- /* Rest of the folders */
+ /* Rest of the folders */
for($k = 0; $k < $cnt; $k++) {
if (!$used[$k]) {
$boxesnew[] = $boxesall[$k];
}
}
+ sqsession_register($boxesnew,'boxesnew');
}
-
return $boxesnew;
}
function sqimap_mailbox_tree($imap_stream) {
global $boxesnew, $default_folder_prefix, $unseen_notify, $unseen_type;
- if (!isset($boxesnew)) {
+ if (true) {
global $data_dir, $username, $list_special_folders_first,
$folder_prefix, $delimiter, $trash_folder, $move_to_trash,