1 #include "../../../include/http/pages/forumcreatepostpage.h"
\r
2 #include "../../../include/stringfunctions.h"
\r
3 #include "../../../include/message.h"
\r
4 #include "../../../include/unicode/unicodeformatter.h"
\r
10 const std::string ForumCreatePostPage::GeneratePage(const std::string &method, const std::map<std::string,std::string> &queryvars)
\r
13 std::string content="";
\r
14 std::string boardidstr="";
\r
15 std::string currentpagestr="";
\r
16 std::string threadidstr="";
\r
17 std::string replytomessageidstr="";
\r
18 std::string error="";
\r
19 std::string boardname="";
\r
20 std::string subject="";
\r
21 std::string body="";
\r
22 std::string localidentityidstr="";
\r
24 if(queryvars.find("boardid")!=queryvars.end())
\r
26 boardidstr=(*queryvars.find("boardid")).second;
\r
28 if(queryvars.find("currentpage")!=queryvars.end())
\r
30 currentpagestr=(*queryvars.find("currentpage")).second;
\r
32 if(queryvars.find("threadid")!=queryvars.end())
\r
34 threadidstr=(*queryvars.find("threadid")).second;
\r
36 if(queryvars.find("replytomessageid")!=queryvars.end())
\r
38 replytomessageidstr=(*queryvars.find("replytomessageid")).second;
\r
41 if(queryvars.find("formaction")!=queryvars.end() && (*queryvars.find("formaction")).second=="send" && ValidateFormPassword(queryvars))
\r
43 if(queryvars.find("localidentityid")!=queryvars.end() && (*queryvars.find("localidentityid")).second!="")
\r
45 localidentityidstr=(*queryvars.find("localidentityid")).second;
\r
49 error="You must select a local identity as the sender<br />";
\r
52 if(queryvars.find("subject")!=queryvars.end() && (*queryvars.find("subject")).second!="")
\r
54 subject=(*queryvars.find("subject")).second;
\r
58 error+="You must enter a subject<br />";
\r
61 if(queryvars.find("body")!=queryvars.end() && (*queryvars.find("body")).second!="")
\r
63 body=(*queryvars.find("body")).second;
\r
64 body=StringFunctions::Replace(body,"\r\n","\n");
\r
65 UnicodeFormatter::LineWrap(body,80,">",body);
\r
69 error+="You must enter a message body</br />";
\r
76 long localidentityid=-1;
\r
78 std::string references="";
\r
80 StringFunctions::Convert(localidentityidstr,localidentityid);
\r
81 StringFunctions::Convert(boardidstr,boardid);
\r
83 if(replytomessageidstr!="")
\r
85 SQLite3DB::Statement st=m_db->Prepare("SELECT MessageUUID FROM tblMessage WHERE MessageID=?;");
\r
86 st.Bind(0,replytomessageidstr);
\r
88 if(st.RowReturned())
\r
90 st.ResultText(0,references);
\r
94 if(mess.Create(localidentityid,boardid,subject,body,references))
\r
96 if(mess.PostedToAdministrationBoard()==true)
\r
98 mess.HandleAdministrationMessage();
\r
100 if(mess.StartFreenetInsert())
\r
107 error="Could not create message";
\r
113 if(replytomessageidstr!="")
\r
115 std::string fromname="";
\r
116 SQLite3DB::Statement replyst=m_db->Prepare("SELECT Subject, Body, FromName FROM tblMessage WHERE MessageID=?;");
\r
117 replyst.Bind(0,replytomessageidstr);
\r
119 if(replyst.RowReturned())
\r
121 replyst.ResultText(0,subject);
\r
122 replyst.ResultText(1,body);
\r
123 replyst.ResultText(2,fromname);
\r
125 if(subject.size()<3 || (subject.substr(0,3)!="re:" && subject.substr(0,3)!="Re:"))
\r
127 subject="Re: "+subject;
\r
140 std::string::size_type pos=body.find("\n");
\r
141 while(pos!=std::string::npos)
\r
143 if(pos+1<body.size() && body[pos+1]=='>')
\r
145 body.insert(pos+1,">");
\r
149 body.insert(pos+1,"> ");
\r
151 pos=body.find("\n",pos+2);
\r
155 body=fromname+" wrote:\n"+body;
\r
161 SQLite3DB::Statement boardnamest=m_db->Prepare("SELECT BoardName FROM tblBoard WHERE BoardID=?;");
\r
162 boardnamest.Bind(0,boardidstr);
\r
163 boardnamest.Step();
\r
164 if(boardnamest.RowReturned())
\r
166 boardnamest.ResultText(0,boardname);
\r
169 content+=CreateForumHeader();
\r
171 content+="<table class=\"forumheader\">";
\r
173 content+="<td>Forum : <a href=\"forumthreads.htm?boardid="+boardidstr+"¤tpage="+currentpagestr+"\">"+SanitizeOutput(boardname)+"</a></td>";
\r
175 content+="</table>\r\n";
\r
179 content+="<div class=\"error\">"+error+"</div>\r\n";
\r
184 content+="<form name=\"frmcreatemessage\" method=\"post\" action=\"forumcreatepost.htm\">";
\r
185 content+="<input type=\"hidden\" name=\"boardid\" value=\""+boardidstr+"\">";
\r
186 content+="<input type=\"hidden\" name=\"currentpage\" value=\""+currentpagestr+"\">";
\r
187 content+="<input type=\"hidden\" name=\"threadid\" value=\""+threadidstr+"\">";
\r
188 content+="<input type=\"hidden\" name=\"replytomessageid\" value=\""+replytomessageidstr+"\">";
\r
189 content+="<input type=\"hidden\" name=\"formaction\" value=\"send\">";
\r
190 content+=CreateFormPassword();
\r
191 content+="<table class=\"createpost\">";
\r
192 content+="<tr><td class=\"identity\">From</td><td>"+LocalIdentityDropDown("localidentityid",localidentityidstr)+"</td></tr>";
\r
193 content+="<tr><td class=\"subject\">Subject</td><td><input type=\"text\" name=\"subject\" maxlength=\"60\" size=\"60\" value=\""+SanitizeOutput(subject)+"\"></td></tr>";
\r
194 content+="<tr><td class=\"body\">Message</td><td><textarea name=\"body\" cols=\"80\" rows=\"30\">"+SanitizeTextAreaOutput(body)+"</textarea></td></tr>";
\r
195 content+="<tr><td colspan=\"2\" class=\"send\"><input type=\"submit\" value=\"Send\"></td></tr>";
\r
196 content+="</table>\r\n";
\r
197 content+="</form>";
\r
201 content+="You have sent your message. It will show up in the thread after it has been successfully inserted and retrieved by FMS.";
\r
204 return StringFunctions::Replace(m_template,"[CONTENT]",content);
\r
207 const std::string ForumCreatePostPage::LocalIdentityDropDown(const std::string &name, const std::string &selectedid)
\r
209 std::string html="<select name=\""+name+"\">";
\r
210 SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID, Name FROM tblLocalIdentity ORDER BY Name COLLATE NOCASE ASC;");
\r
214 html+="<option value=\"\" selected></option>";
\r
218 while(st.RowReturned())
\r
221 std::string name="";
\r
222 st.ResultText(0,id);
\r
223 st.ResultText(1,name);
\r
224 html+="<option value=\""+id+"\"";
\r
229 html+=">"+FixFromName(name)+"</option>";
\r