msglist.php

来自「通达OA2007SE源代码 非常好的」· PHP 代码 · 共 452 行

PHP
452
字号
<?
  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).'
'));
      exit ();
    }
    if (!$UM->mail_auth (true))
    {
      header ((((((((''.'Location: badlogin.php?sid=').$sid).'&tid=').$tid).'&lid=').$lid).'
'));
      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'));
  $headers = array ();
  if (((!is_array ($sess['headers'][base64_encode (strtolower ($folder))]) OR isset ($decision)) OR isset ($refr)))
  {
    my_connect ();
    $sess['auth'] = true;
    $headers = $sess['headers'][base64_encode (strtolower ($folder))];
    if ((isset ($start_pos) AND isset ($end_pos)))
    {
      for ($i = $start_pos; ($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;
          continue;
        }
      }
      if ($expunge)
      {
        if ($prefs['save-to-trash'])
        {
          unset ($$sess['headers']);
        }
        if (($decision == 'move'))
        {
          unset ($$sess['headers']);
        }
        $SS->Save ($sess);
        $UM->mail_disconnect ();
        my_connect ();
        if ($back)
        {
          $back_to = $start_pos;
        }
      }
      unset ($$sess['headers']);
    }
    else
    {
      if (isset ($refr))
      {
        unset ($$sess['headers']);
      }
    }
    $boxes = $UM->mail_list_boxes ();
    $sess['folders'] = $boxes;
    $sess['last-update'] = time ();
    if ($quota_limit)
    {
      for ($n = 0; ($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);
          continue;
        }
      }
    }
    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 AND !$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 = (((''.'&nbsp;<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;
      break;
    }
  }
  array_qsort2 ($headers, $sortby, $sortorder);
  reset ($headers);
  $sess['headers'][base64_encode (strtolower ($folder))] = $headers;
  $SS->Save ($sess);
  if ($back_to)
  {
    if (($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']))
  {
    for ($i = 0; ($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 AND ($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) OR !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) AND ($pag != 1)))
  {
    header ((((((''.'Location: msglist.php?folder=').$folder).'&pag=').($pag - 1)).(((((((''.'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'
')));
  }
  echo $nocache;
  $jsquota = ($exceeded ? 'true' : 'false');
  $jssource = (((((((((((((((((''.'
<script language="JavaScript">
no_quota  = ').$jsquota).';
quota_msg = \'').ereg_replace ('\'', '\\\'', $quota_exceeded)).'\';
function readmsg(ix,read) {
	if(!read && no_quota)
		alert(quota_msg)
	else
		location = \'readmsg.php?folder=').urlencode ($folder)).(((((((((''.'&pag=').$pag).'&ix=\'+ix+\'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; 
}
function outputmsg(ix,read) {
	if(!read && no_quota)
		alert(quota_msg)
	else
		location = \'export.php?folder=')).urlencode ($folder)).(((((((((((''.'&pag=').$pag).'&ix=\'+ix+\'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; 
}
function newmsg() { location = \'newmsg.php?pag=').$pag).'&folder=')).urlencode ($folder)).(((((((''.'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; }
function refreshlist() { location = \'msglist.php?refr=true&folder=')).urlencode ($folder)).(((((((((''.'&pag=').$pag).'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\' }
function folderlist() { location = \'folders.php?folder=')).urlencode ($folder)).(((((((((((((((((((((((((''.'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'}
function delemsg() { document.form1.submit() }
function goend() { location = \'logout.php?sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; }
function goinbox() { location = \'msglist.php?folder=inbox&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; }
function search() { location = \'search.php?sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; }
function emptytrash() {	location = \'folders.php?empty=trash&folder=')).urlencode ($folder)).(((((((((((((((((((((((((((((((((''.'&goback=true&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\';}
function movemsg() { 
	if(no_quota) 
		alert(quota_msg);
	else {
		with(document.form1) { decision.value = \'move\'; submit(); } 
	}
}
function addresses() { location = \'addressbook.php?sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; }
function prefs() { location = \'preferences.php?sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\'; }
function sel() {
	with(document.form1) {
		for(i=0;i<elements.length;i++) {
			thiselm = elements[i];
			if(thiselm.name.substring(0,3) == \'msg\')
				thiselm.checked = !thiselm.checked
		}
	}
}
sort_colum = \'').$sortby).'\';
sort_order = \'').$sortorder).'\';
function sortby(col) {
	if(col == sort_colum) ord = (sort_order == \'ASC\')?\'DESC\':\'ASC\';
	else ord = \'ASC\';
	location = \'msglist.php?folder=').$folder).'&pag=').$pag).'&sortby=\'+col+\'&sortorder=\'+ord+\'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'\';
}
</script>
'));
  $smarty->assign ('umErrorMessage', $msg);
  $forms = (((((((''.'<input type=hidden name=lid value=').$lid).'>
<input type=hidden name=sid value="').$sid).'">
<input type=hidden name=decision value=delete>
<input type=hidden name=folder value="').htmlspecialchars ($folder)).(((((((''.'">
<input type=hidden name=pag value=').$pag).'>
<input type=hidden name=start_pos value=').$start_pos).'>
<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;
    for ($i = 0; ($i < count ($headers)); ++$i)
    {
      if (!eregi ('\\SEEN', $headers[$i]['flags']))
      {
        ++$newmsgs;
        continue;
      }
    }
    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));
    for ($i = $start_pos; ($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) OR ($prior == 5)))
      {
        $img_prior = '&nbsp;<img src="./images/prior_low.gif" width=5 height=11 border=0 alt="">';
      }
      else
      {
        if ((($prior == 1) OR ($prior == 2)))
        {
          $img_prior = '&nbsp;<img src="./images/prior_high.gif" width=5 height=11 border=0 alt="">';
        }
        else
        {
          $img_prior = '';
        }
      }
      $msg_img = (((''.'&nbsp;<img src="').$msg_img).'" width=14 height=14 border=0 alt="">');
      $checkbox = (((''.'<input type="checkbox" name="msg_').$i).'" value=1>');
      $attachimg = ($headers[$i]['attach'] ? '&nbsp;<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)));
    }
    for ($i = 1; ($i <= ceil (($nummsg / $reg_pp))); ++$i)
    {
      if (($pag == $i))
      {
        ($navigation .= ((''.$i).' '));
        continue;
      }
      else
      {
        ($navigation .= (((((((((((((''.'<a href="msglist.php?folder=').$folder).'&pag=').$i).'&sid=').$sid).'&tid=').$tid).'&lid=').$lid).'" class="navigation">').$i).'</a> '));
        continue;
      }
    }
    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)) AND ($entry != '..')) AND ($entry != '.')) AND (substr ($entry, 0, 1) != '_')) AND ($entry != $folder)) AND (($mail_protocol == 'imap') OR ($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);
      continue;
    }
  }
  $d->close ();
  $smarty->assign ('umAvalFolders', $avalfolders);
  $smarty->display ('neotech.net/messagelist.htm');
?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?