recentMessages.jsp
上传用户:guhaomin
上传日期:2007-06-10
资源大小:23203k
文件大小:3k
源码类别:

电子政务应用

开发平台:

Java

  1. <%
  2. /**
  3.  * $RCSfile: recentMessages.jsp,v $
  4.  * $Revision: 1.4 $
  5.  * $Date: 2000/12/27 22:39:45 $
  6.  */
  7. %>
  8. <%@ page import="java.util.*,
  9.  java.text.*,
  10.  com.coolservlets.forum.*,
  11.  com.coolservlets.forum.util.*,
  12.  com.coolservlets.util.*" %>
  13. <% ////////////////////////
  14. // Authorization check
  15. // check for the existence of an authorization token
  16. Authorization authToken = SkinUtils.getUserAuthorization(request,response);
  17. // if the token was null, they're not authorized. Since this skin will
  18. // allow guests to view forums, we'll set a "guest" authentication
  19. // token
  20. if( authToken == null ) {
  21. authToken = AuthorizationFactory.getAnonymousAuthorization();
  22. }
  23. %>
  24. <%!
  25. // List threads of the last 31 days
  26. final static long MAX_AGE  = 1000L * 60 * 60 * 24 * 31;
  27. // At most, 8 threads in the list
  28. final static int MAX_MSGS = 8;
  29. // At most, 3 messages per forum
  30. final static int MAX_MSGS_PER_FORUM = 3;
  31. %>
  32. <%
  33. // Message age cutoff timestamp
  34. long  boundary = System.currentTimeMillis() - MAX_AGE;
  35. // Remember to declare the table tags
  36. boolean needHeader = true;
  37. // titles of the most recent threads
  38. String[] titles = new String[MAX_MSGS];
  39. String title;
  40. // age, forumId, threadID, msgID of most recent threads
  41. long[][] msgs = new long[MAX_MSGS][4];
  42. long[] msg;
  43. int  n;
  44. int  nr;
  45. long  age;
  46. // Loop through all the forums
  47. Iterator allForums = ForumFactory.getInstance(authToken).forums();
  48. while (allForums.hasNext()) {
  49. // per forum, loop through the first x recent threads
  50. Forum f = (Forum)allForums.next();
  51. Iterator fMsgs = f.threads();
  52. for (nr = 0; nr < MAX_MSGS_PER_FORUM && fMsgs.hasNext() ; ) {
  53. // if this thread is newer than what we have until now
  54. ForumThread t = (ForumThread)fMsgs.next();
  55. age = t.getModifiedDate().getTime();
  56. if (age > boundary && age > msgs[0][0]) {
  57. // gets its vitals and sort it into the list of recent msgs
  58. Iterator ms = t.messages(t.getMessageCount()-1, 1);
  59. ForumMessage m = (ForumMessage)ms.next();
  60. title = m.getSubject() + "</a> &nbsp; (" + t.getMessageCount() + ")";
  61. titles[0] = title;
  62. msg = msgs[0];
  63. msg[0] = age; msg[1] = f.getID(); msg[2] = t.getID(); msg[3] = m.getID();
  64. for (n = 1; n < MAX_MSGS && age > msgs[n][0]; n++) {
  65. titles[n-1] = titles[n];
  66. titles[n] = title;
  67. msgs[n-1] = msgs[n];
  68. msgs[n] = msg;
  69. }
  70. nr++;
  71. }
  72. }
  73. }
  74. // if we found any msgs, output them into a table
  75. for (n = MAX_MSGS -1; n >= 0 ; n--) {
  76. if (msgs[n][0] > 0) {
  77. if (needHeader) {
  78. needHeader = false;
  79. %>
  80. <table bgcolor="#fafafa" cellpadding="3" cellspacing="0" border="0" width="100%">
  81. <tr bgcolor="#eeeeee">
  82. <td align="center" colspan="2">
  83. <font class="strong">◆◆◆最新帖子◆◆◆</font>
  84. </td>
  85. </tr>
  86. <%
  87. }
  88. %>
  89. <tr bgcolor=#fafafa>
  90. <td width="1%" valign="top" align="center">&#149;</td>
  91. <td width="99%">
  92. <a href="/mainctrl/bbs/viewMessage?message=<%= msgs[n][3] %>&thread=<%= msgs[n][2] %>&forum=<%= msgs[n][1] %>&parent=-1"><%= titles[n] %>
  93. </td>
  94. </tr>
  95. <%
  96. }
  97. }
  98. if (!needHeader) {
  99. %> </table> <%
  100. }
  101. %>