1 #include "../include/board.h"
\r
2 #include "../include/stringfunctions.h"
\r
4 #include <Poco/DateTimeParser.h>
\r
14 m_boarddescription="";
\r
15 m_datecreated.assign(1970,1,1);
\r
19 m_savereceivedmessages=true;
\r
23 Board::Board(const long boardid)
\r
28 Board::Board(const std::string &boardname)
\r
33 Board::Board(const long boardid, const std::string &boardname, const std::string &boarddescription, const std::string datecreated, const long lowmessageid, const long highmessageid, const long messagecount, const bool savereceivedmessages, const std::string &addedmethod)
\r
36 m_boardname=boardname;
\r
37 m_boarddescription=boarddescription;
\r
38 m_lowmessageid=lowmessageid;
\r
39 m_highmessageid=highmessageid;
\r
40 m_messagecount=messagecount;
\r
41 m_savereceivedmessages=savereceivedmessages;
\r
42 m_addedmethod=addedmethod;
\r
44 SetDateFromString(datecreated);
\r
49 const bool Board::Load(const long boardid)
\r
51 // clear current values
\r
54 m_boarddescription="";
\r
55 m_datecreated.assign(1970,1,1);
\r
61 // Optimize query by not using vwBoardStats
\r
62 //SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, HighMessageID, LowMessageID, MessageCount, SaveReceivedMessages, AddedMethod FROM tblBoard LEFT JOIN vwBoardStats ON tblBoard.BoardID=vwBoardStats.BoardID WHERE tblBoard.BoardID=?;");
\r
63 SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, IFNULL(MAX(MessageID),'0') AS HighMessageID, IFNULL(MIN(MessageID),'0') AS LowMessageID, COUNT(MessageID) AS MessageCount, SaveReceivedMessages, AddedMethod FROM tblBoard LEFT JOIN tblMessageBoard ON tblBoard.BoardID=tblMessageBoard.BoardID WHERE tblBoard.BoardID=? AND (MessageID IS NULL OR MessageID>=0);");
\r
67 if(st.RowReturned())
\r
70 std::string tempstr;
\r
71 std::vector<std::string> dateparts;
\r
74 st.ResultText(0,m_boardname);
\r
75 st.ResultText(1,m_boarddescription);
\r
76 st.ResultText(2,tempstr);
\r
78 SetDateFromString(tempstr);
\r
81 st.ResultInt(3,tempint);
\r
82 m_highmessageid=tempint;
\r
84 st.ResultInt(4,tempint);
\r
85 m_lowmessageid=tempint;
\r
87 st.ResultInt(5,tempint);
\r
88 m_messagecount=tempint;
\r
89 st.ResultText(6,tempstr);
\r
92 m_savereceivedmessages=true;
\r
96 m_savereceivedmessages=false;
\r
98 st.ResultText(7,m_addedmethod);
\r
108 const bool Board::Load(const std::string &boardname) // same as loading form boardid - but using name
\r
111 SQLite3DB::Statement st=m_db->Prepare("SELECT BoardID FROM tblBoard WHERE BoardName=?;");
\r
112 st.Bind(0,boardname);
\r
114 if(st.RowReturned())
\r
117 st.ResultInt(0,tempint);
\r
118 return Load(tempint);
\r
126 // clear current values
\r
129 m_boarddescription="";
\r
130 m_datecreated.assign(1970,1,1);
\r
137 // Optimize query by not using vwBoardStats
\r
138 //SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, HighMessageID, LowMessageID, MessageCount, SaveReceivedMessages, tblBoard.BoardID, AddedMethod FROM tblBoard LEFT JOIN vwBoardStats ON tblBoard.BoardID=vwBoardStats.BoardID WHERE tblBoard.BoardName=?;");
\r
139 SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, IFNULL(MAX(MessageID),'0') AS HighMessageID, IFNULL(MIN(MessageID),'0') AS LowMessageID, COUNT(MessageID) AS MessageCount, SaveReceivedMessages, tblBoard.BoardID, AddedMethod FROM tblBoard LEFT JOIN tblMessageBoard ON tblBoard.BoardID=tblMessageBoard.BoardID WHERE tblBoard.BoardName=? AND (MessageID IS NULL OR MessageID>=0);");
\r
140 st.Bind(0,boardname);
\r
143 if(st.RowReturned())
\r
146 std::string tempstr;
\r
147 std::vector<std::string> dateparts;
\r
149 st.ResultText(0,m_boardname);
\r
150 st.ResultText(1,m_boarddescription);
\r
151 st.ResultText(2,tempstr);
\r
152 st.ResultInt(7,tempint); // boardid
\r
155 SetDateFromString(tempstr);
\r
158 st.ResultInt(3,tempint);
\r
159 m_highmessageid=tempint;
\r
161 st.ResultInt(4,tempint);
\r
162 m_lowmessageid=tempint;
\r
164 st.ResultInt(5,tempint);
\r
165 m_messagecount=tempint;
\r
166 st.ResultText(6,tempstr);
\r
167 if(tempstr=="true")
\r
169 m_savereceivedmessages=true;
\r
173 m_savereceivedmessages=false;
\r
175 st.ResultText(8,m_addedmethod);
\r
186 void Board::SetDateFromString(const std::string &datestring)
\r
188 // break out date created - date should be in format yyyy-mm-dd HH:MM:SS, so we split on "-", " " (space), and ":"
\r
190 if(Poco::DateTimeParser::tryParse(datestring,m_datecreated,tzdiff)==false)
\r
192 m_log->error("Board::SetDateFromString could not parse date "+datestring);
\r