📄 msglist.php
字号:
<?php
function my_connect( )
{
global $UM;
global $sid;
global $tid;
global $lid;
if ( !$UM->mail_connect( ) )
{
header( "Location: error.php?err=1&sid={$sid}&tid={$tid}&lid={$lid}\r\n" );
exit( );
}
if ( !$UM->mail_auth( true ) )
{
header( "Location: badlogin.php?sid={$sid}&tid={$tid}&lid={$lid}\r\n" );
exit( );
}
}
require( "./inc/inc.php" );
$smarty->assign( "umUser", $f_user );
$smarty->assign( "umJS", $jssource );
$refreshurl = "msglist.php?sid={$sid}&tid={$tid}&lid={$lid}&folder=".urlencode( $folder )."&pag={$pag}&refr=true";
if ( !is_array( $sess['headers'][base64_encode( strtolower( $folder ) )] ) || isset( $decision ) || isset( $refr ) )
{
my_connect( );
$sess['auth'] = true;
$headers = $sess['headers'][base64_encode( strtolower( $folder ) )];
if ( isset( $start_pos, $end_pos ) )
{
$i = $start_pos;
for ( ; $i < $end_pos; ++$i )
{
if ( isset( "msg_{$i}" ) )
{
if ( $decision == "delete" )
{
$UM->mail_delete_msg( $headers[$i], $prefs['save-to-trash'], $prefs['st-only-read'] );
}
else
{
$UM->mail_move_msg( $headers[$i], $aval_folders );
}
$expunge = true;
}
}
if ( $expunge )
{
if ( $prefs['save-to-trash'] )
{
unset( $this->headers->base64_encode( "trash" ) );
}
if ( $decision == "move" )
{
unset( $this->headers->base64_encode( strtolower( $aval_folders ) ) );
}
$SS->save( $sess );
$UM->mail_disconnect( );
my_connect( );
if ( $back )
{
$back_to = $start_pos;
}
}
unset( $this->headers->base64_encode( strtolower( $folder ) ) );
}
else if ( isset( $refr ) )
{
unset( $this->headers->base64_encode( strtolower( $folder ) ) );
}
$boxes = $UM->mail_list_boxes( );
$sess['folders'] = $boxes;
$sess['last-update'] = time( );
if ( $quota_limit )
{
$n = 0;
for ( ; $n < count( $boxes ); ++$n )
{
$entry = $boxes[$n]['name'];
if ( !is_array( $sess['headers'][base64_encode( strtolower( $entry ) )] ) )
{
$sess['headers'][base64_encode( strtolower( $entry ) )] = $UM->mail_list_msgs( $entry );
}
}
}
else
{
$sess['headers'][base64_encode( strtolower( $folder ) )] = $UM->mail_list_msgs( $folder );
}
$headers = $sess['headers'][base64_encode( strtolower( $folder ) )];
$UM->mail_disconnect( );
if ( $check_first_login && !$prefs['first-login'] )
{
$prefs['first-login'] = 1;
save_prefs( $prefs );
$SS->save( $sess );
header( "Location: preferences.php?sid={$sid}&tid={$tid}&lid={$lid}&folder=".urlencode( $folder ) );
exit( );
}
}
else
{
$headers = $sess['headers'][base64_encode( strtolower( $folder ) )];
}
$arrow = $sortorder == "ASC" ? "images/arrow_up.gif" : "images/arrow_down.gif";
$arrow = " <img src={$arrow} width=8 height=7 border=0 alt=>";
$attach_arrow = "";
$subject_arrow = "";
$fromname_arrow = "";
$date_arrow = "";
$size_arrow = "";
switch ( $sortby )
{
case "subject" :
$subject_arrow = $arrow;
break;
case "fromname" :
$fromname_arrow = $arrow;
break;
case "date" :
$date_arrow = $arrow;
break;
case "size" :
$size_arrow = $arrow;
}
array_qsort2( $headers, $sortby, $sortorder );
reset( $headers );
$sess['headers'][base64_encode( strtolower( $folder ) )] = $headers;
$SS->save( $sess );
if ( $back_to && $back_to < count( $headers ) )
{
header( "Location: readmsg.php?folder=".urlencode( $folder )."&pag={$pag}&ix={$back_to}&sid={$sid}&tid={$tid}&lid={$lid}" );
exit( );
}
$elapsedtime = ( time( ) - $sess['last-update'] ) / 60;
$timeleft = $prefs['refresh-time'] - $elapsedtime;
if ( 0 < $timeleft )
{
echo ( "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"".ceil( $timeleft ) * 60 )."; URL={$refreshurl}\">";
}
else if ( $prefs['refresh-time'] )
{
header( "Location: {$refreshurl}" );
}
while ( list( $box, $info ) = each( $sess['headers'] ) )
{
$i = 0;
for ( ; $i < count( $info ); ++$i )
{
$totalused += $info[$i]['size'];
}
}
unset( $UM );
$smarty->assign( "umTotalUsed", ceil( $totalused / 1024 ) );
$quota_enabled = $quota_limit ? 1 : 0;
$smarty->assign( "umQuotaEnabled", $quota_enabled );
$smarty->assign( "umQuotaLimit", $quota_limit );
$usageGraph = get_usage_graphic( $totalused / 1024, $quota_limit );
$smarty->assign( "umUsageGraph", $usageGraph );
$exceeded = $quota_limit && $quota_limit <= ceil( $totalused / 1024 );
$smarty->assign( "umAttachArrow", $attach_arrow );
$smarty->assign( "umSubjectArrow", $subject_arrow );
$smarty->assign( "umFromArrow", $fromname_arrow );
$smarty->assign( "umDateArrow", $date_arrow );
$smarty->assign( "umSizeArrow", $size_arrow );
$nummsg = count( $headers );
if ( !isset( $pag ) || !is_numeric( trim( $pag ) ) )
{
$pag = 1;
}
$reg_pp = $prefs['rpp'];
$start_pos = ( $pag - 1 ) * $reg_pp;
$end_pos = $nummsg < $start_pos + $reg_pp ? $nummsg : $start_pos + $reg_pp;
if ( $end_pos <= $start_pos && $pag != 1 )
{
header( ( "Location: msglist.php?folder={$folder}&pag=".( $pag - 1 ) )."&sid={$sid}&tid={$tid}&lid={$lid}\r\n" );
}
echo $nocache;
$jsquota = $exceeded ? "true" : "false";
$jssource = "\r\n<script language=\"JavaScript\">\r\nno_quota = {$jsquota};\r\nquota_msg = '".ereg_replace( "'", "\\'", $quota_exceeded )."';\r\nfunction readmsg(ix,read) {\r\n\tif(!read && no_quota)\r\n\t\talert(quota_msg)\r\n\telse\r\n\t\tlocation = 'readmsg.php?folder=".urlencode( $folder )."&pag={$pag}&ix='+ix+'&sid={$sid}&tid={$tid}&lid={$lid}'; \r\n}\r\nfunction outputmsg(ix,read) {\r\n\tif(!read && no_quota)\r\n\t\talert(quota_msg)\r\n\telse\r\n\t\tlocation = 'export.php?folder=".urlencode( $folder )."&pag={$pag}&ix='+ix+'&sid={$sid}&tid={$tid}&lid={$lid}'; \r\n}\r\nfunction newmsg() { location = 'newmsg.php?pag={$pag}&folder=".urlencode( $folder )."&sid={$sid}&tid={$tid}&lid={$lid}'; }\r\nfunction refreshlist() { location = 'msglist.php?refr=true&folder=".urlencode( $folder )."&pag={$pag}&sid={$sid}&tid={$tid}&lid={$lid}' }\r\nfunction folderlist() { location = 'folders.php?folder=".urlencode( $folder )."&sid={$sid}&tid={$tid}&lid={$lid}'}\r\nfunction delemsg() { document.form1.submit() }\r\nfunction goend() { location = 'logout.php?sid={$sid}&tid={$tid}&lid={$lid}'; }\r\nfunction goinbox() { location = 'msglist.php?folder=inbox&sid={$sid}&tid={$tid}&lid={$lid}'; }\r\nfunction search() { location = 'search.php?sid={$sid}&tid={$tid}&lid={$lid}'; }\r\nfunction emptytrash() {\tlocation = 'folders.php?empty=trash&folder=".urlencode( $folder )."&goback=true&sid={$sid}&tid={$tid}&lid={$lid}';}\r\nfunction movemsg() { \r\n\tif(no_quota) \r\n\t\talert(quota_msg);\r\n\telse {\r\n\t\twith(document.form1) { decision.value = 'move'; submit(); } \r\n\t}\r\n}\r\nfunction addresses() { location = 'addressbook.php?sid={$sid}&tid={$tid}&lid={$lid}'; }\r\nfunction prefs() { location = 'preferences.php?sid={$sid}&tid={$tid}&lid={$lid}'; }\r\nfunction sel() {\r\n\twith(document.form1) {\r\n\t\tfor(i=0;i<elements.length;i++) {\r\n\t\t\tthiselm = elements[i];\r\n\t\t\tif(thiselm.name.substring(0,3) == 'msg')\r\n\t\t\t\tthiselm.checked = !thiselm.checked\r\n\t\t}\r\n\t}\r\n}\r\nsort_colum = '{$sortby}';\r\nsort_order = '{$sortorder}';\r\n\r\nfunction sortby(col) {\r\n\tif(col == sort_colum) ord = (sort_order == 'ASC')?'DESC':'ASC';\r\n\telse ord = 'ASC';\r\n\tlocation = 'msglist.php?folder={$folder}&pag={$pag}&sortby='+col+'&sortorder='+ord+'&sid={$sid}&tid={$tid}&lid={$lid}';\r\n}\r\n\r\n</script>\r\n";
$smarty->assign( "umErrorMessage", $msg );
$forms = "<input type=hidden name=lid value={$lid}>\r\n<input type=hidden name=sid value=\"{$sid}\">\r\n<input type=hidden name=decision value=delete>\r\n<input type=hidden name=folder value=\"".htmlspecialchars( $folder )."\">\r\n<input type=hidden name=pag value={$pag}>\r\n<input type=hidden name=start_pos value={$start_pos}>\r\n<input type=hidden name=end_pos value={$end_pos}>";
$smarty->assign( "umJS", $jssource );
$smarty->assign( "umForms", $forms );
$smarty->assign( "umUserEmail", $sess['email'] );
$smarty->assign( "umFolder", $folder );
$messagelist = array( );
$func( $textout );
if ( 0 < $nummsg )
{
$newmsgs = 0;
$i = 0;
for ( ; $i < count( $headers ); ++$i )
{
if ( !eregi( "\\SEEN", $headers[$i]['flags'] ) )
{
++$newmsgs;
}
}
if ( $nummsg == 1 )
{
$counttext = $msg_count_s;
}
else
{
$counttext = sprintf( $msg_count_p, $nummsg );
}
if ( $newmsgs == 1 )
{
$counttext .= $msg_unread_s;
}
else if ( 1 < $newmsgs )
{
$counttext .= sprintf( $msg_unread_p, $newmsgs );
}
else
{
$counttext .= $msg_no_unread;
}
$counttext .= sprintf( $msg_boxname, $boxname );
$i = $start_pos;
for ( ; $i < $end_pos; ++$i )
{
$mnum = $headers[$i]['id'];
$read = eregi( "\\SEEN", $headers[$i]['flags'] ) ? "true" : "false";
$readlink = "javascript:readmsg({$i},{$read})";
$outputlink = "javascript:outputmsg({$i},{$read})";
$composelink = "newmsg.php?folder={$folder}&nameto=".htmlspecialchars( $headers[$i]['from'][0]['name'] )."&mailto=".htmlspecialchars( $headers[$i]['from'][0]['mail'] )."&sid={$sid}&tid={$tid}&lid={$lid}";
$composelinksent = "newmsg.php?folder={$folder}&nameto=".htmlspecialchars( $headers[$i]['to'][0]['name'] )."&mailto=".htmlspecialchars( $headers[$i]['to'][0]['name'] )."&sid={$sid}&tid={$tid}&lid={$lid}";
$from = $headers[$i]['from'][0]['name'];
$to = $headers[$i]['to'][0]['name'];
$subject = $headers[$i]['subject'];
if ( !eregi( "\\SEEN", $headers[$i]['flags'] ) )
{
$msg_img = "./images/msg_unread.gif";
}
else if ( eregi( "\\ANSWERED", $headers[$i]['flags'] ) )
{
$msg_img = "./images/msg_answered.gif";
}
else
{
$msg_img = "./images/msg_read.gif";
}
$prior = $headers[$i]['priority'];
if ( $prior == 4 || $prior == 5 )
{
$img_prior = " <img src=\"./images/prior_low.gif\" width=5 height=11 border=0 alt=\"\">";
}
else if ( $prior == 1 || $prior == 2 )
{
$img_prior = " <img src=\"./images/prior_high.gif\" width=5 height=11 border=0 alt=\"\">";
}
else
{
$img_prior = "";
}
$msg_img = " <img src=\"{$msg_img}\" width=14 height=14 border=0 alt=\"\">";
$checkbox = "<input type=\"checkbox\" name=\"msg_{$i}\" value=1>";
$attachimg = $headers[$i]['attach'] ? " <img src=images/attach.gif border=0>" : "";
$date = $headers[$i]['date'];
$size = ceil( $headers[$i]['size'] / 1024 );
$index = count( $messagelist );
$messagelist[$index]['read'] = $read;
$messagelist[$index]['readlink'] = $readlink;
$messagelist[$index]['composelink'] = $composelink;
$messagelist[$index]['composelinksent'] = $composelinksent;
$messagelist[$index]['from'] = $from;
$messagelist[$index]['to'] = $to;
$messagelist[$index]['subject'] = $subject;
$messagelist[$index]['date'] = $date;
$messagelist[$index]['statusimg'] = $msg_img;
$messagelist[$index]['checkbox'] = $checkbox;
$messagelist[$index]['attachimg'] = $attachimg;
$messagelist[$index]['priorimg'] = $img_prior;
$messagelist[$index]['size'] = $size;
$messagelist[$index]['outputlink'] = $outputlink;
}
}
$smarty->assign( "umNumMessages", $nummsg );
$smarty->assign( "umNumUnread", $newmsgs );
$smarty->assign( "umMessageList", $messagelist );
switch ( strtolower( $folder ) )
{
case "inbox" :
$display = $inbox_extended;
break;
case "sent" :
$display = $sent_extended;
break;
case "trash" :
$display = $trash_extended;
break;
default :
$display = $entry;
}
$smarty->assign( "umBoxName", $display );
if ( 0 < $nummsg )
{
if ( 1 < $pag )
{
$smarty->assign( "umPreviousLink", ( "msglist.php?folder={$folder}&pag=".( $pag - 1 ) )."&sid={$sid}&tid={$tid}&lid={$lid}" );
}
$i = 1;
for ( ; $i <= ceil( $nummsg / $reg_pp ); ++$i )
{
if ( $pag == $i )
{
$navigation .= "{$i} ";
}
else
{
$navigation .= "<a href=\"msglist.php?folder={$folder}&pag={$i}&sid={$sid}&tid={$tid}&lid={$lid}\" class=\"navigation\">{$i}</a> ";
}
}
if ( $end_pos < $nummsg )
{
$smarty->assign( "umNextLink", ( "msglist.php?folder={$folder}&pag=".( $pag + 1 ) )."&sid={$sid}&tid={$tid}&lid={$lid}" );
}
$navigation .= " ({$pag}/".ceil( $nummsg / $reg_pp ).")";
}
$smarty->assign( "umNavBar", $navigation );
$avalfolders = array( );
$d = dir( $userfolder );
while ( $entry = $d->read( ) )
{
if ( is_dir( $userfolder.$entry ) && $entry != ".." && $entry != "." && substr( $entry, 0, 1 ) != "_" && $entry != $folder && ( $mail_protocol == "imap" || $entry != "inbox" ) )
{
switch ( strtolower( $entry ) )
{
case "inbox" :
$display = $inbox_extended;
break;
case "sent" :
$display = $sent_extended;
break;
case "trash" :
$display = $trash_extended;
break;
default :
$display = $entry;
}
$avalfolders[] = array(
"path" => $entry,
"display" => $display
);
}
}
$d->close( );
$smarty->assign( "umAvalFolders", $avalfolders );
$smarty->display( "neotech.net/messagelist.htm" );
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -