version 0.3.25
[fms.git] / src / http / pages / forumviewthreadpage.cpp
index 0b69926..a680bfe 100644 (file)
@@ -1,5 +1,6 @@
 #include "../../../include/http/pages/forumviewthreadpage.h"\r
 #include "../../../include/stringfunctions.h"\r
+#include "../../../include/unicode/unicodeformatter.h"\r
 \r
 #ifdef XMEM\r
        #include <xmem.h>\r
@@ -10,6 +11,10 @@ const std::string ForumViewThreadPage::FixBody(const std::string &body)
        static std::string whitespace=" \t\r\n";\r
        std::string output=body;\r
 \r
+       output=StringFunctions::Replace(output,"\r\n","\n");\r
+\r
+       UnicodeFormatter::LineWrap(output,80,"",output);\r
+       /*\r
        // put \n after 80 contiguous characters in the body\r
        std::string::size_type prevpos=0;\r
        std::string::size_type pos=output.find_first_of(whitespace);\r
@@ -28,6 +33,7 @@ const std::string ForumViewThreadPage::FixBody(const std::string &body)
                output.insert(prevpos+80,"\n");\r
                prevpos+=81;\r
        }\r
+       */\r
 \r
        output=StringFunctions::Replace(output,"<","&lt;");\r
        output=StringFunctions::Replace(output,">","&gt;");\r
@@ -42,6 +48,7 @@ const std::string ForumViewThreadPage::GeneratePage(const std::string &method, c
        std::string boardidstr="";\r
        std::string currentpagestr="";\r
        std::string boardname="";\r
+       std::string firstunreadidstr="";\r
 \r
        if(queryvars.find("threadid")!=queryvars.end())\r
        {\r
@@ -58,6 +65,14 @@ const std::string ForumViewThreadPage::GeneratePage(const std::string &method, c
 \r
        content+=CreateForumHeader();\r
 \r
+       SQLite3DB::Statement firstunreadst=m_db->Prepare("SELECT tblMessage.MessageID FROM tblThreadPost INNER JOIN tblMessage ON tblThreadPost.MessageID=tblMessage.MessageID WHERE ThreadID=? AND tblMessage.Read=0;");\r
+       firstunreadst.Bind(0,threadidstr);\r
+       firstunreadst.Step();\r
+       if(firstunreadst.RowReturned())\r
+       {\r
+               firstunreadst.ResultText(0,firstunreadidstr);\r
+       }\r
+\r
        SQLite3DB::Statement updateread=m_db->Prepare("UPDATE tblMessage SET Read=1 WHERE tblMessage.MessageID IN (SELECT MessageID FROM tblThreadPost WHERE ThreadID=?);");\r
        updateread.Bind(0,threadidstr);\r
        updateread.Step();\r
@@ -76,6 +91,12 @@ const std::string ForumViewThreadPage::GeneratePage(const std::string &method, c
        content+="<table class=\"forumheader\">";\r
        content+="<tr>";\r
        content+="<td> Forum : <a href=\"forumthreads.htm?boardid="+boardidstr+"&currentpage="+currentpagestr+"\">"+SanitizeOutput(boardname)+"</a></td>";\r
+       if(firstunreadidstr!="")\r
+       {\r
+               content+="<td>";\r
+               content+="<a href=\"#"+firstunreadidstr+"\">First Unread Message</a>";\r
+               content+="</td>";\r
+       }\r
        content+="</tr>";\r
        content+="</table>\r\n";\r
 \r
@@ -123,7 +144,7 @@ const std::string ForumViewThreadPage::GeneratePage(const std::string &method, c
 \r
                        content+="<table class=\"trust\">";\r
                        content+="<tr>";\r
-                       content+="<td colspan=\"3\" style=\"text-align:center;\"><a href=\"peertrust.htm?namesearch="+name+"\">Trust</a></td>";\r
+                       content+="<td colspan=\"3\" style=\"text-align:center;\"><a href=\"peertrust.htm?namesearch="+StringFunctions::UriEncode(name)+"\">Trust</a></td>";\r
                        content+="</tr>";\r
                        content+="<tr>";\r
                        content+="<td></td><td>Local</td><td>Peer</td>";\r