1 #include "../include/messagethread.h"
\r
2 #include "../include/stringfunctions.h"
\r
10 void MessageThread::AddChildren(const long messageid, const long level, const long boardid)
\r
12 SQLite3DB::Statement st=m_db->Prepare("SELECT tblMessageReplyTo.MessageID, tblMessage1.Subject, tblMessage1.FromName, tblMessage1.MessageDate || ' ' || tblMessage1.MessageTime FROM tblMessage INNER JOIN tblMessageReplyTo ON tblMessage.MessageUUID=tblMessageReplyTo.ReplyToMessageUUID INNER JOIN tblMessage AS 'tblMessage1' ON tblMessageReplyTo.MessageID=tblMessage1.MessageID INNER JOIN tblMessageBoard ON tblMessage1.MessageID=tblMessageBoard.MessageID WHERE tblMessage.MessageID=? AND tblMessageBoard.BoardID=? AND tblMessageReplyTo.ReplyOrder=0 ORDER BY tblMessage1.MessageDate || ' ' || tblMessage1.MessageTime;");
\r
13 st.Bind(0,messageid);
\r
16 while(st.RowReturned())
\r
19 std::string subject="";
\r
20 std::string fromname="";
\r
21 std::string datetime="";
\r
22 st.ResultInt(0,childid);
\r
23 st.ResultText(1,subject);
\r
24 st.ResultText(2,fromname);
\r
25 st.ResultText(3,datetime);
\r
28 node.m_messageid=childid;
\r
30 node.m_subject=subject;
\r
31 node.m_fromname=fromname;
\r
32 node.m_date=datetime;
\r
33 m_nodes.push_back(node);
\r
35 AddChildren(childid,level+1,boardid);
\r
41 const MessageThread::threadnode MessageThread::GetOriginalMessageNode(const long messageid, const long boardid)
\r
43 SQLite3DB::Statement st=m_db->Prepare("SELECT tblMessage.MessageID, tblMessage.Subject, tblMessage.FromName, tblMessage.MessageDate || ' ' || tblMessage.MessageTime FROM tblMessageReplyTo INNER JOIN tblMessage ON tblMessageReplyTo.ReplyToMessageUUID=tblMessage.MessageUUID INNER JOIN tblMessageBoard ON tblMessage.MessageID=tblMessageBoard.MessageID WHERE tblMessageReplyTo.ReplyOrder=0 AND tblMessageReplyTo.MessageID=? AND tblMessageBoard.BoardID=?;");
\r
44 st.Bind(0,messageid);
\r
47 if(st.RowReturned())
\r
50 std::string subject="";
\r
51 std::string fromname="";
\r
52 std::string datetime="";
\r
54 st.ResultText(1,subject);
\r
55 st.ResultText(2,fromname);
\r
56 st.ResultText(3,datetime);
\r
59 node.m_messageid=id;
\r
61 node.m_subject=subject;
\r
62 node.m_fromname=fromname;
\r
63 node.m_date=datetime;
\r
65 return GetOriginalMessageNode(node.m_messageid,boardid);
\r
70 node.m_messageid=-1;
\r
76 SQLite3DB::Statement st2=m_db->Prepare("SELECT Subject, FromName, MessageDate || ' ' || MessageTime FROM tblMessage WHERE MessageID=?;");
\r
77 st2.Bind(0,messageid);
\r
80 if(st2.RowReturned())
\r
82 node.m_messageid=messageid;
\r
83 st2.ResultText(0,node.m_subject);
\r
84 st2.ResultText(1,node.m_fromname);
\r
85 st2.ResultText(2,node.m_date);
\r
92 const bool MessageThread::Load(const long messageid, const long boardid, const bool bydate)
\r
94 threadnode originalmessagenode=GetOriginalMessageNode(messageid,boardid);
\r
96 if(originalmessagenode.m_messageid>=0)
\r
98 m_nodes.push_back(originalmessagenode);
\r
100 AddChildren(originalmessagenode.m_messageid,1,boardid);
\r
104 std::sort(m_nodes.begin(),m_nodes.end(),datecompare());
\r
115 const bool MessageThread::Load(const std::string &messageidstr, const long boardid, const bool bydate)
\r
118 StringFunctions::Convert(messageidstr,messageid);
\r
119 return Load(messageid,boardid,bydate);
\r