X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fmailbox_display.php;h=799e815ade382cf7055702c268fd67e417646761;hp=46f5f6cfd3a8c66e732de5c97ab1db945493a28c;hb=e17d0c83d7c34a35e75192461e27850a1b8e102c;hpb=311339a06ba650d5491b5fda98d1eca20827d4d2
diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php
index 46f5f6cf..6a1fac40 100644
--- a/functions/mailbox_display.php
+++ b/functions/mailbox_display.php
@@ -3,7 +3,7 @@
/**
* mailbox_display.php
*
- * Copyright (c) 1999-2001 The SquirrelMail Development Team
+ * Copyright (c) 1999-2003 The SquirrelMail Project Team
* Licensed under the GNU GPL. For full terms see the file COPYING.
*
* This contains functions that display mailbox information, such as the
@@ -12,43 +12,94 @@
* $Id$
*/
-define('PG_SEL_MAX', 10); /* Default value for page_selector_max. */
-
-function printMessageInfo($imapConnection, $t, $i, $key, $mailbox, $sort, $start_msg, $where, $what) {
- global $checkall;
- global $color, $msgs, $msort;
- global $sent_folder, $draft_folder;
- global $default_use_priority;
- global $message_highlight_list;
- global $index_order;
+require_once(SM_PATH . 'functions/strings.php');
+require_once(SM_PATH . 'functions/html.php');
+require_once(SM_PATH . 'class/html.class.php');
+require_once(SM_PATH . 'functions/imap_mailbox.php');
+
+/* Default value for page_selector_max. */
+define('PG_SEL_MAX', 10);
+
+function elapsed($start)
+{
+ $end = microtime();
+ list($start2, $start1) = explode(" ", $start);
+ list($end2, $end1) = explode(" ", $end);
+ $diff1 = $end1 - $start1;
+ $diff2 = $end2 - $start2;
+ if( $diff2 < 0 ){
+ $diff1 -= 1;
+ $diff2 += 1.0;
+ }
+ return $diff2 + $diff1;
+}
+function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
+ $start_msg, $where, $what) {
+ global $checkall,
+ $color, $msgs, $msort, $td_str, $msg,
+ $default_use_priority,
+ $message_highlight_list,
+ $index_order,
+ $indent_array, /* indent subject by */
+ $pos, /* Search postion (if any) */
+ $thread_sort_messages, /* thread sorting on/off */
+ $server_sort_order, /* sort value when using server-sorting */
+ $row_count,
+ $allow_server_sort; /* enable/disable server-side sorting */
$color_string = $color[4];
+
if ($GLOBALS['alt_index_colors']) {
- if (!isset($GLOBALS["row_count"])) {
- $GLOBALS["row_count"] = 0;
+ if (!isset($row_count)) {
+ $row_count = 0;
}
- $GLOBALS["row_count"]++;
- if ($GLOBALS["row_count"] % 2) {
- if (!isset($color[12])) $color[12] = '#EAEAEA';
+ $row_count++;
+ if ($row_count % 2) {
+ if (!isset($color[12])) {
+ $color[12] = '#EAEAEA';
+ }
$color_string = $color[12];
}
}
$msg = $msgs[$key];
- $senderName = htmlspecialchars(sqimap_find_displayable_name($msg['FROM']));
- if( $mailbox == 'None' ) {
- // $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
- $boxes = sqimap_mailbox_list($imapConnection);
- // sqimap_logout($imapConnection);
+ if($mailbox == 'None') {
+ $boxes = sqimap_mailbox_list($imapConnection);
$mailbox = $boxes[0]['unformatted'];
- unset( $boxes );
+ unset($boxes);
}
$urlMailbox = urlencode($mailbox);
- $subject = processSubject($msg['SUBJECT']);
- echo "
".
- "';
+
+ echo ' | ';
+ echo html_tag( 'table',
+ html_tag( 'tr',
+ html_tag( 'td',
+ html_tag( 'table',
+ html_tag( 'tr',
+ html_tag( 'td', $paginator_str ) .
+ html_tag( 'td', $msg_cnt_str, 'right' )
+ )
+ , '', $color[4], 'width="100%" border="0" cellpadding="1" cellspacing="0"' )
+ )
+ )
+ , '', $color[9], 'width="100%" border="0" cellpadding="1" cellspacing="0"' );
+ echo ' | ';
+ }
+ /* End of message-list table */
+
+ do_hook('mailbox_index_after');
+ echo "\n";
+}
+
+function printHeader($mailbox, $sort, $color, $showsort=true) {
+ global $index_order;
+ echo html_tag( 'tr' ,'' , 'center', $color[5] );
+
+ /* calculate the width of the subject column based on the
+ * widths of the other columns */
+ $widths = array(1=>1,2=>25,3=>5,4=>0,5=>1,6=>5);
+ $subjectwidth = 100;
+ foreach($index_order as $item) {
+ $subjectwidth -= $widths[$item];
}
- echo " BGCOLOR=\"$color[0]\">".
- "";
- /* Print the headers. */
- for ($i=1; $i <= count($index_order); $i++) {
- switch ($index_order[$i]) {
+ foreach ($index_order as $item) {
+ switch ($item) {
case 1: /* checkbox */
case 5: /* flags */
- echo ' | ';
+ echo html_tag( 'td' ,' ' , '', '', 'width="1%"' );
break;
-
case 2: /* from */
- if (($mailbox == $sent_folder)
- || ($mailbox == $draft_folder)) {
- echo ' '. _("To") .'';
+ if (handleAsSent($mailbox)) {
+ echo html_tag( 'td' ,'' , 'left', '', 'width="25%"' )
+ . '' . _("To") . '';
} else {
- echo ' | '. _("From") .'';
+ echo html_tag( 'td' ,'' , 'left', '', 'width="25%"' )
+ . '' . _("From") . '';
}
-
- ShowSortButton($sort, $mailbox, 2, 3);
- echo " | \n";
+ if ($showsort) {
+ ShowSortButton($sort, $mailbox, 2, 3);
+ }
+ echo "\n";
break;
-
case 3: /* date */
- echo ' '. _("Date") .'';
- ShowSortButton($sort, $mailbox, 0, 1);
- echo " | \n";
+ echo html_tag( 'td' ,'' , 'left', '', 'width="5%" nowrap' )
+ . '' . _("Date") . '';
+ if ($showsort) {
+ ShowSortButton($sort, $mailbox, 0, 1);
+ }
+ echo "\n";
break;
-
case 4: /* subject */
- echo ' '. _("Subject") .' ';
- ShowSortButton($sort, $mailbox, 4, 5);
- echo " | \n";
+ echo html_tag( 'td' ,'' , 'left', '', 'width="'.$subjectwidth.'%"' )
+ . '' . _("Subject") . '';
+ if ($showsort) {
+ ShowSortButton($sort, $mailbox, 4, 5);
+ }
+ echo "\n";
break;
-
case 6: /* size */
- echo ' ' . _("Size")." | \n";
+ echo html_tag( 'td', '' . _("Size") . '', 'center', '', 'width="5%" nowrap' );
break;
}
}
- echo " \n";
+ echo "\n";
}
+
/*
* This function shows the sort button. Isn't this a good comment?
*/
-function ShowSortButton($sort, $mailbox, $Up, $Down) {
+function ShowSortButton($sort, $mailbox, $Up, $Down ) {
+ global $PHP_SELF;
/* Figure out which image we want to use. */
if ($sort != $Up && $sort != $Down) {
$img = 'sort_none.png';
@@ -591,32 +862,46 @@ function ShowSortButton($sort, $mailbox, $Up, $Down) {
$which = 6;
}
+ if (preg_match('/^(.+)\?.+$/',$PHP_SELF,$regs)) {
+ $source_url = $regs[1];
+ } else {
+ $source_url = $PHP_SELF;
+ }
+
/* Now that we have everything figured out, show the actual button. */
- echo ' ';
+ echo ' ';
}
function get_selectall_link($start_msg, $sort) {
- global $checkall, $PHP_SELF, $what, $where, $mailbox, $javascript_on;
+ global $checkall, $what, $where, $mailbox, $javascript_on;
+ global $PHP_SELF, $PG_SHOWNUM;
+ $result = '';
if ($javascript_on) {
- $result =
- '' . _("Toggle All") . "\n";
+ $result = '' . _("Toggle All")
+ . "\n";
} else {
- $result .= "";
if (isset($checkall) && ($checkall == '1')) {
@@ -635,7 +919,6 @@ function get_selectall_link($start_msg, $sort) {
} else {
$result .= _("Select All");
}
-
$result .= "\n";
}
@@ -643,49 +926,64 @@ function get_selectall_link($start_msg, $sort) {
return ($result);
}
-/**
-* This function computes the "Viewing Messages..." string.
-*/
+/*
+ * This function computes the "Viewing Messages..." string.
+ */
function get_msgcnt_str($start_msg, $end_msg, $num_msgs) {
/* Compute the $msg_cnt_str. */
$result = '';
if ($start_msg < $end_msg) {
- $result = sprintf(_("Viewing Messages: %s to %s (%s total)"), $start_msg, $end_msg, $num_msgs);
+ $result = sprintf(_("Viewing Messages: %s to %s (%s total)"),
+ $start_msg, $end_msg, $num_msgs);
} else if ($start_msg == $end_msg) {
$result = sprintf(_("Viewing Message: %s (1 total)"), $start_msg);
} else {
$result = ' ';
}
-
/* Return our result string. */
return ($result);
}
-/**
+/*
* Generate a paginator link.
*/
-function get_paginator_link
-($box, $start_msg, $use, $text) {
+function get_paginator_link($box, $start_msg, $use, $text) {
+ global $PHP_SELF;
+
$result = "$text";
+ return ($result);
+/*
+ if (preg_match('/^(.+)\?.+$/',$PHP_SELF,$regs)) {
+ $source_url = $regs[1];
+ } else {
+ $source_url = $PHP_SELF;
+ }
+
+ $result = '$text";
return ($result);
+*/
}
-/**
+/*
* This function computes the paginator string.
*/
-function get_paginator_str
-($box, $start_msg, $end_msg, $num_msgs, $show_num, $sort) {
- global $username, $data_dir, $use_mailbox_cache, $color;
+function get_paginator_str($box, $start_msg, $end_msg, $num_msgs,
+ $show_num, $sort) {
+ global $username, $data_dir, $use_mailbox_cache, $color, $PG_SHOWNUM;
/* Initialize paginator string chunks. */
$prv_str = '';
$nxt_str = '';
- $pg_str = '';
+ $pg_str = '';
$all_str = '';
$tgl_str = '';
+ $box = urlencode($box);
+
/* Create simple strings that will be creating the paginator. */
$spc = ' '; /* This will be used as a space. */
$sep = '|'; /* This will be used as a seperator. */
@@ -727,30 +1025,30 @@ function get_paginator_str
$cur_pg = intval($start_msg / $show_num) + 1;
/* Compute total # of pages and # of paginator page links. */
- $tot_pgs = ceil($num_msgs / $show_num); /* Total # of Pages */
+ $tot_pgs = ceil($num_msgs / $show_num); /* Total number of Pages */
$vis_pgs = min($pg_max, $tot_pgs - 1); /* Visible Pages */
- /************************************************************/
/* Compute the size of the four quarters of the page links. */
- /************************************************************/
/* If we can, just show all the pages. */
if (($tot_pgs - 1) <= $pg_max) {
$q1_pgs = $cur_pg - 1;
$q2_pgs = $q3_pgs = 0;
$q4_pgs = $tot_pgs - $cur_pg;
-
+
/* Otherwise, compute some magic to choose the four quarters. */
} else {
- /* Compute the magic base values. Added together, */
- /* these values will always equal to the $pag_pgs. */
- /* NOTE: These are DEFAULT values and do not take */
- /* the current page into account. That is below. */
+ /*
+ * Compute the magic base values. Added together,
+ * these values will always equal to the $pag_pgs.
+ * NOTE: These are DEFAULT values and do not take
+ * the current page into account. That is below.
+ */
$q1_pgs = floor($vis_pgs/4);
$q2_pgs = round($vis_pgs/4, 0);
$q3_pgs = ceil($vis_pgs/4);
$q4_pgs = round(($vis_pgs - $q2_pgs)/3, 0);
-
+
/* Adjust if the first quarter contains the current page. */
if (($cur_pg - $q1_pgs) < 1) {
$extra_pgs = ($q1_pgs - ($cur_pg - 1)) + $q2_pgs;
@@ -785,14 +1083,14 @@ function get_paginator_str
}
}
- /* I am leaving this debug code here, commented out, because */
- /* it is a really nice way to see what the above code is doing. */
- /* echo "qts = $q1_pgs/$q2_pgs/$q3_pgs/$q4_pgs = " */
- /* . ($q1_pgs + $q2_pgs + $q3_pgs + $q4_pgs) . ' '; */
+ /*
+ * I am leaving this debug code here, commented out, because
+ * it is a really nice way to see what the above code is doing.
+ * echo "qts = $q1_pgs/$q2_pgs/$q3_pgs/$q4_pgs = "
+ * . ($q1_pgs + $q2_pgs + $q3_pgs + $q4_pgs) . ' ';
+ */
- /************************************************************/
/* Print out the page links from the compute page quarters. */
- /************************************************************/
/* Start with the first quarter. */
if (($q1_pgs == 0) && ($cur_pg > 1)) {
@@ -834,12 +1132,16 @@ function get_paginator_str
$pg_str .= get_paginator_link($box, $start, $use, $pg) . $spc;
}
}
+ } else if ($PG_SHOWNUM == 999999) {
+ $pg_str = "" ._("Paginate") . '' . $spc;
}
/* If necessary, compute the 'show all' string. */
if (($prv_str != '') || ($nxt_str != '')) {
- $all_str = "" . _("Show All") . '';
}
@@ -847,12 +1149,16 @@ function get_paginator_str
$tgl_str = get_selectall_link($start_msg, $sort);
/* Put all the pieces of the paginator string together. */
+ /**
+ * Hairy code... But let's leave it like it is since I am not certain
+ * a different approach would be any easier to read. ;)
+ */
$result = '';
- $result .= ($all_str != '' ? $all_str . $spc . $sep . $spc: '');
$result .= ($prv_str != '' ? $prv_str . $spc . $sep . $spc : '');
- $result .= ($pg_str != '' ? $pg_str . $sep . $spc : '');
- $result .= ($nxt_str != '' ? $nxt_str : '');
- $result .= ($result != '' ? $spc . $sep . $spc . $tgl_str: $tgl_str);
+ $result .= ($nxt_str != '' ? $nxt_str . $spc . $sep . $spc : '');
+ $result .= ($pg_str != '' ? $pg_str : '');
+ $result .= ($all_str != '' ? $sep . $spc . $all_str . $spc : '');
+ $result .= ($result != '' ? $sep . $spc . $tgl_str: $tgl_str);
/* If the resulting string is blank, return a non-breaking space. */
if ($result == '') {
@@ -863,33 +1169,101 @@ function get_paginator_str
return ($result);
}
-function processSubject($subject) {
- // Shouldn't ever happen -- caught too many times in the IMAP functions
+function processSubject($subject, $threadlevel = 0) {
+ global $languages, $squirrelmail_language;
+ /* Shouldn't ever happen -- caught too many times in the IMAP functions */
if ($subject == '')
return _("(no subject)");
- if (strlen($subject) <= 55)
+ $trim_at = 55;
+
+ /* if this is threaded, subtract two chars per indentlevel */
+ if($threadlevel > 0 && $threadlevel <= 10)
+ $trim_at -= (2*$threadlevel);
+
+ if (strlen($subject) <= $trim_at)
return $subject;
- $ent_strlen=strlen($subject);
- $trim_val=50;
- $ent_offset=0;
- // see if this is entities-encoded string
- // If so, Iterate through the whole string, find out
- // the real number of characters, and if more
- // than 55, substr with an updated trim value.
- while (($ent_loc = strpos($subject, '&', $ent_offset)) !== false &&
- ($ent_loc_end = strpos($subject, ';', $ent_loc)) !== false)
- {
- $trim_val += ($ent_loc_end-$ent_loc)+1;
- $ent_strlen -= $ent_loc_end-$ent_loc;
- $ent_offset = $ent_loc_end+1;
- }
-
- if ($ent_strlen <= 55)
+ $ent_strlen = $orig_len = strlen($subject);
+ $trim_val = $trim_at - 5;
+ $ent_offset = 0;
+ /*
+ * see if this is entities-encoded string
+ * If so, Iterate through the whole string, find out
+ * the real number of characters, and if more
+ * than 55, substr with an updated trim value.
+ */
+ $step = $ent_loc = 0;
+ while ( $ent_loc < $trim_val && (($ent_loc = strpos($subject, '&', $ent_offset)) !== false) &&
+ (($ent_loc_end = strpos($subject, ';', $ent_loc+3)) !== false) ) {
+ $trim_val += ($ent_loc_end-$ent_loc);
+ $ent_offset = $ent_loc_end+1;
+ ++$step;
+ }
+
+ if (($trim_val > 50) && (strlen($subject) > ($trim_val))&& (strpos($subject,';',$trim_val) < ($trim_val +6))) {
+ $i = strpos($subject,';',$trim_val);
+ if ($i) {
+ $trim_val = strpos($subject,';',$trim_val);
+ }
+ }
+ if ($ent_strlen <= $trim_at){
return $subject;
+ }
+ if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
+ function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
+ return $languages[$squirrelmail_language]['XTRA_CODE']('strimwidth', $subject, $trim_val);
+ }
return substr($subject, 0, $trim_val) . '...';
}
+function getMbxList($imapConnection) {
+ global $lastTargetMailbox;
+ echo ' ';
+}
+
+function getButton($type, $name, $value) {
+ return '';
+}
+
+function getSmallStringCell($string, $align) {
+ return html_tag('td',
+ '' . $string . ': ',
+ $align,
+ '',
+ 'nowrap' );
+}
+
+function getEndMessage($start_msg, $show_num, $num_msgs) {
+ if ($start_msg + ($show_num - 1) < $num_msgs){
+ $end_msg = $start_msg + ($show_num - 1);
+ } else {
+ $end_msg = $num_msgs;
+ }
+
+ if ($end_msg < $start_msg) {
+ $start_msg = $start_msg - $show_num;
+ if ($start_msg < 1) {
+ $start_msg = 1;
+ }
+ }
+ return (array($start_msg,$end_msg));
+}
+
+function handleAsSent($mailbox) {
+ global $handleAsSent_result;
+
+ /* First check if this is the sent or draft folder. */
+ $handleAsSent_result = isSentMailbox($mailbox) || isDraftMailbox($mailbox);
+
+ /* Then check the result of the handleAsSent hook. */
+ do_hook('check_handleAsSent_result', $mailbox);
+
+ /* And return the result. */
+ return $handleAsSent_result;
+}
+
?>
|