version 0.1.0
[fms.git] / src / board.cpp
diff --git a/src/board.cpp b/src/board.cpp
new file mode 100644 (file)
index 0000000..e256dcb
--- /dev/null
@@ -0,0 +1,127 @@
+#include "../include/board.h"\r
+#include "../include/stringfunctions.h"\r
+\r
+#ifdef XMEM\r
+       #include <xmem.h>\r
+#endif\r
+\r
+Board::Board()\r
+{\r
+       m_boardid=-1;\r
+       m_boardname="";\r
+       m_boarddescription="";\r
+       m_datecreated.Set(1970,1,1);\r
+       m_lowmessageid=0;\r
+       m_highmessageid=0;\r
+       m_messagecount=0;\r
+}\r
+\r
+Board::Board(const long boardid)\r
+{\r
+       Load(boardid);  \r
+}\r
+\r
+Board::Board(const std::string &boardname)\r
+{\r
+       Load(boardname);\r
+}\r
+\r
+const bool Board::Load(const long boardid)\r
+{\r
+       // clear current values\r
+       m_boardid=-1;\r
+       m_boardname="";\r
+       m_boarddescription="";\r
+       m_datecreated.Set(1970,1,1);\r
+       m_lowmessageid=0;\r
+       m_highmessageid=0;\r
+       m_messagecount=0;\r
+\r
+       SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded FROM tblBoard WHERE BoardID=?;");\r
+       st.Bind(0,boardid);\r
+       st.Step();\r
+\r
+       if(st.RowReturned())\r
+       {\r
+               int tempint;\r
+               std::string tempstr;\r
+               std::vector<std::string> dateparts;\r
+\r
+               m_boardid=boardid;\r
+               st.ResultText(0,m_boardname);\r
+               st.ResultText(1,m_boarddescription);\r
+               st.ResultText(2,tempstr);\r
+\r
+               // break out date created  - date should be in format yyyy-mm-dd HH:MM:SS, so we split on "-", " " (space), and ":"\r
+               StringFunctions::SplitMultiple(tempstr,"- :",dateparts);\r
+               if(dateparts.size()>0)\r
+               {\r
+                       StringFunctions::Convert(dateparts[0],tempint);\r
+                       m_datecreated.SetYear(tempint);\r
+               }\r
+               if(dateparts.size()>1)\r
+               {\r
+                       StringFunctions::Convert(dateparts[1],tempint);\r
+                       m_datecreated.SetMonth(tempint);\r
+               }\r
+               if(dateparts.size()>2)\r
+               {\r
+                       StringFunctions::Convert(dateparts[2],tempint);\r
+                       m_datecreated.SetDay(tempint);\r
+               }\r
+               if(dateparts.size()>3)\r
+               {\r
+                       StringFunctions::Convert(dateparts[3],tempint);\r
+                       m_datecreated.SetHour(tempint);\r
+               }\r
+               if(dateparts.size()>4)\r
+               {\r
+                       StringFunctions::Convert(dateparts[4],tempint);\r
+                       m_datecreated.SetMinute(tempint);\r
+               }\r
+               if(dateparts.size()>5)\r
+               {\r
+                       StringFunctions::Convert(dateparts[5],tempint);\r
+                       m_datecreated.SetSecond(tempint);\r
+               }\r
+\r
+               // get max and min ids and message count in this board\r
+               SQLite3DB::Statement bounds=m_db->Prepare("SELECT HighMessageID, LowMessageID, MessageCount FROM vwBoardStats WHERE BoardID=?;");\r
+               bounds.Bind(0,boardid);\r
+               bounds.Step();\r
+\r
+               if(bounds.RowReturned())\r
+               {\r
+                       int tempint;\r
+                       bounds.ResultInt(0,tempint);\r
+                       m_highmessageid=tempint;\r
+                       bounds.ResultInt(1,tempint);\r
+                       m_lowmessageid=tempint;\r
+                       bounds.ResultInt(2,tempint);\r
+                       m_messagecount=tempint;\r
+               }\r
+\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               return false;\r
+       }\r
+}\r
+\r
+const bool Board::Load(const std::string &boardname)\r
+{\r
+       SQLite3DB::Statement st=m_db->Prepare("SELECT BoardID FROM tblBoard WHERE BoardName=?;");\r
+       st.Bind(0,boardname);\r
+       st.Step();\r
+       if(st.RowReturned())\r
+       {\r
+               int tempint;\r
+               st.ResultInt(0,tempint);\r
+               return Load(tempint);\r
+       }\r
+       else\r
+       {\r
+               return false;\r
+       }\r
+}\r