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