X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fhttp%2Fpages%2Fboardspage.cpp;fp=src%2Fhttp%2Fpages%2Fboardspage.cpp;h=8d10aa64586b9887e71f96d62d1af6d9259e4973;hb=ee580d19b7920904587e18d72a3465d52eab6204;hp=0000000000000000000000000000000000000000;hpb=52c0819bfc1d083c6e0738f75f0d7eeba521295a;p=fms.git diff --git a/src/http/pages/boardspage.cpp b/src/http/pages/boardspage.cpp new file mode 100644 index 0000000..8d10aa6 --- /dev/null +++ b/src/http/pages/boardspage.cpp @@ -0,0 +1,258 @@ +#include "../../../include/http/pages/boardspage.h" +#include "../../../include/stringfunctions.h" +#include "../../../include/datetime.h" + +#ifdef XMEM + #include +#endif + +const std::string BoardsPage::BuildQueryString(const long startrow, const std::string &boardsearch) +{ + std::string returnval=""; + std::string tempval=""; + + if(startrow>=0) + { + StringFunctions::Convert(startrow,tempval); + returnval+="startrow="+tempval; + } + + if(boardsearch!="") + { + if(returnval!="") + { + returnval+="&"; + } + returnval+="boardsearch="+boardsearch; + } + + return returnval; + +} + +const std::string BoardsPage::GeneratePage(const std::string &method, const std::map &queryvars) +{ + int boardcount=0; + std::string content=""; + int rownum=0; + int rowsperpage=25; + std::string rowsperpagestr="25"; + int startrow=0; + std::string startrowstr="0"; + std::string boardsearch=""; + std::string sql=""; + DateTime now; + now.SetToGMTime(); + + if(queryvars.find("formaction")!=queryvars.end()) + { + if((*queryvars.find("formaction")).second=="addboard" && queryvars.find("boardname")!=queryvars.end() && queryvars.find("boarddescription")!=queryvars.end()) + { + std::string boardname=""; + std::string boarddescription=""; + + boardname=(*queryvars.find("boardname")).second; + boarddescription=(*queryvars.find("boarddescription")).second; + + SQLite3DB::Statement addst=m_db->Prepare("INSERT INTO tblBoard(BoardName,BoardDescription,DateAdded) VALUES(?,?,?);"); + addst.Bind(0,boardname); + addst.Bind(1,boarddescription); + addst.Bind(2,now.Format("%Y-%m-%d %H:%M:%S")); + addst.Step(); + } + if((*queryvars.find("formaction")).second=="update") + { + int boardid; + std::vector boardids; + std::vector olddescriptions; + std::vector descriptions; + std::vector oldsavemessages; + std::vector savemessages; + + CreateArgArray(queryvars,"boardid",boardids); + CreateArgArray(queryvars,"oldboarddescription",olddescriptions); + CreateArgArray(queryvars,"boarddescription",descriptions); + CreateArgArray(queryvars,"oldsavereceivedmessages",oldsavemessages); + CreateArgArray(queryvars,"savereceivedmessages",savemessages); + + olddescriptions.resize(boardids.size(),""); + descriptions.resize(boardids.size(),""); + oldsavemessages.resize(boardids.size(),""); + savemessages.resize(boardids.size(),""); + + SQLite3DB::Statement updatest=m_db->Prepare("UPDATE tblBoard SET BoardDescription=?, SaveReceivedMessages=? WHERE BoardID=?;"); + + for(int i=0; iPrepare(sql); + if(boardsearch!="") + { + st.Bind(0,boardsearch); + st.Bind(1,boardsearch); + } + st.Step(); + if(st.RowReturned()) + { + st.ResultInt(0,boardcount); + } + st.Finalize(); + + + sql="SELECT BoardID,BoardName,BoardDescription,SaveReceivedMessages FROM tblBoard WHERE BoardID NOT IN (SELECT BoardID FROM tblAdministrationBoard)"; + if(boardsearch!="") + { + sql+=" AND (BoardName LIKE '%' || ? || '%' OR BoardDescription LIKE '%' || ? || '%')"; + } + sql+=" ORDER BY BoardName COLLATE NOCASE"; + sql+=" LIMIT "+startrowstr+","+rowsperpagestr+";"; + + st=m_db->Prepare(sql); + if(boardsearch!="") + { + st.Bind(0,boardsearch); + st.Bind(1,boardsearch); + } + st.Step(); + + content+=""; + + content+=""; + content+=""; + content+=""; + + content+=""; + content+=""; + content+=""; + + content+=""; + content+=""; + content+=""; + content+=""; + while(st.RowReturned() && rownum"; + content+=""; + content+=""; + cols+=1; + } + if(startrow+rowsperpageNext Page -->"; + } + content+=""; + } + + content+=""; + content+=""; + content+=""; + content+="
"; + content+="
"; + content+="

NameDescriptionSave Received Messages
"; + content+=""; + content+=""; + content+=""; + content+="0 || startrow+rowsperpage0) + { + StringFunctions::Convert(startrow-rowsperpage,tempstr); + content+="<-- Previous Page
"; + + return "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"+StringFunctions::Replace(m_template,"[CONTENT]",content); +} + +const bool BoardsPage::WillHandleURI(const std::string &uri) +{ + if(uri.find("boards.")!=std::string::npos) + { + return true; + } + else + { + return false; + } +}