return false;\r
}\r
\r
+const int Message::FindLocalIdentityID(const std::string &name)\r
+{\r
+ SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID FROM tblLocalIdentity WHERE Name=?;");\r
+ st.Bind(0,name);\r
+ st.Step();\r
+ if(st.RowReturned())\r
+ {\r
+ int result=-1;\r
+ st.ResultInt(0,result);\r
+ return result;\r
+ }\r
+ else\r
+ {\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,name);\r
+ st.Step(true);\r
+ return st.GetLastInsertRowID();\r
+ }\r
+ else\r
+ {\r
+ return -1;\r
+ }\r
+ }\r
+}\r
+\r
const std::string Message::GetNNTPArticleID() const\r
{\r
// old message - before 0.1.12 - doesn't have @domain so add @freenetproject.org\r
// only continue if this message was actually a reply to another message\r
if(m_inreplyto.size()>0)\r
{\r
+ int localidentityid=-1;\r
int boardid=0;\r
std::string boardname="";\r
std::string identityname="";\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
+ localidentityid=FindLocalIdentityID(m_fromname);\r
+\r
+ while(st.RowReturned() && localidentityid!=-1)\r
{\r
st.ResultInt(0,boardid);\r
st.ResultText(1,boardname);\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
+ SQLite3DB::Statement origmess=m_db->Prepare("SELECT tblIdentity.IdentityID,tblIdentity.Name,tblIdentityTrust.LocalMessageTrust,tblIdentityTrust.LocalTrustListTrust FROM tblIdentity INNER JOIN tblMessage ON tblIdentity.IdentityID=tblMessage.IdentityID LEFT JOIN (SELECT IdentityID,LocalMessageTrust,LocalTrustListTrust FROM tblIdentityTrust WHERE LocalIdentityID=?) AS 'tblIdentityTrust' ON tblIdentity.IdentityID=tblIdentityTrust.IdentityID WHERE tblMessage.MessageUUID=?;");\r
+ origmess.Bind(0,localidentityid);\r
+ origmess.Bind(1,m_inreplyto[0]);\r
origmess.Step();\r
\r
if(origmess.RowReturned())\r
}\r
else\r
{\r
- origmessagetrust=50;\r
+ origmessagetrust=m_minlocalmessagetrust;\r
}\r
if(origmess.ResultNull(3)==false)\r
{\r
}\r
else\r
{\r
- origtrustlisttrust=50;\r
+ origtrustlisttrust=m_minlocaltrustlisttrust;\r
}\r
\r
origmessagetrust+=changemessagetrust;\r
origtrustlisttrust+=changetrustlisttrust;\r
\r
- if(origmessagetrust<0)\r
- {\r
- origmessagetrust=0;\r
- }\r
- if(origmessagetrust>100)\r
- {\r
- origmessagetrust=100;\r
- }\r
- if(origtrustlisttrust<0)\r
- {\r
- origtrustlisttrust=0;\r
- }\r
- if(origtrustlisttrust>100)\r
- {\r
- origtrustlisttrust=100;\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
+ // make sure we have a record in tblIdentityTrust\r
+ SQLite3DB::Statement ins=m_db->Prepare("INSERT INTO tblIdentityTrust(LocalIdentityID,IdentityID) VALUES(?,?);");\r
+ ins.Bind(0,localidentityid);\r
+ ins.Bind(1,identityid);\r
+ ins.Step();\r
\r
// update new trust levels\r
- SQLite3DB::Statement update=m_db->Prepare("UPDATE tblIdentity SET LocalMessageTrust=?, LocalTrustListTrust=? WHERE IdentityID=?;");\r
+ SQLite3DB::Statement update=m_db->Prepare("UPDATE tblIdentityTrust SET LocalMessageTrust=?, LocalTrustListTrust=? WHERE IdentityID=? AND LocalIdentityID=?;");\r
update.Bind(0,origmessagetrust);\r
update.Bind(1,origtrustlisttrust);\r
update.Bind(2,identityid);\r
+ update.Bind(3,localidentityid);\r
update.Step();\r
\r
// insert message to show what id was changed and what current levels are\r
now.SetToGMTime();\r
StringFunctions::Convert(origmessagetrust,messagetruststr);\r
StringFunctions::Convert(origtrustlisttrust,trustlisttruststr);\r
+ messagebody="Trust List of "+m_fromname+"\r\n";\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
{\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
+ int localidentityid=FindLocalIdentityID(m_fromname);\r
+ if(localidentityid!=-1)\r
{\r
- int identityid=0;\r
- int localmessagetrust=0;\r
+ // make sure we have a record in tblIdentityTrust\r
+ SQLite3DB::Statement ins=m_db->Prepare("INSERT INTO tblIdentityTrust(LocalIdentityID,IdentityID) VALUES(?,?);");\r
\r
- st.ResultInt(0,identityid);\r
- if(st.ResultNull(1)==false)\r
- {\r
- st.ResultInt(1,localmessagetrust);\r
- }\r
- else\r
+ SQLite3DB::Statement st=m_db->Prepare("SELECT tblIdentity.IdentityID,tblIdentityTrust.LocalMessageTrust FROM tblIdentity INNER JOIN tblMessage ON tblIdentity.IdentityID=tblMessage.IdentityID LEFT JOIN (SELECT IdentityID,LocalMessageTrust FROM tblIdentityTrust WHERE LocalIdentityID=?) AS 'tblIdentityTrust' ON tblIdentity.IdentityID=tblIdentityTrust.IdentityID WHERE tblMessage.MessageUUID=?;");\r
+ st.Bind(0,localidentityid);\r
+ st.Bind(1,m_inreplyto[0]);\r
+ st.Step();\r
+ if(st.RowReturned())\r
{\r
- localmessagetrust=50;\r
- }\r
+ int identityid=0;\r
+ int localmessagetrust=0;\r
\r
- localmessagetrust+=m_changemessagetrustonreply;\r
- if(localmessagetrust<0)\r
- {\r
- localmessagetrust=0;\r
- }\r
- if(localmessagetrust>100)\r
- {\r
- localmessagetrust=100;\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
+ ins.Bind(0,localidentityid);\r
+ ins.Bind(1,identityid);\r
+ ins.Step();\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
+ SQLite3DB::Statement st2=m_db->Prepare("UPDATE tblIdentityTrust SET LocalMessageTrust=? WHERE IdentityID=? AND LocalIdentityID=?;");\r
+ st2.Bind(0,localmessagetrust);\r
+ st2.Bind(1,identityid);\r
+ st2.Bind(2,localidentityid);\r
+ st2.Step();\r
\r
+ }\r
}\r
}\r
}\r
{\r
m_addnewpostfromidentities=false;\r
}\r
+ tempval="50";\r
+ Option::Instance()->Get("MinLocalMessageTrust",tempval);\r
+ StringFunctions::Convert(tempval,m_minlocalmessagetrust);\r
+ tempval="51";\r
+ Option::Instance()->Get("MinLocalTrustListTrust",tempval);\r
+ StringFunctions::Convert(tempval,m_minlocaltrustlisttrust);\r
}\r
\r
const bool Message::Load(const long messageid, const long boardid)\r
xml.AddInReplyTo((*j).first,(*j).second);\r
}\r
\r
+\r
// find identity to insert with\r
+ /*\r
SQLite3DB::Statement st=m_db->Prepare("SELECT LocalIdentityID FROM tblLocalIdentity WHERE Name=?;");\r
st.Bind(0,m_fromname);\r
st.Step();\r
{\r
st.ResultInt(0,localidentityid);\r
}\r
+ */\r
+ localidentityid=FindLocalIdentityID(m_fromname);\r
+ if(localidentityid==-1)\r
+ {\r
+ return false;\r
+ }\r
\r
- st=m_db->Prepare("INSERT INTO tblMessageInserts(LocalIdentityID,MessageUUID,MessageXML) VALUES(?,?,?);");\r
+ SQLite3DB::Statement st=m_db->Prepare("INSERT INTO tblMessageInserts(LocalIdentityID,MessageUUID,MessageXML) VALUES(?,?,?);");\r
st.Bind(0,localidentityid);\r
st.Bind(1,m_messageuuid);\r
st.Bind(2,xml.GetXML());\r