version 0.3.0
[fms.git] / src / http / pages / boardspage.cpp
index 8d10aa6..43870ce 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,11 +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+="</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