version 0.1.9
[fms.git] / src / http / pages / controlboardpage.cpp
diff --git a/src/http/pages/controlboardpage.cpp b/src/http/pages/controlboardpage.cpp
new file mode 100644 (file)
index 0000000..c50a37f
--- /dev/null
@@ -0,0 +1,130 @@
+#include "../../../include/http/pages/controlboardpage.h"\r
+#include "../../../include/stringfunctions.h"\r
+#include "../../../include/datetime.h"\r
+\r
+#ifdef XMEM\r
+       #include <xmem.h>\r
+#endif\r
+\r
+const std::string ControlBoardPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
+{\r
+       std::string content="";\r
+       int boardid;\r
+       std::string boardidstr;\r
+       std::string boardname;\r
+       int changemessagetrust=0;\r
+       int changetrustlisttrust=0;\r
+       std::string changemessagetruststr;\r
+       std::string changetrustlisttruststr;\r
+\r
+       SQLite3DB::Statement st;\r
+\r
+       if(queryvars.find("formaction")!=queryvars.end())\r
+       {\r
+               if((*queryvars.find("formaction")).second=="remove" && queryvars.find("boardid")!=queryvars.end())\r
+               {\r
+                       int boardid=0;\r
+                       StringFunctions::Convert((*queryvars.find("boardid")).second,boardid);\r
+\r
+                       st=m_db->Prepare("DELETE FROM tblAdministrationBoard WHERE BoardID=?;");\r
+                       st.Bind(0,boardid);\r
+                       st.Step();\r
+\r
+                       st=m_db->Prepare("DELETE FROM tblBoard WHERE BoardID=?;");\r
+                       st.Bind(0,boardid);\r
+                       st.Step();\r
+\r
+                       st=m_db->Prepare("DELETE FROM tblMessage WHERE MessageUUID IN (SELECT MessageUUID FROM tblMessage INNER JOIN tblMessageBoard ON tblMessage.MessageID=tblMessageBoard.MessageID WHERE BoardID=?);");\r
+                       st.Bind(0,boardid);\r
+                       st.Step();\r
+\r
+                       st=m_db->Prepare("DELETE FROm tblMessageBoard WHERE BoardID=?;");\r
+                       st.Bind(0,boardid);\r
+                       st.Step();\r
+\r
+               }\r
+               if((*queryvars.find("formaction")).second=="addboard" && queryvars.find("boardname")!=queryvars.end() && (*queryvars.find("boardname")).second!="")\r
+               {\r
+                       DateTime date;\r
+                       date.SetToGMTime();\r
+                       st=m_db->Prepare("INSERT INTO tblBoard(BoardName,DateAdded) VALUES(?,?);");\r
+                       st.Bind(0,(*queryvars.find("boardname")).second);\r
+                       st.Bind(1,date.Format("%Y-%m-%d %H:%M:%S"));\r
+                       if(st.Step(true))\r
+                       {\r
+                               boardid=st.GetLastInsertRowID();\r
+                               StringFunctions::Convert((*queryvars.find("changemessagetrust")).second,changemessagetrust);\r
+                               StringFunctions::Convert((*queryvars.find("changetrustlisttrust")).second,changetrustlisttrust);\r
+\r
+                               st=m_db->Prepare("INSERT INTO tblAdministrationBoard(BoardID,ModifyLocalMessageTrust,ModifyLocalTrustListTrust) VALUES(?,?,?);");\r
+                               st.Bind(0,boardid);\r
+                               st.Bind(1,changemessagetrust);\r
+                               st.Bind(2,changetrustlisttrust);\r
+                               st.Step();\r
+\r
+                       }\r
+               }\r
+       }\r
+\r
+       content+="<h2>Control Boards</h2>";\r
+       content+="<p class=\"paragraph\">";\r
+       content+="These boards are special administration boards where sent messages will change the trust levels of the parent poster.  These boards can not be used as regular boards, so make the name unique.  The change in trust levels can be negative or positive, but keep in mind that the minimum trust level is 0 and the maximum trust level is 100.  After the boards are created here, you may use your newreader to reply to a message to one or more of these boards, and the previous poster will have his trust levels changed as per the settings for that board.";\r
+       content+="</p>";\r
+\r
+       st=m_db->Prepare("SELECT tblBoard.BoardID,BoardName,ModifyLocalMessageTrust,ModifyLocalTrustListTrust FROM tblBoard INNER JOIN tblAdministrationBoard ON tblBoard.BoardID=tblAdministrationBoard.BoardID ORDER BY BoardName COLLATE NOCASE;");\r
+       st.Step();\r
+\r
+       content+="<table>";\r
+       content+="<tr><th>Board Name</th><th>Change Message Trust</th><th>Change Trust List Trust</th></tr>\r\n";\r
+       while(st.RowReturned())\r
+       {\r
+               st.ResultText(0,boardidstr);\r
+               st.ResultText(1,boardname);\r
+               st.ResultText(2,changemessagetruststr);\r
+               st.ResultText(3,changetrustlisttruststr);\r
+\r
+               content+="<tr>";\r
+               content+="<td>"+boardname+"</td>\r\n";\r
+               content+="<td>"+changemessagetruststr+"</td>\r\n";\r
+               content+="<td>"+changetrustlisttruststr+"</td>\r\n";\r
+               content+="<td>";\r
+               content+="<form name=\"frmremove\" method=\"POST\">";\r
+               content+="<input type=\"hidden\" name=\"formaction\" value=\"remove\">";\r
+               content+="<input type=\"hidden\" name=\"boardid\" value=\""+boardidstr+"\">";\r
+               content+="<input type=\"submit\" value=\"Remove\">";\r
+               content+="</form>";\r
+               content+="</td>";\r
+               content+="</tr>\r\n";\r
+               st.Step();\r
+       }\r
+\r
+       content+="<tr>";\r
+       content+="<td>";\r
+       content+="<form name=\"frmaddboard\" method=\"POST\">";\r
+       content+="<input type=\"hidden\" name=\"formaction\" value=\"addboard\">";\r
+       content+="<input type=\"text\" name=\"boardname\">";\r
+       content+="</td>\r\n<td>";\r
+       content+="<input type=\"text\" name=\"changemessagetrust\" size=\"2\" maxlength=\"3\">";\r
+       content+="</td>\r\n<td>";\r
+       content+="<input type=\"text\" name=\"changetrustlisttrust\" size=\"2\" maxlength=\"3\">";\r
+       content+="</td>\r\n<td>";\r
+       content+="<input type=\"submit\" value=\"Add\">";\r
+       content+="</form>";\r
+       content+="</td>\r\n";\r
+       content+="</tr>";\r
+       content+="</table>";\r
+\r
+       return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
+}\r
+\r
+const bool ControlBoardPage::WillHandleURI(const std::string &uri)\r
+{\r
+       if(uri.find("controlboard.")!=std::string::npos)\r
+       {\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               return false;\r
+       }\r
+}\r