version 0.1.14
[fms.git] / src / freenet / messagelistxml.cpp
index c05bb66..c2a9c82 100644 (file)
@@ -9,11 +9,21 @@ MessageListXML::MessageListXML()
        Initialize();\r
 }\r
 \r
-void MessageListXML::AddMessage(const std::string &date, const long index, const std::vector<std::string> boards)\r
+void MessageListXML::AddMessage(const std::string &date, const long index, const std::vector<std::string> &boards)\r
 {\r
        m_messages.push_back(message(date,index,boards));\r
 }\r
 \r
+void MessageListXML::AddExternalMessage(const std::string &identity, const std::string &date, const long index, const std::vector<std::string> &boards)\r
+{\r
+       m_externalmessages.push_back(externalmessage("Keyed",identity,date,index,boards));\r
+}\r
+\r
+void MessageListXML::AddExternalMessage(const std::string &messagekey, const std::string &date, const std::vector<std::string> &boards)\r
+{\r
+       m_externalmessages.push_back(externalmessage("Anonymous",messagekey,date,boards));\r
+}\r
+\r
 std::vector<std::string> MessageListXML::GetBoards(const long index)\r
 {\r
        if(index>=0 && index<m_messages.size())\r
@@ -38,6 +48,78 @@ std::string MessageListXML::GetDate(const long index)
        }\r
 }\r
 \r
+std::vector<std::string> MessageListXML::GetExternalBoards(const long index)\r
+{\r
+       if(index>=0 && index<m_externalmessages.size())\r
+       {\r
+               return m_externalmessages[index].m_boards;\r
+       }\r
+       else\r
+       {\r
+               return std::vector<std::string>();\r
+       }\r
+}\r
+\r
+std::string MessageListXML::GetExternalDate(const long index)\r
+{\r
+       if(index>=0 && index<m_externalmessages.size())\r
+       {\r
+               return m_externalmessages[index].m_date;\r
+       }\r
+       else\r
+       {\r
+               return "";\r
+       }\r
+}\r
+\r
+std::string MessageListXML::GetExternalIdentity(const long index)\r
+{\r
+       if(index>=0 && index<m_externalmessages.size())\r
+       {\r
+               return m_externalmessages[index].m_identity;\r
+       }\r
+       else\r
+       {\r
+               return "";\r
+       }\r
+}\r
+\r
+const long MessageListXML::GetExternalIndex(const long index)\r
+{\r
+       if(index>=0 && index<m_externalmessages.size())\r
+       {\r
+               return m_externalmessages[index].m_index;\r
+       }\r
+       else\r
+       {\r
+               return-1;\r
+       }\r
+}\r
+\r
+std::string MessageListXML::GetExternalMessageKey(const long index)\r
+{\r
+       if(index>=0 && index<m_externalmessages.size())\r
+       {\r
+               return m_externalmessages[index].m_messagekey;\r
+       }\r
+       else\r
+       {\r
+               return "";\r
+       }\r
+}\r
+\r
+std::string MessageListXML::GetExternalType(const long index)\r
+{\r
+       if(index>=0 && index<m_externalmessages.size())\r
+       {\r
+               return m_externalmessages[index].m_type;\r
+       }\r
+       else\r
+       {\r
+               return "";\r
+       }\r
+}\r
+\r
 const long MessageListXML::GetIndex(const long index)\r
 {\r
        if(index>=0 && index<m_messages.size())\r
@@ -75,6 +157,29 @@ std::string MessageListXML::GetXML()
                }\r
        }\r
 \r
+       for(std::vector<externalmessage>::iterator i=m_externalmessages.begin(); i!=m_externalmessages.end(); i++)\r
+       {\r
+               TiXmlElement *tr=new TiXmlElement("ExternalMessage");\r
+               tid->LinkEndChild(tr);\r
+               tr->LinkEndChild(XMLCreateTextElement("Type",(*i).m_type));\r
+               if((*i).m_type=="Keyed")\r
+               {\r
+                       tr->LinkEndChild(XMLCreateCDATAElement("Identity",(*i).m_identity));\r
+                       tr->LinkEndChild(XMLCreateTextElement("Index",(*i).m_index));\r
+               }\r
+               else\r
+               {\r
+                       tr->LinkEndChild(XMLCreateCDATAElement("MessageKey",(*i).m_messagekey));\r
+               }\r
+               tr->LinkEndChild(XMLCreateTextElement("Date",(*i).m_date));\r
+               TiXmlElement *brds=new TiXmlElement("Boards");\r
+               tr->LinkEndChild(brds);\r
+               for(std::vector<std::string>::iterator j=(*i).m_boards.begin(); j!=(*i).m_boards.end(); j++)\r
+               {\r
+                       brds->LinkEndChild(XMLCreateCDATAElement("Board",(*j)));\r
+               }\r
+       }\r
+\r
        td.Accept(&tp);\r
        return std::string(tp.CStr());\r
 }\r
@@ -82,6 +187,7 @@ std::string MessageListXML::GetXML()
 void MessageListXML::Initialize()\r
 {\r
        m_messages.clear();\r
+       m_externalmessages.clear();\r
 }\r
 \r
 const bool MessageListXML::ParseXML(const std::string &xml)\r