+void Message::HandleAdministrationMessage()\r
+{\r
+ // only continue if this message was actually a reply to another message\r
+ if(m_inreplyto.size()>0)\r
+ {\r
+ int boardid=0;\r
+ std::string boardname="";\r
+ std::string identityname="";\r
+ int identityid;\r
+ int changemessagetrust=0;\r
+ int changetrustlisttrust=0;\r
+ int origmessagetrust=0;\r
+ int origtrustlisttrust=0;\r
+ SQLite3DB::Statement st=m_db->Prepare("SELECT tblBoard.BoardID,BoardName,ModifyLocalMessageTrust,ModifyLocalTrustListTrust FROM tblBoard INNER JOIN tblAdministrationBoard ON tblBoard.BoardID=tblAdministrationBoard.BoardID;");\r
+ st.Step();\r
+\r
+ while(st.RowReturned())\r
+ {\r
+ st.ResultInt(0,boardid);\r
+ st.ResultText(1,boardname);\r
+ st.ResultInt(2,changemessagetrust);\r
+ st.ResultInt(3,changetrustlisttrust);\r
+\r
+ if(std::find(m_boards.begin(),m_boards.end(),boardname)!=m_boards.end())\r
+ {\r
+ SQLite3DB::Statement origmess=m_db->Prepare("SELECT tblIdentity.IdentityID,tblIdentity.Name,tblIdentity.LocalMessageTrust,tblIdentity.LocalTrustListTrust FROM tblIdentity INNER JOIN tblMessage ON tblIdentity.IdentityID=tblMessage.IdentityID WHERE tblMessage.MessageUUID=?;");\r
+ origmess.Bind(0,m_inreplyto[0]);\r
+ origmess.Step();\r
+\r
+ if(origmess.RowReturned())\r
+ {\r
+ origmess.ResultInt(0,identityid);\r
+ origmess.ResultText(1,identityname);\r
+ if(origmess.ResultNull(2)==false)\r
+ {\r
+ origmess.ResultInt(2,origmessagetrust);\r
+ }\r
+ else\r
+ {\r
+ origmessagetrust=m_minlocalmessagetrust;\r
+ }\r
+ if(origmess.ResultNull(3)==false)\r
+ {\r
+ origmess.ResultInt(3,origtrustlisttrust);\r
+ }\r
+ else\r
+ {\r
+ origtrustlisttrust=m_minlocaltrustlisttrust;\r
+ }\r
+\r
+ origmessagetrust+=changemessagetrust;\r
+ origtrustlisttrust+=changetrustlisttrust;\r
+\r
+ origmessagetrust<0 ? origmessagetrust=0 : false;\r
+ origmessagetrust>100 ? origmessagetrust=100 : false;\r
+ origtrustlisttrust<0 ? origtrustlisttrust=0 : false;\r
+ origtrustlisttrust>100 ? origtrustlisttrust=100 : false;\r
+\r
+ // update new trust levels\r
+ SQLite3DB::Statement update=m_db->Prepare("UPDATE tblIdentity SET LocalMessageTrust=?, LocalTrustListTrust=? WHERE IdentityID=?;");\r
+ update.Bind(0,origmessagetrust);\r
+ update.Bind(1,origtrustlisttrust);\r
+ update.Bind(2,identityid);\r
+ update.Step();\r
+\r
+ // insert message to show what id was changed and what current levels are\r
+ int lastid=0;\r
+ std::string messagebody;\r
+ std::string messagetruststr="";\r
+ std::string trustlisttruststr="";\r
+ UUIDGenerator uuid;\r
+ DateTime now;\r
+ now.SetToGMTime();\r
+ StringFunctions::Convert(origmessagetrust,messagetruststr);\r
+ StringFunctions::Convert(origtrustlisttrust,trustlisttruststr);\r
+ messagebody="Trust Changed for "+identityname+"\r\n";\r
+ messagebody+="Local Message Trust : "+messagetruststr+"\r\n";\r
+ messagebody+="Local Trust List Trust : "+trustlisttruststr+"\r\n";\r
+ SQLite3DB::Statement insert=m_db->Prepare("INSERT INTO tblMessage(FromName,MessageDate,MessageTime,Subject,MessageUUID,ReplyBoardID,Body) VALUES('FMS',?,?,?,?,?,?);");\r
+ insert.Bind(0,now.Format("%Y-%m-%d"));\r
+ insert.Bind(1,now.Format("%H:%M:%S"));\r
+ insert.Bind(2,identityname+" Trust Changed");\r
+ insert.Bind(3,uuid.Generate());\r
+ insert.Bind(4,boardid);\r
+ insert.Bind(5,messagebody);\r
+ insert.Step(true);\r
+ lastid=insert.GetLastInsertRowID();\r
+\r
+ insert=m_db->Prepare("INSERT INTO tblMessageBoard(MessageID,BoardID) VALUES(?,?);");\r
+ insert.Bind(0,lastid);\r
+ insert.Bind(1,boardid);\r
+ insert.Step();\r
+\r
+ m_log->WriteLog(LogFile::LOGLEVEL_DEBUG,"Message::HandleAdministrationMessage updated "+identityname+" to "+messagetruststr+" , "+trustlisttruststr);\r
+\r
+ }\r
+ }\r
+\r
+ st.Step();\r
+ }\r
+ }\r
+\r
+}\r
+\r
+void Message::HandleChangeTrust()\r
+{\r
+ if(m_changemessagetrustonreply!=0 && m_inreplyto.size()>0)\r
+ {\r
+ SQLite3DB::Statement st=m_db->Prepare("SELECT tblIdentity.IdentityID,tblIdentity.LocalMessageTrust FROM tblIdentity INNER JOIN tblMessage ON tblIdentity.IdentityID=tblMessage.IdentityID WHERE tblMessage.MessageUUID=?;");\r
+ st.Bind(0,m_inreplyto[0]);\r
+ st.Step();\r
+ if(st.RowReturned())\r
+ {\r
+ int identityid=0;\r
+ int localmessagetrust=0;\r
+\r
+ st.ResultInt(0,identityid);\r
+ if(st.ResultNull(1)==false)\r
+ {\r
+ st.ResultInt(1,localmessagetrust);\r
+ }\r
+ else\r
+ {\r
+ localmessagetrust=m_minlocalmessagetrust;\r
+ }\r
+\r
+ localmessagetrust+=m_changemessagetrustonreply;\r
+ if(localmessagetrust<0)\r
+ {\r
+ localmessagetrust=0;\r
+ }\r
+ if(localmessagetrust>100)\r
+ {\r
+ localmessagetrust=100;\r
+ }\r
+\r
+ SQLite3DB::Statement st2=m_db->Prepare("UPDATE tblIdentity SET LocalMessageTrust=? WHERE IdentityID=?;");\r
+ st2.Bind(0,localmessagetrust);\r
+ st2.Bind(1,identityid);\r
+ st2.Step();\r
+\r
+ }\r
+ }\r
+}\r
+\r