-if (isset($newsort) ) {
- if ( $newsort != $sort ) {
- setPref($data_dir, $username, 'sort', $newsort);
- }
- $oldsort = $sort;
- $sort = $newsort;
- sqsession_register($sort, 'sort');
-}
-
-do_hook ('generic_header');
-
-$aMbxResponse = sqimap_mailbox_select($imapConnection, $mailbox);
-$aMbxResponse['SORT_ARRAY'] = false;
-
-sqgetGlobalVar('aLastSelectedMailbox',$aLastSelectedMailbox,SQ_SESSION);
-
-// deal with imap servers that do not return the required UIDNEXT or
-// UIDVALIDITY response
-// from a SELECT call (since rfc 3501 it's required)
-if (!isset($aMbxResponse['UIDNEXT']) || !isset($aMbxResponse['UIDVALIDITY'])) {
- $aStatus = sqimap_status_messages($imapConnection,$mailbox,
- array('UIDNEXT','UIDVALIDITY'));
- $aMbxResponse['UIDNEXT'] = $aStatus['UIDNEXT'];
- $aMbxResponse['UIDVALIDTY'] = $aStatus['UIDVALIDITY'];
-}
-
-if ($aLastSelectedMailbox) {
- // check if we deal with the same mailbox
- if ($aLastSelectedMailbox['NAME'] == $mailbox) {
- if ($aLastSelectedMailbox['EXISTS'] == $aMbxResponse['EXISTS'] &&
- $aLastSelectedMailbox['UIDVALIDITY'] == $aMbxResponse['UIDVALIDITY'] &&
- $aLastSelectedMailbox['UIDNEXT'] == $aMbxResponse['UIDNEXT']) {
- sqgetGlobalVar('server_sort_array',$server_sort_array,SQ_SESSION);
- if ($server_sort_array && is_array($server_sort_array)) {
- $aMbxResponse['SORT_ARRAY'] = $server_sort_array;
- // check if oldsort can be used in case we changed the sort order of the same column
- if (isset($newsort) ) {
- if ((($newsort % 2) && ($newsort + 1 == $oldsort)) ||
- (!($newsort % 2) && ($newsort - 1 == $oldsort))) {
- $server_sort_array = array_reverse($server_sort_array);
- } else {
- $server_sort_array = false;
- }
- }
- $aMbxResponse['SORT_ARRAY'] = $server_sort_array;
- }
- }
+
+
+/**
+ * Set the config options for the messages list
+ */
+$aColumns = array(); // contains settings per column. Switch to key -> value based array, order is the order of the array keys
+foreach ($aMailboxPref[MBX_PREF_COLUMNS] as $iCol) {
+ $aColumns[$iCol] = array();
+ switch ($iCol) {
+ case SQM_COL_SUBJ:
+ if ($truncate_subject) {
+ $aColumns[$iCol]['truncate'] = $truncate_subject;
+ }
+ break;
+ case SQM_COL_FROM:
+ case SQM_COL_TO:
+ case SQM_COL_CC:
+ case SQM_COL_BCC:
+ if ($truncate_sender) {
+ $aColumns[$iCol]['truncate'] = $truncate_sender;
+ }
+ break;
+ }
+}
+
+/**
+ * Properties required by showMessagesForMailbox
+ */
+$aProps = array(
+ 'columns' => $aColumns, // columns bound settings
+ 'config' => array('alt_index_colors' => $alt_index_colors, // alternating row colors (should be a template thing)
+ 'highlight_list' => $message_highlight_list, // row highlighting rules
+ 'fancy_index_highlite' => $fancy_index_highlite, // highlight rows on hover or on click -> check
+ 'show_flag_buttons' => (isset($show_flag_buttons)) ? $show_flag_buttons : true,
+ 'lastTargetMailbox' => (isset($lastTargetMailbox)) ? $lastTargetMailbox : '', // last mailbox where messages are moved/copied to
+ 'trash_folder' => $trash_folder,
+ 'sent_folder' => $sent_folder,
+ 'draft_folder' => $draft_folder,
+ 'color' => $color,
+ 'enablesort' => true // enable sorting on columns
+ ),
+ 'mailbox' => $mailbox,
+ 'account' => (isset($account)) ? $account : 0, // future usage if we support multiple imap accounts
+ 'module' => 'read_body',
+ 'email' => false);
+
+
+/**
+ * system wide admin settings and incoming vars.
+ */
+$aConfig = array(
+ 'user' => $username,
+ // incoming vars
+ 'offset' => $startMessage // offset in paginator
+ );
+/**
+ * The showall functionality is for the moment added to the config array
+ * to avoid storage of the showall link in the mailbox pref. We could change
+ * this behaviour later and add it to $aMailboxPref instead
+ */
+if (isset($showall)) {
+ $aConfig['showall'] = $showall; // show all messages in a mailbox (paginator is disabled)
+} else {
+ $showall = false;
+}
+
+
+/**
+ * Retrieve the mailbox cache from the session.
+ */
+sqgetGlobalVar('mailbox_cache',$mailbox_cache,SQ_SESSION);
+
+/**
+ * Select the mailbox and retrieve the cached info.
+ */
+$aMailbox = sqm_api_mailbox_select($imapConnection,$account, $mailbox,$aConfig,$aMailboxPref);
+
+/**
+ * MOVE THIS to a central init section !!!!
+ */
+if (!sqgetGlobalVar('align',$align,SQ_SESSION)) {
+ $dir = ( isset( $languages[$squirrelmail_language]['DIR']) ) ? $languages[$squirrelmail_language]['DIR'] : 'ltr';
+ if ( $dir == 'ltr' ) {
+ $align = array('left' => 'left', 'right' => 'right');
+ } else {
+ $align = array('left' => 'right', 'right' => 'left');