version 0.1.14
[fms.git] / src / board.cpp
index e256dcb..aee9339 100644 (file)
@@ -14,6 +14,7 @@ Board::Board()
        m_lowmessageid=0;\r
        m_highmessageid=0;\r
        m_messagecount=0;\r
+       m_savereceivedmessages=true;\r
 }\r
 \r
 Board::Board(const long boardid)\r
@@ -26,6 +27,21 @@ Board::Board(const std::string &boardname)
        Load(boardname);\r
 }\r
 \r
+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
+{\r
+       m_boardid=boardid;\r
+       m_boardname=boardname;\r
+       m_boarddescription=boarddescription;\r
+       m_lowmessageid=lowmessageid;\r
+       m_highmessageid=highmessageid;\r
+       m_messagecount=messagecount;\r
+       m_savereceivedmessages=savereceivedmessages;\r
+\r
+       SetDateFromString(datecreated);\r
+\r
+}\r
+\r
+\r
 const bool Board::Load(const long boardid)\r
 {\r
        // clear current values\r
@@ -37,7 +53,7 @@ const bool Board::Load(const long boardid)
        m_highmessageid=0;\r
        m_messagecount=0;\r
 \r
-       SQLite3DB::Statement st=m_db->Prepare("SELECT BoardName, BoardDescription, DateAdded FROM tblBoard WHERE BoardID=?;");\r
+       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
        st.Bind(0,boardid);\r
        st.Step();\r
 \r
@@ -52,53 +68,25 @@ const bool Board::Load(const long boardid)
                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
+               SetDateFromString(tempstr);\r
+\r
+               tempint=0;\r
+               st.ResultInt(3,tempint);\r
+               m_highmessageid=tempint;\r
+               tempint=0;\r
+               st.ResultInt(4,tempint);\r
+               m_lowmessageid=tempint;\r
+               tempint=0;\r
+               st.ResultInt(5,tempint);\r
+               m_messagecount=tempint;\r
+               st.ResultText(6,tempstr);\r
+               if(tempstr=="true")\r
                {\r
-                       StringFunctions::Convert(dateparts[5],tempint);\r
-                       m_datecreated.SetSecond(tempint);\r
+                       m_savereceivedmessages=true;\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
+               else\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
+                       m_savereceivedmessages=false;\r
                }\r
 \r
                return true;\r
@@ -125,3 +113,41 @@ const bool Board::Load(const std::string &boardname)
                return false;\r
        }\r
 }\r
+\r
+void Board::SetDateFromString(const std::string &datestring)\r
+{\r
+       // break out date created  - date should be in format yyyy-mm-dd HH:MM:SS, so we split on "-", " " (space), and ":"\r
+       int tempint=0;\r
+       std::vector<std::string> dateparts;\r
+       StringFunctions::SplitMultiple(datestring,"- :",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