version 0.3.31
[fms.git] / src / http / pages / forummainpage.cpp
1 #include "../../../include/http/pages/forummainpage.h"\r
2 #include "../../../include/stringfunctions.h"\r
3 \r
4 #ifdef XMEM\r
5         #include <xmem.h>\r
6 #endif\r
7 \r
8 const std::string ForumMainPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
9 {\r
10         std::string content="";\r
11 \r
12         content+=CreateForumHeader();\r
13 \r
14         content+="<table class=\"foruminfo\">\r\n";\r
15         content+="<thead><tr><th>New</th><th>Forum</th><th>Posts</th><th>Last Post</th></tr></thead>\r\n";\r
16 \r
17         SQLite3DB::Statement newmessagesst=m_db->Prepare("SELECT tblMessage.MessageID FROM tblMessage INNER JOIN tblMessageBoard ON tblMessage.MessageID=tblMessageBoard.MessageID INNER JOIN tblThreadPost ON tblMessage.MessageID=tblThreadPost.MessageID INNER JOIN tblThread ON tblThreadPost.ThreadID=tblThread.ThreadID WHERE tblMessageBoard.BoardID=? AND tblThread.BoardID=? AND tblMessage.Read=0 LIMIT 0,1;");\r
18         SQLite3DB::Statement lastmessagest=m_db->Prepare("SELECT tblMessage.MessageID, tblMessage.IdentityID, tblMessage.FromName, tblMessage.Subject, tblMessage.MessageDate || ' ' || tblMessage.MessageTime, tblThread.ThreadID FROM tblMessage INNER JOIN tblThreadPost ON tblMessage.MessageID=tblThreadPost.MessageID INNER JOIN tblThread ON tblThreadPost.ThreadID=tblThread.ThreadID WHERE tblThread.BoardID=? ORDER BY tblMessage.MessageDate || tblMessage.MessageTime DESC LIMIT 0,1;");\r
19         \r
20         SQLite3DB::Statement st=m_db->Prepare("SELECT tblBoard.BoardID, BoardName, BoardDescription, COUNT(tblThreadPost.MessageID) FROM tblBoard LEFT JOIN tblThread ON tblBoard.BoardID=tblThread.BoardID LEFT JOIN tblThreadPost ON tblThread.ThreadID=tblThreadPost.ThreadID WHERE Forum='true' GROUP BY tblBoard.BoardID ORDER BY BoardName COLLATE NOCASE;");\r
21         st.Step();\r
22         while(st.RowReturned())\r
23         {\r
24                 int boardid=-1;\r
25                 std::string boardidstr="-1";\r
26                 std::string boardname="";\r
27                 std::string boarddescription="";\r
28                 std::string postcountstr="";\r
29 \r
30                 st.ResultInt(0,boardid);\r
31                 st.ResultText(0,boardidstr);\r
32                 st.ResultText(1,boardname);\r
33                 st.ResultText(2,boarddescription);\r
34                 st.ResultText(3,postcountstr);\r
35 \r
36                 content+="<tr>";\r
37                 content+="<td class=\"newposts\">";\r
38 \r
39                 newmessagesst.Bind(0,boardid);\r
40                 newmessagesst.Bind(1,boardid);\r
41                 newmessagesst.Step();\r
42                 if(newmessagesst.RowReturned())\r
43                 {\r
44                         content+="<img src=\"showimage.htm?image=images/new_posts.png\" title=\"New Posts\">";\r
45                 }\r
46                 else\r
47                 {\r
48                         content+="<img src=\"showimage.htm?image=images/no_new_posts.png\" title=\"No New Posts\">";\r
49                 }\r
50                 newmessagesst.Reset();\r
51 \r
52                 content+="</td>";\r
53 \r
54                 content+="<td class=\"forumname\">";\r
55                 content+="<a href=\"forumthreads.htm?boardid="+boardidstr+"\">"+SanitizeOutput(boardname)+"</a><br />";\r
56                 content+="<span class=\"description\">"+SanitizeOutput(boarddescription)+"</span>";\r
57                 content+="</td>";\r
58                 content+="<td class=\"postcount\">";\r
59                 content+=postcountstr+" posts";\r
60                 content+="</td>";\r
61 \r
62                 lastmessagest.Bind(0,boardid);\r
63                 lastmessagest.Step();\r
64                 content+="<td class=\"lastpost\">";\r
65                 if(lastmessagest.RowReturned())\r
66                 {\r
67                         std::string messageidstr="";\r
68                         std::string identityidstr="";\r
69                         std::string fromname="";\r
70                         std::string messagedate="";\r
71                         std::string subject="";\r
72                         std::string threadidstr="";\r
73 \r
74                         lastmessagest.ResultText(0,messageidstr);\r
75                         lastmessagest.ResultText(1,identityidstr);\r
76                         lastmessagest.ResultText(2,fromname);\r
77                         lastmessagest.ResultText(3,subject);\r
78                         lastmessagest.ResultText(4,messagedate);\r
79                         lastmessagest.ResultText(5,threadidstr);\r
80 \r
81                         content+="Last post on "+messagedate+" in<br />";\r
82                         content+="<a href=\"forumviewthread.htm?threadid="+threadidstr+"&boardid="+boardidstr+"#"+messageidstr+"\">"+FixSubject(subject)+"</a> by <a href=\"peerdetails.htm?identityid="+identityidstr+"\" title=\""+SanitizeOutput(fromname)+"\">"+FixFromName(fromname)+"</a>";\r
83                 }\r
84                 content+="</td>";\r
85                 lastmessagest.Reset();\r
86 \r
87                 content+="</tr>\r\n";\r
88                 st.Step();\r
89         }\r
90 \r
91         content+="</table>\r\n";\r
92 \r
93         return StringFunctions::Replace(m_template,"[CONTENT]",content);\r
94 }\r