*/
function sqimap_get_sort_order ($imap_stream, $sort) {
- global $default_charset, $thread_sort_messages, $internal_date_sort;
+ global $default_charset, $thread_sort_messages, $internal_date_sort, $server_sort_array;
+ if (session_is_registered('server_sort_array')) {
+ session_unregister('server_sort_array');
+ }
$sid = sqimap_session_id();
$sort_on = array();
$reverse = 0;
if ($sort == 0 || $sort == 2 || $sort == 4) {
$server_sort_array = array_reverse($server_sort_array);
}
+ session_register('server_sort_array');
return $server_sort_array;
}
*/
function get_thread_sort ($imap_stream) {
- global $thread_new, $sort_by_ref, $default_charset;
+ global $thread_new, $sort_by_ref, $default_charset, $server_sort_array;
- if (session_register('thread_new')) {
+ if (session_is_registered('thread_new')) {
session_unregister('thread_new');
}
+ if (session_is_registered('server_sort_array')) {
+ session_unregister('server_srot_array');
+ }
$sid = sqimap_session_id();
$thread_temp = array ();
if ($sort_by_ref == 1) {
$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');
return $thread_list;
}
*/
function findNextMessage() {
global $msort, $currentArrayIndex, $msgs, $sort,
- $thread_sort_messages, $allow_server_sort;
+ $thread_sort_messages, $allow_server_sort,
+ $server_sort_array;
$result = -1;
- if ($thread_sort_messages == 1) {
- $sort = 0;
+ if ($thread_sort_messages == 1 || $allow_server_sort == true) {
+ reset($server_sort_array);
+ while(list($key, $value) = each ($server_sort_array)) {
+ if ($currentArrayIndex == $value) {
+ if ($key == (count($server_sort_array) -1)) {
+ $result = -1;
+ break;
+ }
+ $result = $server_sort_array[$key +1];
+ break;
+ }
+ }
}
- if ($sort == 6 && $allow_server_sort != TRUE) {
+
+ elseif ($sort == 6 && $allow_server_sort != true && $thread_sort_messages != 1) {
if ($currentArrayIndex != 1) {
$result = $currentArrayIndex - 1;
}
- } else {
+ }
+ elseif ($allow_server_sort != true && $thread_sort_messages != 1) {
if (!is_array($msort)) {
return -1;
}
function findPreviousMessage() {
global $msort, $currentArrayIndex, $sort, $msgs, $imapConnection,
$mailbox, $data_dir, $username, $thread_sort_messages,
- $allow_server_sort;
- if ($thread_sort_messages == 1) {
- $sort = 0;
- }
-
+ $allow_server_sort, $server_sort_array;
$result = -1;
-
- if ($sort == 6 && $allow_server_sort != TRUE) {
+ if ($thread_sort_messages == 1 || $allow_server_sort == TRUE) {
+ reset($server_sort_array);
+ while(list($key, $value) = each ($server_sort_array)) {
+ if ($currentArrayIndex == $value) {
+ if ($key == 0) {
+ $result = -1;
+ break;
+ }
+ $result = $server_sort_array[$key -1];
+ break;
+ }
+ }
+ }
+ elseif ($sort == 6 && $allow_server_sort != TRUE && $thread_sort_messages != 1) {
$numMessages = sqimap_get_num_messages($imapConnection, $mailbox);
if ($currentArrayIndex != $numMessages) {
$result = $currentArrayIndex + 1;
}
- } else {
- if (!is_array($msort)) {
+ }
+ elseif ($thread_sort_messages != 1 && $allow_server_sort != TRUE) {
+ if (!is_array($msort)) {
return -1;
- }
+ }
for (reset($msort); ($key = key($msort)), (isset($key)); next($msort)) {
if ($currentArrayIndex == $msgs[$key]['ID']) {
prev($msort);
'<SMALL>';
if ( !($where && $what) ) {
-
if ($currentArrayIndex == -1) {
echo 'Previous | Next';
} else {