version 0.3.6
[fms.git] / src / http / pages / boardspage.cpp
index f143d32..8b2866e 100644 (file)
@@ -1,6 +1,8 @@
 #include "../../../include/http/pages/boardspage.h"\r
 #include "../../../include/stringfunctions.h"\r
-#include "../../../include/datetime.h"\r
+\r
+#include <Poco/DateTime.h>\r
+#include <Poco/DateTimeFormatter.h>\r
 \r
 #ifdef XMEM\r
        #include <xmem.h>\r
@@ -41,8 +43,7 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
        std::string startrowstr="0";\r
        std::string boardsearch="";\r
        std::string sql="";\r
-       DateTime now;\r
-       now.SetToGMTime();\r
+       Poco::DateTime now;\r
 \r
        if(queryvars.find("formaction")!=queryvars.end())\r
        {\r
@@ -52,14 +53,20 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
                        std::string boarddescription="";\r
 \r
                        boardname=(*queryvars.find("boardname")).second;\r
+                       StringFunctions::LowerCase(boardname,boardname);\r
                        boarddescription=(*queryvars.find("boarddescription")).second;\r
 \r
-                       SQLite3DB::Statement addst=m_db->Prepare("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded) VALUES(?,?,?);");\r
+                       SQLite3DB::Statement addst=m_db->Prepare("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded,AddedMethod) VALUES(?,?,?,?);");\r
                        addst.Bind(0,boardname);\r
                        addst.Bind(1,boarddescription);\r
-                       addst.Bind(2,now.Format("%Y-%m-%d %H:%M:%S"));\r
+                       addst.Bind(2,Poco::DateTimeFormatter::format(now,"%Y-%m-%d %H:%M:%S"));\r
+                       addst.Bind(3,"Added manually");\r
                        addst.Step();\r
                }\r
+               if((*queryvars.find("formaction")).second=="remove0messages")\r
+               {\r
+                       m_db->Execute("DELETE FROM tblBoard WHERE BoardID IN (SELECT BoardID FROM vwBoardStats WHERE MessageCount=0 AND BoardID NOT IN (SELECT BoardID FROM tblAdministrationBoard));");\r
+               }\r
                if((*queryvars.find("formaction")).second=="update")\r
                {\r
                        int boardid;\r
@@ -147,7 +154,7 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
        st.Finalize();\r
 \r
 \r
-       sql="SELECT BoardID,BoardName,BoardDescription,SaveReceivedMessages FROM tblBoard WHERE BoardID NOT IN (SELECT BoardID FROM tblAdministrationBoard)";\r
+       sql="SELECT BoardID,BoardName,BoardDescription,SaveReceivedMessages,AddedMethod FROM tblBoard WHERE BoardID NOT IN (SELECT BoardID FROM tblAdministrationBoard)";\r
        if(boardsearch!="")\r
        {\r
                sql+=" AND (BoardName LIKE '%' || ? || '%' OR BoardDescription LIKE '%' || ? || '%')";\r
@@ -172,12 +179,18 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
        content+="</tr>";\r
 \r
        content+="<tr>";\r
-       content+="<td><form name=\"frmaddboard\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"addboard\"><input type=\"text\" name=\"boardname\"></td><td><input type=\"text\" name=\"boarddescription\" size=\"40\"></td><td><input type=\"submit\" value=\"Add Board\"></form></td>";\r
+       content+="<td colspan=\"3\"><center>";\r
+       content+="<form name=\"frmremoveboard\" action=\"boards.htm\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"remove0messages\">Remove boards with 0 messages<input type=\"submit\" value=\"Remove\"></form>";\r
+       content+="</center></td>";\r
+       content+="</tr>";\r
+\r
+       content+="<tr>";\r
+       content+="<td><form name=\"frmaddboard\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"addboard\"><input type=\"text\" name=\"boardname\"></td><td><input type=\"text\" name=\"boarddescription\" size=\"40\" maxlength=\"50\"></td><td><input type=\"submit\" value=\"Add Board\"></form></td>";\r
        content+="</tr>";\r
 \r
-       content+="<tr><td colspan=\"3\"><hr><form name=\"frmboards\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"update\"></td></tr>";\r
+       content+="<tr><td colspan=\"4\"><hr><form name=\"frmboards\" method=\"POST\"><input type=\"hidden\" name=\"formaction\" value=\"update\"></td></tr>";\r
        content+="<tr>";\r
-       content+="<th>Name</th><th>Description</th><th>Save Received Messages *</th>";\r
+       content+="<th>Name</th><th>Description</th><th>Save Received Messages *</th><th>Added Method</th>";\r
        content+="</tr>";       \r
        while(st.RowReturned() && rownum<rowsperpage)\r
        {\r
@@ -186,11 +199,13 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
                std::string boardname="";\r
                std::string boarddescription="";\r
                std::string savereceivedmessages="";\r
+               std::string addedmethod="";\r
 \r
                st.ResultText(0,boardidstr);\r
                st.ResultText(1,boardname);\r
                st.ResultText(2,boarddescription);\r
                st.ResultText(3,savereceivedmessages);\r
+               st.ResultText(4,addedmethod);\r
 \r
                StringFunctions::Convert(rownum,rownumstr);\r
 \r
@@ -198,7 +213,7 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
                content+="<td>"+SanitizeOutput(boardname)+"</td>";\r
                content+="<td><input type=\"hidden\" name=\"boardid["+rownumstr+"]\" value=\""+boardidstr+"\">";\r
                content+="<input type=\"hidden\" name=\"oldboarddescription["+rownumstr+"]\" value=\""+StringFunctions::Replace(SanitizeOutput(boarddescription),"&nbsp;"," ")+"\">";\r
-               content+="<input type=\"text\" name=\"boarddescription["+rownumstr+"]\" value=\""+SanitizeOutput(boarddescription)+"\" size=\"40\"></td>";\r
+               content+="<input type=\"text\" name=\"boarddescription["+rownumstr+"]\" value=\""+SanitizeOutput(boarddescription)+"\" size=\"40\" maxlength=\"50\"></td>";\r
                content+="<td>";\r
                content+="<input type=\"hidden\" name=\"oldsavereceivedmessages["+rownumstr+"]\" value=\""+savereceivedmessages+"\">";\r
                content+="<input type=\"checkbox\" name=\"savereceivedmessages["+rownumstr+"]\" value=\"true\"";\r
@@ -208,6 +223,7 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
                }\r
                content+=">";\r
                content+="</td>";\r
+               content+="<td class=\"smaller\">"+SanitizeOutput(addedmethod)+"</td>";\r
                content+="</tr>\r\n";\r
                st.Step();\r
                rownum++;\r
@@ -227,7 +243,7 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
                }\r
                if(startrow+rowsperpage<boardcount)\r
                {\r
-                       while(cols<2)\r
+                       while(cols<3)\r
                        {\r
                                content+="<td></td>";\r
                                cols++;\r
@@ -238,14 +254,14 @@ const std::string BoardsPage::GeneratePage(const std::string &method, const std:
        }\r
 \r
        content+="<tr>";\r
-       content+="<td colspan=\"3\"><center><input type=\"submit\" value=\"Update\"></center></form></td>";\r
+       content+="<td colspan=\"4\"><center><input type=\"submit\" value=\"Update\"></center></form></td>";\r
        content+="</tr>";\r
        content+="</table>";\r
        content+="<p class=\"paragraph\">";\r
-       content+="* If you uncheck this box, any new messages you download that are posted to this board will be discarded.";\r
+       content+="* If you uncheck this box, any new messages you download that are posted to this board will be discarded.  When multiple local identities are used, it is best not to discard messages from any boards, as identifying which identities are the same person is much easier when their message lists are missing messages from the same boards.";\r
        content+="</p>";\r
 \r
-       return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
+       return StringFunctions::Replace(m_template,"[CONTENT]",content);\r
 }\r
 \r
 const bool BoardsPage::WillHandleURI(const std::string &uri)\r