version 0.1.14
[fms.git] / src / board.cpp
1 #include "../include/board.h"\r
2 #include "../include/stringfunctions.h"\r
3 \r
4 #ifdef XMEM\r
5         #include <xmem.h>\r
6 #endif\r
7 \r
8 Board::Board()\r
9 {\r
10         m_boardid=-1;\r
11         m_boardname="";\r
12         m_boarddescription="";\r
13         m_datecreated.Set(1970,1,1);\r
14         m_lowmessageid=0;\r
15         m_highmessageid=0;\r
16         m_messagecount=0;\r
17         m_savereceivedmessages=true;\r
18 }\r
19 \r
20 Board::Board(const long boardid)\r
21 {\r
22         Load(boardid);  \r
23 }\r
24 \r
25 Board::Board(const std::string &boardname)\r
26 {\r
27         Load(boardname);\r
28 }\r
29 \r
30 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)\r
31 {\r
32         m_boardid=boardid;\r
33         m_boardname=boardname;\r
34         m_boarddescription=boarddescription;\r
35         m_lowmessageid=lowmessageid;\r
36         m_highmessageid=highmessageid;\r
37         m_messagecount=messagecount;\r
38         m_savereceivedmessages=savereceivedmessages;\r
39 \r
40         SetDateFromString(datecreated);\r
41 \r
42 }\r
43 \r
44 \r
45 const bool Board::Load(const long boardid)\r
46 {\r
47         // clear current values\r
48         m_boardid=-1;\r
49         m_boardname="";\r
50         m_boarddescription="";\r
51         m_datecreated.Set(1970,1,1);\r
52         m_lowmessageid=0;\r
53         m_highmessageid=0;\r
54         m_messagecount=0;\r
55 \r
56         SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded, HighMessageID, LowMessageID, MessageCount, SaveReceivedMessages FROM tblBoard LEFT JOIN vwBoardStats ON tblBoard.BoardID=vwBoardStats.BoardID WHERE tblBoard.BoardID=?;");\r
57         st.Bind(0,boardid);\r
58         st.Step();\r
59 \r
60         if(st.RowReturned())\r
61         {\r
62                 int tempint;\r
63                 std::string tempstr;\r
64                 std::vector<std::string> dateparts;\r
65 \r
66                 m_boardid=boardid;\r
67                 st.ResultText(0,m_boardname);\r
68                 st.ResultText(1,m_boarddescription);\r
69                 st.ResultText(2,tempstr);\r
70 \r
71                 SetDateFromString(tempstr);\r
72 \r
73                 tempint=0;\r
74                 st.ResultInt(3,tempint);\r
75                 m_highmessageid=tempint;\r
76                 tempint=0;\r
77                 st.ResultInt(4,tempint);\r
78                 m_lowmessageid=tempint;\r
79                 tempint=0;\r
80                 st.ResultInt(5,tempint);\r
81                 m_messagecount=tempint;\r
82                 st.ResultText(6,tempstr);\r
83                 if(tempstr=="true")\r
84                 {\r
85                         m_savereceivedmessages=true;\r
86                 }\r
87                 else\r
88                 {\r
89                         m_savereceivedmessages=false;\r
90                 }\r
91 \r
92                 return true;\r
93         }\r
94         else\r
95         {\r
96                 return false;\r
97         }\r
98 }\r
99 \r
100 const bool Board::Load(const std::string &boardname)\r
101 {\r
102         SQLite3DB::Statement st=m_db->Prepare("SELECT BoardID FROM tblBoard WHERE BoardName=?;");\r
103         st.Bind(0,boardname);\r
104         st.Step();\r
105         if(st.RowReturned())\r
106         {\r
107                 int tempint;\r
108                 st.ResultInt(0,tempint);\r
109                 return Load(tempint);\r
110         }\r
111         else\r
112         {\r
113                 return false;\r
114         }\r
115 }\r
116 \r
117 void Board::SetDateFromString(const std::string &datestring)\r
118 {\r
119         // break out date created  - date should be in format yyyy-mm-dd HH:MM:SS, so we split on "-", " " (space), and ":"\r
120         int tempint=0;\r
121         std::vector<std::string> dateparts;\r
122         StringFunctions::SplitMultiple(datestring,"- :",dateparts);\r
123         if(dateparts.size()>0)\r
124         {\r
125                 StringFunctions::Convert(dateparts[0],tempint);\r
126                 m_datecreated.SetYear(tempint);\r
127         }\r
128         if(dateparts.size()>1)\r
129         {\r
130                 StringFunctions::Convert(dateparts[1],tempint);\r
131                 m_datecreated.SetMonth(tempint);\r
132         }\r
133         if(dateparts.size()>2)\r
134         {\r
135                 StringFunctions::Convert(dateparts[2],tempint);\r
136                 m_datecreated.SetDay(tempint);\r
137         }\r
138         if(dateparts.size()>3)\r
139         {\r
140                 StringFunctions::Convert(dateparts[3],tempint);\r
141                 m_datecreated.SetHour(tempint);\r
142         }\r
143         if(dateparts.size()>4)\r
144         {\r
145                 StringFunctions::Convert(dateparts[4],tempint);\r
146                 m_datecreated.SetMinute(tempint);\r
147         }\r
148         if(dateparts.size()>5)\r
149         {\r
150                 StringFunctions::Convert(dateparts[5],tempint);\r
151                 m_datecreated.SetSecond(tempint);\r
152         }\r
153 }\r