+\r
+ // We need to update ID here, in case this index was already inserted from another\r
+ // identity's message list. This doesn't reset try count - maybe we should if the from\r
+ // identity was another identity\r
+ ust.Bind(0,identityid);\r
+ ust.Bind(1,identityid);\r
+ ust.Bind(2,xml.GetDate(i));\r
+ ust.Bind(3,xml.GetIndex(i));\r
+ ust.Step();\r
+ ust.Reset();\r
+\r
+ m_requestindexcache[xml.GetDate(i)][identityid].insert(xml.GetIndex(i));\r
+\r
+ }\r
+ else\r
+ {\r
+ //m_log->trace("MessageListRequester::HandleAllData will not download message posted to "+boardsstr+" on "+xml.GetDate(i));\r
+ }\r
+ }\r
+\r
+ // insert external message indexes\r
+ for(long i=0; i<xml.ExternalMessageCount(); i++)\r
+ {\r
+ if(xml.GetExternalType(i)=="Keyed")\r
+ {\r
+ // go through each board the message was posted to and see if we are saving messages to that board\r
+ // if the board isn't found, see if we are saving messages to new boards\r
+ boardsstr="";\r
+ addmessage=false;\r
+ std::vector<std::string> messageboards=xml.GetExternalBoards(i);\r
+ for(std::vector<std::string>::iterator j=messageboards.begin(); j!=messageboards.end(); j++)\r
+ {\r
+ if(boards.find((*j))!=boards.end())\r
+ {\r
+ if(boards[(*j)]==true)\r
+ {\r
+ addmessage=true;\r
+ }\r
+ }\r
+ else if(m_savetonewboards==true)\r
+ {\r
+ addmessage=true;\r
+ }\r
+ if(j!=messageboards.begin())\r
+ {\r
+ boardsstr+=", ";\r
+ }\r
+ boardsstr+=(*j);\r
+ }\r
+\r
+ if(CheckDateNotFuture(xml.GetExternalDate(i))==false)\r
+ {\r
+ addmessage=false;\r
+ m_log->error(m_fcpuniquename+"::HandleAllData date for external message is in future! "+xml.GetExternalDate(i));\r
+ }\r
+\r
+ if(addmessage==true && CheckDateWithinMaxDays(xml.GetExternalDate(i))==false)\r
+ {\r
+ addmessage=false;\r
+ }\r
+\r
+ if(addmessage==true)\r
+ {\r
+ int thisidentityid=0;\r
+ if(identityids.find(xml.GetExternalIdentity(i))!=identityids.end())\r
+ {\r
+ thisidentityid=identityids[xml.GetExternalIdentity(i)];\r
+ }\r
+ else\r
+ {\r
+ spk.Bind(0,xml.GetExternalIdentity(i));\r
+ spk.Step();\r
+\r
+ if(spk.RowReturned())\r
+ {\r
+ spk.ResultInt(0,thisidentityid);\r
+ identityids[xml.GetExternalIdentity(i)]=thisidentityid;\r
+ }\r
+\r
+ spk.Reset();\r
+ }\r
+\r
+ if(thisidentityid!=0 && m_requestindexcache[xml.GetExternalDate(i)][thisidentityid].find(xml.GetExternalIndex(i))==m_requestindexcache[xml.GetExternalDate(i)][thisidentityid].end())\r
+ {\r
+ mst.Bind(0,thisidentityid);\r
+ mst.Bind(1,xml.GetExternalDate(i));\r
+ mst.Bind(2,xml.GetExternalIndex(i));\r
+ mst.Bind(3,fromidentityid);\r
+ mst.Step();\r
+ mst.Reset();\r
+\r
+ m_requestindexcache[xml.GetExternalDate(i)][thisidentityid].insert(xml.GetExternalIndex(i));\r
+ }\r
+ }\r
+ else\r
+ {\r
+ //m_log->trace("MessageListRequester::HandleAllData will not download external message posted to "+boardsstr+" from " + xml.GetExternalIdentity(i) + " on " + xml.GetExternalDate(i));\r
+ }\r