version 0.3.24
[fms.git] / src / http / pages / forumviewthreadpage.cpp
index 0b69926..d99768d 100644 (file)
@@ -10,6 +10,8 @@ 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
        // 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
@@ -42,6 +44,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 +61,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 +87,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 +140,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