version 0.1.0
[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 }\r
18 \r
19 Board::Board(const long boardid)\r
20 {\r
21         Load(boardid);  \r
22 }\r
23 \r
24 Board::Board(const std::string &boardname)\r
25 {\r
26         Load(boardname);\r
27 }\r
28 \r
29 const bool Board::Load(const long boardid)\r
30 {\r
31         // clear current values\r
32         m_boardid=-1;\r
33         m_boardname="";\r
34         m_boarddescription="";\r
35         m_datecreated.Set(1970,1,1);\r
36         m_lowmessageid=0;\r
37         m_highmessageid=0;\r
38         m_messagecount=0;\r
39 \r
40         SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded FROM tblBoard WHERE BoardID=?;");\r
41         st.Bind(0,boardid);\r
42         st.Step();\r
43 \r
44         if(st.RowReturned())\r
45         {\r
46                 int tempint;\r
47                 std::string tempstr;\r
48                 std::vector<std::string> dateparts;\r
49 \r
50                 m_boardid=boardid;\r
51                 st.ResultText(0,m_boardname);\r
52                 st.ResultText(1,m_boarddescription);\r
53                 st.ResultText(2,tempstr);\r
54 \r
55                 // break out date created  - date should be in format yyyy-mm-dd HH:MM:SS, so we split on "-", " " (space), and ":"\r
56                 StringFunctions::SplitMultiple(tempstr,"- :",dateparts);\r
57                 if(dateparts.size()>0)\r
58                 {\r
59                         StringFunctions::Convert(dateparts[0],tempint);\r
60                         m_datecreated.SetYear(tempint);\r
61                 }\r
62                 if(dateparts.size()>1)\r
63                 {\r
64                         StringFunctions::Convert(dateparts[1],tempint);\r
65                         m_datecreated.SetMonth(tempint);\r
66                 }\r
67                 if(dateparts.size()>2)\r
68                 {\r
69                         StringFunctions::Convert(dateparts[2],tempint);\r
70                         m_datecreated.SetDay(tempint);\r
71                 }\r
72                 if(dateparts.size()>3)\r
73                 {\r
74                         StringFunctions::Convert(dateparts[3],tempint);\r
75                         m_datecreated.SetHour(tempint);\r
76                 }\r
77                 if(dateparts.size()>4)\r
78                 {\r
79                         StringFunctions::Convert(dateparts[4],tempint);\r
80                         m_datecreated.SetMinute(tempint);\r
81                 }\r
82                 if(dateparts.size()>5)\r
83                 {\r
84                         StringFunctions::Convert(dateparts[5],tempint);\r
85                         m_datecreated.SetSecond(tempint);\r
86                 }\r
87 \r
88                 // get max and min ids and message count in this board\r
89                 SQLite3DB::Statement bounds=m_db->Prepare("SELECT HighMessageID, LowMessageID, MessageCount FROM vwBoardStats WHERE BoardID=?;");\r
90                 bounds.Bind(0,boardid);\r
91                 bounds.Step();\r
92 \r
93                 if(bounds.RowReturned())\r
94                 {\r
95                         int tempint;\r
96                         bounds.ResultInt(0,tempint);\r
97                         m_highmessageid=tempint;\r
98                         bounds.ResultInt(1,tempint);\r
99                         m_lowmessageid=tempint;\r
100                         bounds.ResultInt(2,tempint);\r
101                         m_messagecount=tempint;\r
102                 }\r
103 \r
104                 return true;\r
105         }\r
106         else\r
107         {\r
108                 return false;\r
109         }\r
110 }\r
111 \r
112 const bool Board::Load(const std::string &boardname)\r
113 {\r
114         SQLite3DB::Statement st=m_db->Prepare("SELECT BoardID FROM tblBoard WHERE BoardName=?;");\r
115         st.Bind(0,boardname);\r
116         st.Step();\r
117         if(st.RowReturned())\r
118         {\r
119                 int tempint;\r
120                 st.ResultInt(0,tempint);\r
121                 return Load(tempint);\r
122         }\r
123         else\r
124         {\r
125                 return false;\r
126         }\r
127 }\r