X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Foptions_order.php;h=b643a0ca8fee6be18d476ce4e54b53767a98725b;hb=be13be85fc4f4b22980125eb28ddfde0190e0622;hp=629e83a822692f015350bf0e280b09d869a774d8;hpb=545238b1fa274274c9202937c6e82c6432efc45d;p=squirrelmail.git
diff --git a/src/options_order.php b/src/options_order.php
index 629e83a8..b643a0ca 100644
--- a/src/options_order.php
+++ b/src/options_order.php
@@ -1,144 +1,162 @@
' .
- html_tag( 'table', '', 'center', '', 'width="95%" border="0" cellpadding="2" cellspacing="0"' ) .
- html_tag( 'tr' ) .
- html_tag( 'td', '', 'center', $color[0] ) .
- '' . _("Options") . ' - ' . _("Index Order") . '' .
- html_tag( 'table', '', '', '', 'width="100%" border="0" cellpadding="1" cellspacing="1"' ) .
- html_tag( 'tr' ) .
- html_tag( 'td', '', 'center', $color[4] );
-
- $available[1] = _("Checkbox");
- $available[2] = _("From");
- $available[3] = _("Date");
- $available[4] = _("Subject");
- $available[5] = _("Flags");
- $available[6] = _("Size");
-
- if (! isset($method)) { $method = ''; }
-
- if ($method == 'up' && $num > 1) {
- $prev = $num-1;
- $tmp = $index_order[$prev];
- $index_order[$prev] = $index_order[$num];
- $index_order[$num] = $tmp;
- } else if ($method == 'down' && $num < count($index_order)) {
- $next = $num++;
- $tmp = $index_order[$next];
- $index_order[$next] = $index_order[$num];
- $index_order[$num] = $tmp;
- } else if ($method == 'remove' && $num) {
- for ($i=1; $i < 8; $i++) {
- removePref($data_dir, $username, "order$i");
- }
- for ($j=1,$i=1; $i <= count($index_order); $i++) {
- if ($i != $num) {
- $new_ary[$j] = $index_order[$i];
- $j++;
- }
- }
- $index_order = array();
- $index_order = $new_ary;
- if (count($index_order) < 1) {
- include_once('../src/load_prefs.php');
- }
- } else if ($method == 'add' && $add) {
- /* User should not be able to insert PHP-code here */
- $add = str_replace ('', '..', $add);
- $add = ereg_replace ('<.*script.*language.*php.*>', '..', $add);
- $add = str_replace ('<%', '..', $add);
- $index_order[count($index_order)+1] = $add;
+/**
+ * Include the SquirrelMail initialization file.
+ */
+require('../include/init.php');
+
+/* SquirrelMail required files. */
+require_once(SM_PATH . 'functions/forms.php');
+
+/* get globals */
+if (sqgetGlobalVar('num', $num, SQ_GET)) {
+ $num = (int) $num;
+} else {
+ $num = false;
+}
+if (!sqgetGlobalVar('method', $method)) {
+ $method = '';
+} else {
+ $method = htmlspecialchars($method);
+}
+if (!sqgetGlobalVar('positions', $pos, SQ_GET)) {
+ $pos = 0;
+} else {
+ $pos = (int) $pos;
+}
+
+if (!sqgetGlobalVar('account', $account, SQ_GET)) {
+ $iAccount = 0;
+} else {
+ $iAccount = (int) $account;
+}
+
+if (sqgetGlobalVar('mailbox', $mailbox, SQ_GET)) {
+ $aMailboxPrefs = unserialize(getPref($data_dir, $username, "pref_".$iAccount.'_'.urldecode($mailbox)));
+ if (isset($aMailboxPrefs[MBX_PREF_COLUMNS])) {
+ $index_order = $aMailboxPrefs[MBX_PREF_COLUMNS];
+ }
+} else {
+ $index_order_ser = getPref($data_dir, $username, 'index_order');
+ if ($index_order_ser) {
+ $index_order=unserialize($index_order_ser);
}
-
- if ($method) {
- for ($i=1; $i <= count($index_order); $i++) {
- setPref($data_dir, $username, "order$i", $index_order[$i]);
- }
+}
+if (!isset($index_order)) {
+ if (isset($internal_date_sort) && $internal_date_sort == false) {
+ $index_order = array(SQM_COL_CHECK,SQM_COL_FROM,SQM_COL_DATE,SQM_COL_FLAGS,SQM_COL_ATTACHMENT,SQM_COL_PRIO,SQM_COL_SUBJ);
+ } else {
+ $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);
}
- echo html_tag( 'table',
- html_tag( 'tr',
- html_tag( 'td',
- _("The index order is the order that the columns are arranged in the message index. You can add, remove, and move columns around to customize them to fit your needs.")
- )
- ) ,
- '', '', '', 'width="65%" border="0" cellpadding="0" cellspacing="0"' ) . "
\n";
-
- if (count($index_order))
- {
- echo html_tag( 'table', '', '', '', ' cellspacing="0" cellpadding="0" border="0"' ) . "\n";
- for ($i=1; $i <= count($index_order); $i++) {
- $tmp = $index_order[$i];
- echo html_tag( 'tr' );
- echo html_tag( 'td', ''. _("up") .'' );
- echo html_tag( 'td', ' | ' );
- echo html_tag( 'td', ''. _("down") .'' );
- echo html_tag( 'td', ' | ' );
- echo html_tag( 'td' );
- /* Always show the subject */
- if ($tmp != 4)
- echo '' . _("remove") . '';
- else
- echo ' ';
- echo '';
- echo html_tag( 'td', ' - ' );
- echo html_tag( 'td', $available[$tmp] );
- echo '' . "\n";
+}
+
+if (!sqgetGlobalVar('account', $account, SQ_GET)) {
+ $account = 0; // future work, multiple imap accounts
+} else {
+ $account = (int) $account;
+}
+
+/* end of get globals */
+
+/***************************************************************/
+/* Finally, display whatever page we are supposed to show now. */
+/***************************************************************/
+
+displayPageHeader($color, 'None', (isset($optpage_data['xtra']) ? $optpage_data['xtra'] : ''));
+
+
+/**
+ * Change the column order of a mailbox
+ *
+ * @param array $index_order (reference) contains an ordered list with columns
+ * @param string $method action to take, move, add and remove are supported
+ * @param int $num target column
+ * @param int $pos positions to move a column in the index_order array
+ * @return bool $r A change in the ordered list took place.
+ */
+function change_columns_list(&$index_order,$method,$num,$pos=0) {
+ $r = false;
+ switch ($method) {
+ case 'move': $r = sqm_array_move_value($index_order,$num,$pos); break;
+ case 'add':
+ $index_order[] = (int) $num;
+ $r = true;
+ /**
+ * flush the cache in order to retrieve the new columns
+ */
+ sqsession_unregister('mailbox_cache');
+ break;
+ case 'remove':
+ if(in_array($num, $index_order)) {
+ unset($index_order[array_search($num, $index_order)]);
+ $index_order = array_values($index_order);
+ $r = true;
}
- echo '' . "\n";
+ break;
+ default: break;
}
-
- if (count($index_order) != count($available)) {
- echo '