version 0.3.23
[fms.git] / src / http / pages / forummainpage.cpp
diff --git a/src/http/pages/forummainpage.cpp b/src/http/pages/forummainpage.cpp
new file mode 100644 (file)
index 0000000..ae97874
--- /dev/null
@@ -0,0 +1,93 @@
+#include "../../../include/http/pages/forummainpage.h"\r
+#include "../../../include/stringfunctions.h"\r
+\r
+#ifdef XMEM\r
+       #include <xmem.h>\r
+#endif\r
+\r
+const std::string ForumMainPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
+{\r
+       std::string content="";\r
+\r
+       content+=CreateForumHeader();\r
+\r
+       content+="<table class=\"foruminfo\">\r\n";\r
+       content+="<thead><tr><th>New</th><th>Forum</th><th>Posts</th><th>Last Post</th></tr></thead>\r\n";\r
+\r
+       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 WHERE tblMessageBoard.BoardID=? AND tblMessage.Read=0 LIMIT 0,1;");\r
+       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
+       \r
+       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
+       st.Step();\r
+       while(st.RowReturned())\r
+       {\r
+               int boardid=-1;\r
+               std::string boardidstr="-1";\r
+               std::string boardname="";\r
+               std::string boarddescription="";\r
+               std::string postcountstr="";\r
+\r
+               st.ResultInt(0,boardid);\r
+               st.ResultText(0,boardidstr);\r
+               st.ResultText(1,boardname);\r
+               st.ResultText(2,boarddescription);\r
+               st.ResultText(3,postcountstr);\r
+\r
+               content+="<tr>";\r
+               content+="<td class=\"newposts\">";\r
+\r
+               newmessagesst.Bind(0,boardid);\r
+               newmessagesst.Step();\r
+               if(newmessagesst.RowReturned())\r
+               {\r
+                       content+="<img src=\"showimage.htm?image=images/new_posts.png\" title=\"New Posts\">";\r
+               }\r
+               else\r
+               {\r
+                       content+="<img src=\"showimage.htm?image=images/no_new_posts.png\" title=\"No New Posts\">";\r
+               }\r
+               newmessagesst.Reset();\r
+\r
+               content+="</td>";\r
+\r
+               content+="<td class=\"forumname\">";\r
+               content+="<a href=\"forumthreads.htm?boardid="+boardidstr+"\">"+SanitizeOutput(boardname)+"</a><br />";\r
+               content+="<span class=\"description\">"+SanitizeOutput(boarddescription)+"</span>";\r
+               content+="</td>";\r
+               content+="<td class=\"postcount\">";\r
+               content+=postcountstr+" posts";\r
+               content+="</td>";\r
+\r
+               lastmessagest.Bind(0,boardid);\r
+               lastmessagest.Step();\r
+               content+="<td class=\"lastpost\">";\r
+               if(lastmessagest.RowReturned())\r
+               {\r
+                       std::string messageidstr="";\r
+                       std::string identityidstr="";\r
+                       std::string fromname="";\r
+                       std::string messagedate="";\r
+                       std::string subject="";\r
+                       std::string threadidstr="";\r
+\r
+                       lastmessagest.ResultText(0,messageidstr);\r
+                       lastmessagest.ResultText(1,identityidstr);\r
+                       lastmessagest.ResultText(2,fromname);\r
+                       lastmessagest.ResultText(3,subject);\r
+                       lastmessagest.ResultText(4,messagedate);\r
+                       lastmessagest.ResultText(5,threadidstr);\r
+\r
+                       content+="Last post on "+messagedate+" in<br />";\r
+                       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
+               }\r
+               content+="</td>";\r
+               lastmessagest.Reset();\r
+\r
+               content+="</tr>\r\n";\r
+               st.Step();\r
+       }\r
+\r
+       content+="</table>\r\n";\r
+\r
+       return StringFunctions::Replace(m_template,"[CONTENT]",content);\r
+}\r