5 * Displays messagelist column order options
7 * @copyright 1999-2011 The SquirrelMail Project Team
8 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
10 * @package squirrelmail
14 /** This is the options_order page */
15 define('PAGE_NAME', 'options_order');
18 * Include the SquirrelMail initialization file.
20 require('../include/init.php');
22 /* SquirrelMail required files. */
23 require_once(SM_PATH
. 'functions/forms.php');
26 if (sqgetGlobalVar('num', $num, SQ_GET
)) {
31 if (!sqgetGlobalVar('method', $method)) {
34 $method = htmlspecialchars($method);
36 if (!sqgetGlobalVar('positions', $pos, SQ_GET
)) {
42 if (!sqgetGlobalVar('account', $account, SQ_GET
)) {
45 $iAccount = (int) $account;
48 if (sqgetGlobalVar('mailbox', $mailbox, SQ_GET
)) {
49 $aMailboxPrefs = unserialize(getPref($data_dir, $username, "pref_".$iAccount.'_'.$mailbox));
50 if (isset($aMailboxPrefs[MBX_PREF_COLUMNS
])) {
51 $index_order = $aMailboxPrefs[MBX_PREF_COLUMNS
];
54 $index_order_ser = getPref($data_dir, $username, 'index_order');
55 if ($index_order_ser) {
56 $index_order=unserialize($index_order_ser);
59 if (!isset($index_order)) {
60 if (isset($internal_date_sort) && $internal_date_sort == false) {
61 $index_order = array(SQM_COL_CHECK
,SQM_COL_FROM
,SQM_COL_DATE
,SQM_COL_FLAGS
,SQM_COL_ATTACHMENT
,SQM_COL_PRIO
,SQM_COL_SUBJ
);
63 $index_order = array(SQM_COL_CHECK
,SQM_COL_FROM
,SQM_COL_INT_DATE
,SQM_COL_FLAGS
,SQM_COL_ATTACHMENT
,SQM_COL_PRIO
,SQM_COL_SUBJ
);
67 if (!sqgetGlobalVar('account', $account, SQ_GET
)) {
68 $account = 0; // future work, multiple imap accounts
70 $account = (int) $account;
73 /* end of get globals */
75 /***************************************************************/
76 /* Finally, display whatever page we are supposed to show now. */
77 /***************************************************************/
79 displayPageHeader($color, null, (isset($optpage_data['xtra']) ?
$optpage_data['xtra'] : ''));
83 * Change the column order of a mailbox
85 * @param array $index_order (reference) contains an ordered list with columns
86 * @param string $method action to take, move, add and remove are supported
87 * @param int $num target column
88 * @param int $pos positions to move a column in the index_order array
89 * @return bool $r A change in the ordered list took place.
91 function change_columns_list(&$index_order,$method,$num,$pos=0) {
94 case 'move': $r = sqm_array_move_value($index_order,$num,$pos); break;
96 $index_order[] = (int) $num;
99 * flush the cache in order to retrieve the new columns
101 sqsession_unregister('mailbox_cache');
104 if(in_array($num, $index_order)) {
105 unset($index_order[array_search($num, $index_order)]);
106 $index_order = array_values($index_order);
116 * Column to string translation array
118 $available[SQM_COL_CHECK
] = _("Checkbox");
119 $available[SQM_COL_FROM
] = _("From");
120 $available[SQM_COL_DATE
] = _("Date");
121 $available[SQM_COL_SUBJ
] = _("Subject");
122 $available[SQM_COL_FLAGS
] = _("Flags");
123 $available[SQM_COL_SIZE
] = _("Size");
124 $available[SQM_COL_PRIO
] = _("Priority");
125 $available[SQM_COL_ATTACHMENT
] = _("Attachments");
126 $available[SQM_COL_INT_DATE
] = _("Received");
127 $available[SQM_COL_TO
] = _("To");
128 $available[SQM_COL_CC
] = _("Cc");
129 $available[SQM_COL_BCC
] = _("Bcc");
131 if (change_columns_list($index_order,$method,$num,$pos)) {
133 // TODO, bound index_order to mailbox and make a difference between the global index_order and mailbox bounded index_order
134 setPref($data_dir, $username, 'index_order', serialize($index_order));
140 if (count($index_order) != count($available)) {
141 for ($i=0; $i < count($available); $i++
) {
142 if (!in_array($i,$index_order)) {
143 $opts[$i] = $available[$i];
148 // FIXME: why are we using this? $PHP_SELF is already a global var processed (and therefore trustworthy) by init.php
149 sqgetGlobalVar('PHP_SELF', $PHP_SELF, SQ_SERVER
);
150 $x = isset($mailbox) && $mailbox ?
'&mailbox='.urlencode($mailbox) : '';
152 $oTemplate->assign('fields', $available);
153 $oTemplate->assign('current_order', $index_order);
154 $oTemplate->assign('not_used', $opts);
155 $oTemplate->assign('always_show', array(SQM_COL_SUBJ
, SQM_COL_FLAGS
));
157 // FIXME: (related to the above) $PHP_SELF might already have a query string... don't assume otherwise here by adding the ? sign!!
158 $oTemplate->assign('move_up', $PHP_SELF .'?method=move&positions=-1'. $x .'&num=');
159 $oTemplate->assign('move_down', $PHP_SELF .'?method=move&positions=1'. $x .'&num=');
160 $oTemplate->assign('remove', $PHP_SELF .'?method=remove'. $x .'&num=');
161 $oTemplate->assign('add', $PHP_SELF.'?method=add'.$x.'&num=');
162 $oTemplate->assign('addField_action', $PHP_SELF);
164 $oTemplate->display('options_order.tpl');
166 $oTemplate->display('footer.tpl');