version 0.1.14
[fms.git] / src / message.cpp
index 41add10..f4a6ea6 100644 (file)
@@ -140,8 +140,22 @@ void Message::HandleAdministrationMessage()
                                {\r
                                        origmess.ResultInt(0,identityid);\r
                                        origmess.ResultText(1,identityname);\r
-                                       origmess.ResultInt(2,origmessagetrust);\r
-                                       origmess.ResultInt(3,origtrustlisttrust);\r
+                                       if(origmess.ResultNull(2)==false)\r
+                                       {\r
+                                               origmess.ResultInt(2,origmessagetrust);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               origmessagetrust=50;\r
+                                       }\r
+                                       if(origmess.ResultNull(3)==false)\r
+                                       {\r
+                                               origmess.ResultInt(3,origtrustlisttrust);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               origtrustlisttrust=50;\r
+                                       }\r
 \r
                                        origmessagetrust+=changemessagetrust;\r
                                        origtrustlisttrust+=changetrustlisttrust;\r
@@ -222,7 +236,14 @@ void Message::HandleChangeTrust()
                        int localmessagetrust=0;\r
 \r
                        st.ResultInt(0,identityid);\r
-                       st.ResultInt(1,localmessagetrust);\r
+                       if(st.ResultNull(1)==false)\r
+                       {\r
+                               st.ResultInt(1,localmessagetrust);\r
+                       }\r
+                       else\r
+                       {\r
+                               localmessagetrust=50;\r
+                       }\r
 \r
                        localmessagetrust+=m_changemessagetrustonreply;\r
                        if(localmessagetrust<0)\r
@@ -258,6 +279,15 @@ void Message::Initialize()
        m_changemessagetrustonreply=0;\r
        Option::Instance()->Get("ChangeMessageTrustOnReply",tempval);\r
        StringFunctions::Convert(tempval,m_changemessagetrustonreply);\r
+       Option::Instance()->Get("AddNewPostFromIdentities",tempval);\r
+       if(tempval=="true")\r
+       {\r
+               m_addnewpostfromidentities=true;\r
+       }\r
+       else\r
+       {\r
+               m_addnewpostfromidentities=false;\r
+       }\r
 }\r
 \r
 const bool Message::Load(const long messageid, const long boardid)\r
@@ -587,7 +617,7 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
        return true;\r
 }\r
 \r
-void Message::StartFreenetInsert()\r
+const bool Message::StartFreenetInsert()\r
 {\r
 \r
        MessageXML xml;\r
@@ -600,6 +630,7 @@ void Message::StartFreenetInsert()
        xml.SetDate(m_datetime.Format("%Y-%m-%d"));\r
        xml.SetTime(m_datetime.Format("%H:%M:%S"));\r
        \r
+       StripAdministrationBoards();\r
        for(std::vector<std::string>::iterator i=m_boards.begin(); i!=m_boards.end(); i++)\r
        {\r
                xml.AddBoard((*i));\r
@@ -618,12 +649,19 @@ void Message::StartFreenetInsert()
        // couldn't find identity with this name - insert a new identity\r
        if(!st.RowReturned())\r
        {\r
-               DateTime now;\r
-               now.SetToGMTime();\r
-               st=m_db->Prepare("INSERT INTO tblLocalIdentity(Name) VALUES(?);");\r
-               st.Bind(0,m_fromname);\r
-               st.Step(true);\r
-               localidentityid=st.GetLastInsertRowID();\r
+               if(m_addnewpostfromidentities==true)\r
+               {\r
+                       DateTime now;\r
+                       now.SetToGMTime();\r
+                       st=m_db->Prepare("INSERT INTO tblLocalIdentity(Name) VALUES(?);");\r
+                       st.Bind(0,m_fromname);\r
+                       st.Step(true);\r
+                       localidentityid=st.GetLastInsertRowID();\r
+               }\r
+               else\r
+               {\r
+                       return false;\r
+               }\r
        }\r
        else\r
        {\r
@@ -638,4 +676,25 @@ void Message::StartFreenetInsert()
 \r
        HandleChangeTrust();\r
 \r
+       return true;\r
+\r
+}\r
+\r
+void Message::StripAdministrationBoards()\r
+{\r
+       SQLite3DB::Statement st=m_db->Prepare("SELECT tblBoard.BoardID FROM tblBoard INNER JOIN tblAdministrationBoard ON tblBoard.BoardID=tblAdministrationBoard.BoardID WHERE BoardName=?;");\r
+       for(std::vector<std::string>::iterator i=m_boards.begin(); i!=m_boards.end(); )\r
+       {\r
+               st.Bind(0,(*i));\r
+               st.Step();\r
+               if(st.RowReturned())\r
+               {\r
+                       i=m_boards.erase(i);\r
+               }\r
+               else\r
+               {\r
+                       i++;\r
+               }\r
+               st.Reset();\r
+       }\r
 }\r