1 #include "../../../include/http/pages/forumcreatepostpage.h"
\r
2 #include "../../../include/stringfunctions.h"
\r
3 #include "../../../include/message.h"
\r
9 const std::string ForumCreatePostPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)
\r
12 std::string content="";
\r
13 std::string boardidstr="";
\r
14 std::string currentpagestr="";
\r
15 std::string threadidstr="";
\r
16 std::string replytomessageidstr="";
\r
17 std::string error="";
\r
18 std::string boardname="";
\r
19 std::string subject="";
\r
20 std::string body="";
\r
21 std::string localidentityidstr="";
\r
23 if(queryvars.find("boardid")!=queryvars.end())
\r
25 boardidstr=(*queryvars.find("boardid")).second;
\r
27 if(queryvars.find("currentpage")!=queryvars.end())
\r
29 currentpagestr=(*queryvars.find("currentpage")).second;
\r
31 if(queryvars.find("threadid")!=queryvars.end())
\r
33 threadidstr=(*queryvars.find("threadid")).second;
\r
35 if(queryvars.find("replytomessageid")!=queryvars.end())
\r
37 replytomessageidstr=(*queryvars.find("replytomessageid")).second;
\r
40 if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="send")
\r
42 if(queryvars.find("localidentityid")!=queryvars.end() && (*queryvars.find("localidentityid")).second!="")
\r
44 localidentityidstr=(*queryvars.find("localidentityid")).second;
\r
48 error="You must select a local identity as the sender<br />";
\r
51 if(queryvars.find("subject")!=queryvars.end() && (*queryvars.find("subject")).second!="")
\r
53 subject=(*queryvars.find("subject")).second;
\r
57 error+="You must enter a subject<br />";
\r
60 if(queryvars.find("body")!=queryvars.end() && (*queryvars.find("body")).second!="")
\r
62 body=(*queryvars.find("body")).second;
\r
63 body=StringFunctions::Replace(body,"\r\n","\n");
\r
67 error+="You must enter a message body</br />";
\r
74 long localidentityid=-1;
\r
76 std::string references="";
\r
78 StringFunctions::Convert(localidentityidstr,localidentityid);
\r
79 StringFunctions::Convert(boardidstr,boardid);
\r
81 if(replytomessageidstr!="")
\r
83 SQLite3DB::Statement st=m_db->Prepare("SELECT MessageUUID FROM tblMessage WHERE MessageID=?;");
\r
84 st.Bind(0,replytomessageidstr);
\r
86 if(st.RowReturned())
\r
88 st.ResultText(0,references);
\r
92 if(mess.Create(localidentityid,boardid,subject,body,references))
\r
94 if(mess.PostedToAdministrationBoard()==true)
\r
96 mess.HandleAdministrationMessage();
\r
98 if(mess.StartFreenetInsert())
\r
105 error="Could not create message";
\r
111 if(replytomessageidstr!="")
\r
113 SQLite3DB::Statement replyst=m_db->Prepare("SELECT Subject, Body FROM tblMessage WHERE MessageID=?;");
\r
114 replyst.Bind(0,replytomessageidstr);
\r
116 if(replyst.RowReturned())
\r
118 replyst.ResultText(0,subject);
\r
119 replyst.ResultText(1,body);
\r
121 if(subject.size()<3 || (subject.substr(0,3)!="re:" && subject.substr(0,3)!="Re:"))
\r
123 subject="Re: "+subject;
\r
136 std::string::size_type pos=body.find("\n");
\r
137 while(pos!=std::string::npos)
\r
139 if(pos+1<body.size() && body[pos+1]=='>')
\r
141 body.insert(pos+1,">");
\r
145 body.insert(pos+1,"> ");
\r
147 pos=body.find("\n",pos+2);
\r
155 SQLite3DB::Statement boardnamest=m_db->Prepare("SELECT BoardName FROM tblBoard WHERE BoardID=?;");
\r
156 boardnamest.Bind(0,boardidstr);
\r
157 boardnamest.Step();
\r
158 if(boardnamest.RowReturned())
\r
160 boardnamest.ResultText(0,boardname);
\r
163 content+=CreateForumHeader();
\r
165 content+="<table class=\"forumheader\">";
\r
167 content+="<td>Forum : <a href=\"forumthreads.htm?boardid="+boardidstr+"¤tpage="+currentpagestr+"\">"+SanitizeOutput(boardname)+"</a></td>";
\r
169 content+="</table>\r\n";
\r
173 content+="<div class=\"error\">"+error+"</div>\r\n";
\r
178 content+="<form name=\"frmcreatemessage\" method=\"post\" action=\"forumcreatepost.htm\">";
\r
179 content+="<input type=\"hidden\" name=\"boardid\" value=\""+boardidstr+"\">";
\r
180 content+="<input type=\"hidden\" name=\"currentpage\" value=\""+currentpagestr+"\">";
\r
181 content+="<input type=\"hidden\" name=\"threadid\" value=\""+threadidstr+"\">";
\r
182 content+="<input type=\"hidden\" name=\"replytomessageid\" value=\""+replytomessageidstr+"\">";
\r
183 content+="<input type=\"hidden\" name=\"formaction\" value=\"send\">";
\r
184 content+="<table class=\"createpost\">";
\r
185 content+="<tr><td class=\"identity\">From</td><td>"+LocalIdentityDropDown("localidentityid",localidentityidstr)+"</td></tr>";
\r
186 content+="<tr><td class=\"subject\">Subject</td><td><input type=\"text\" name=\"subject\" maxlength=\"60\" size=\"60\" value=\""+SanitizeOutput(subject)+"\"></td></tr>";
\r
187 content+="<tr><td class=\"body\">Message</td><td><textarea name=\"body\" cols=\"80\" rows=\"30\">"+SanitizeTextAreaOutput(body)+"</textarea></td></tr>";
\r
188 content+="<tr><td colspan=\"2\" class=\"send\"><input type=\"submit\" value=\"Send\"></td></tr>";
\r
189 content+="</table>\r\n";
\r
190 content+="</form>";
\r
194 content+="You have sent your message. It will show up in the thread after it has been successfully inserted and retrieved by FMS.";
\r
197 return StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
200 const std::string ForumCreatePostPage::LocalIdentityDropDown(const std::string &name, const std::string &selectedid)
\r
202 std::string html="<select name=\""+name+"\">";
\r
203 SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID, Name FROM tblLocalIdentity ORDER BY Name COLLATE NOCASE ASC;");
\r
207 html+="<option value=\"\" selected></option>";
\r
211 while(st.RowReturned())
\r
214 std::string name="";
\r
215 st.ResultText(0,id);
\r
216 st.ResultText(1,name);
\r
217 html+="<option value=\""+id+"\"";
\r
222 html+=">"+FixFromName(name)+"</option>";
\r