X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmessage.cpp;h=0445e294e71125b5612aae3978b82a1b83456b12;hb=56f67ecca96efc7b72d03c95c8c42cfb66e31468;hp=e078c95c84a2a746d198b644c3c347d842c25343;hpb=b88f50bfec6dbcd169bb8285e7c42b93baf52b6b;p=fms.git diff --git a/src/message.cpp b/src/message.cpp index e078c95..0445e29 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -49,6 +49,63 @@ const bool Message::CheckForAdministrationBoard(const std::vector & return false; } +const bool Message::Create(const long localidentityid, const long boardid, const std::string &subject, const std::string &body, const std::string &references) +{ + Initialize(); + + Poco::UUIDGenerator uuidgen; + Poco::UUID uuid; + + // get header info + // date is always set to now regardless of what message has + m_datetime=Poco::Timestamp(); + + // messageuuid is always a unique id we generate regardless of message message-id + try + { + uuid=uuidgen.createRandom(); + m_messageuuid=uuid.toString(); + StringFunctions::UpperCase(m_messageuuid,m_messageuuid); + } + catch(...) + { + m_log->fatal("Message::ParseNNTPMessage could not create UUID"); + } + + // get from + SQLite3DB::Statement st=m_db->Prepare("SELECT Name FROM tblLocalIdentity WHERE LocalIdentityID=?;"); + st.Bind(0,localidentityid); + st.Step(); + if(st.RowReturned()) + { + st.ResultText(0,m_fromname); + } + + // get boards posted to + std::string boardname=""; + SQLite3DB::Statement boardst=m_db->Prepare("SELECT BoardName FROM tblBoard WHERE BoardID=?;"); + boardst.Bind(0,boardid); + boardst.Step(); + if(boardst.RowReturned()) + { + boardst.ResultText(0,boardname); + } + + m_boards.push_back(boardname); + m_replyboardname=boardname; + + m_subject=subject; + + m_body=body; + + if(references!="") + { + m_inreplyto[0]=references; + } + + return true; +} + const int Message::FindLocalIdentityID(const std::string &name) { SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID FROM tblLocalIdentity WHERE Name=?;"); @@ -639,6 +696,12 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage) // remove any path folding m_replyboardname=StringFunctions::Replace(m_replyboardname,"\r\n",""); m_replyboardname=StringFunctions::Replace(m_replyboardname,"\t",""); + std::vector parts; + StringFunctions::Split(m_replyboardname,",",parts); + if(parts.size()>1) + { + m_replyboardname=parts[0]; + } } else {