c685ca42d0e95079c742bc044ed9b06ff23e124c
[fms.git] / src / http / pages / controlboardpage.cpp
1 #include "../../../include/http/pages/controlboardpage.h"\r
2 #include "../../../include/stringfunctions.h"\r
3 #include "../../../include/datetime.h"\r
4 \r
5 #ifdef XMEM\r
6         #include <xmem.h>\r
7 #endif\r
8 \r
9 const std::string ControlBoardPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)\r
10 {\r
11         std::string content="";\r
12         int boardid;\r
13         std::string boardidstr;\r
14         std::string boardname;\r
15         int changemessagetrust=0;\r
16         int changetrustlisttrust=0;\r
17         std::string changemessagetruststr;\r
18         std::string changetrustlisttruststr;\r
19 \r
20         SQLite3DB::Statement st;\r
21 \r
22         if(queryvars.find("formaction")!=queryvars.end())\r
23         {\r
24                 if((*queryvars.find("formaction")).second=="remove" && queryvars.find("boardid")!=queryvars.end())\r
25                 {\r
26                         int boardid=0;\r
27                         StringFunctions::Convert((*queryvars.find("boardid")).second,boardid);\r
28 \r
29                         st=m_db->Prepare("DELETE FROM tblAdministrationBoard WHERE BoardID=?;");\r
30                         st.Bind(0,boardid);\r
31                         st.Step();\r
32 \r
33                         st=m_db->Prepare("DELETE FROM tblBoard WHERE BoardID=?;");\r
34                         st.Bind(0,boardid);\r
35                         st.Step();\r
36 \r
37                         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
38                         st.Bind(0,boardid);\r
39                         st.Step();\r
40 \r
41                         st=m_db->Prepare("DELETE FROm tblMessageBoard WHERE BoardID=?;");\r
42                         st.Bind(0,boardid);\r
43                         st.Step();\r
44 \r
45                 }\r
46                 if((*queryvars.find("formaction")).second=="addboard" && queryvars.find("boardname")!=queryvars.end() && (*queryvars.find("boardname")).second!="")\r
47                 {\r
48                         DateTime date;\r
49                         date.SetToGMTime();\r
50                         st=m_db->Prepare("INSERT INTO tblBoard(BoardName,DateAdded) VALUES(?,?);");\r
51                         st.Bind(0,(*queryvars.find("boardname")).second);\r
52                         st.Bind(1,date.Format("%Y-%m-%d %H:%M:%S"));\r
53                         if(st.Step(true))\r
54                         {\r
55                                 boardid=st.GetLastInsertRowID();\r
56                                 StringFunctions::Convert((*queryvars.find("changemessagetrust")).second,changemessagetrust);\r
57                                 StringFunctions::Convert((*queryvars.find("changetrustlisttrust")).second,changetrustlisttrust);\r
58 \r
59                                 st=m_db->Prepare("INSERT INTO tblAdministrationBoard(BoardID,ModifyLocalMessageTrust,ModifyLocalTrustListTrust) VALUES(?,?,?);");\r
60                                 st.Bind(0,boardid);\r
61                                 st.Bind(1,changemessagetrust);\r
62                                 st.Bind(2,changetrustlisttrust);\r
63                                 st.Step();\r
64 \r
65                         }\r
66                 }\r
67         }\r
68 \r
69         content+="<h2>Control Boards</h2>";\r
70         content+="<p class=\"paragraph\">";\r
71         content+="These boards are special administration boards where sent messages will change the trust levels of the parent poster by ADDING these numbers to their current trust level.  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
72         content+="</p>";\r
73 \r
74         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
75         st.Step();\r
76 \r
77         content+="<table>";\r
78         content+="<tr><th>Board Name</th><th>Change Message Trust</th><th>Change Trust List Trust</th></tr>\r\n";\r
79         while(st.RowReturned())\r
80         {\r
81                 st.ResultText(0,boardidstr);\r
82                 st.ResultText(1,boardname);\r
83                 st.ResultText(2,changemessagetruststr);\r
84                 st.ResultText(3,changetrustlisttruststr);\r
85 \r
86                 content+="<tr>";\r
87                 content+="<td>"+boardname+"</td>\r\n";\r
88                 content+="<td>"+changemessagetruststr+"</td>\r\n";\r
89                 content+="<td>"+changetrustlisttruststr+"</td>\r\n";\r
90                 content+="<td>";\r
91                 content+="<form name=\"frmremove\" method=\"POST\">";\r
92                 content+="<input type=\"hidden\" name=\"formaction\" value=\"remove\">";\r
93                 content+="<input type=\"hidden\" name=\"boardid\" value=\""+boardidstr+"\">";\r
94                 content+="<input type=\"submit\" value=\"Remove\">";\r
95                 content+="</form>";\r
96                 content+="</td>";\r
97                 content+="</tr>\r\n";\r
98                 st.Step();\r
99         }\r
100 \r
101         content+="<tr>";\r
102         content+="<td>";\r
103         content+="<form name=\"frmaddboard\" method=\"POST\">";\r
104         content+="<input type=\"hidden\" name=\"formaction\" value=\"addboard\">";\r
105         content+="<input type=\"text\" name=\"boardname\">";\r
106         content+="</td>\r\n<td>";\r
107         content+="<input type=\"text\" name=\"changemessagetrust\" size=\"2\" maxlength=\"3\">";\r
108         content+="</td>\r\n<td>";\r
109         content+="<input type=\"text\" name=\"changetrustlisttrust\" size=\"2\" maxlength=\"3\">";\r
110         content+="</td>\r\n<td>";\r
111         content+="<input type=\"submit\" value=\"Add\">";\r
112         content+="</form>";\r
113         content+="</td>\r\n";\r
114         content+="</tr>";\r
115         content+="</table>";\r
116 \r
117         return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content);\r
118 }\r
119 \r
120 const bool ControlBoardPage::WillHandleURI(const std::string &uri)\r
121 {\r
122         if(uri.find("controlboard.")!=std::string::npos)\r
123         {\r
124                 return true;\r
125         }\r
126         else\r
127         {\r
128                 return false;\r
129         }\r
130 }\r