version 0.3.2
[fms.git] / src / freenet / messagexml.cpp
index 70b660d..7105da1 100644 (file)
@@ -12,87 +12,58 @@ MessageXML::MessageXML()
 std::string MessageXML::GetXML()\r
 {\r
        Poco::AutoPtr<Poco::XML::Document> doc=new Poco::XML::Document;\r
-       //TiXmlDocument td;\r
-       //TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");\r
-       Poco::XML::Element *root=doc->createElement("Message");\r
-       //TiXmlElement *tid;\r
-       //TiXmlPrinter tp;\r
+       Poco::AutoPtr<Poco::XML::Element> root=doc->createElement("Message");\r
 \r
        doc->appendChild(root);\r
-       //td.LinkEndChild(tdec);\r
-       //tid=new TiXmlElement("Message");\r
-       //td.LinkEndChild(tid);\r
 \r
        root->appendChild(XMLCreateTextElement(doc,"Date",m_date));\r
        root->appendChild(XMLCreateTextElement(doc,"Time",m_time));\r
        root->appendChild(XMLCreateCDATAElement(doc,"Subject",m_subject));\r
        root->appendChild(XMLCreateCDATAElement(doc,"MessageID",m_messageid));\r
        root->appendChild(XMLCreateCDATAElement(doc,"ReplyBoard",m_replyboard));\r
-       /*\r
-       tid->LinkEndChild(XMLCreateTextElement("Date",m_date));\r
-       tid->LinkEndChild(XMLCreateTextElement("Time",m_time));\r
-       tid->LinkEndChild(XMLCreateCDATAElement("Subject",m_subject));\r
-       tid->LinkEndChild(XMLCreateCDATAElement("MessageID",m_messageid));\r
-       tid->LinkEndChild(XMLCreateCDATAElement("ReplyBoard",m_replyboard));\r
-       */\r
        \r
        root->appendChild(XMLCreateCDATAElement(doc,"Body",m_body));\r
-       // a little hack because TinyXML doesn't handle ]]> inside a CDATA section - manually separate into multiple CDATA sections\r
-       // TinyXML still won't be able to parse past the 1st CDATA section, but other implementations might\r
-       //tid->LinkEndChild(XMLCreateCDATAElement("Body",StringFunctions::Replace(m_body,"]]>","]]]]><![CDATA[>")));\r
 \r
-       Poco::XML::Element *brds=doc->createElement("Boards");\r
-       //TiXmlElement *brds=new TiXmlElement("Boards");\r
+       Poco::AutoPtr<Poco::XML::Element> brds=doc->createElement("Boards");\r
+\r
        root->appendChild(brds);\r
-       //tid->LinkEndChild(brds);\r
+\r
+       // attach boards\r
        for(std::vector<std::string>::iterator i=m_boards.begin(); i!=m_boards.end(); i++)\r
        {\r
                std::string boardname=(*i);\r
                StringFunctions::Convert(boardname,boardname);\r
                brds->appendChild(XMLCreateCDATAElement(doc,"Board",boardname));\r
-               //brds->LinkEndChild(XMLCreateCDATAElement("Board",boardname));\r
        }\r
 \r
+       // attach inreplyto ids\r
        if(m_inreplyto.size()>0)\r
        {\r
-               Poco::XML::Element *rply=doc->createElement("InReplyTo");\r
-               //TiXmlElement *rply=new TiXmlElement("InReplyTo");\r
+               Poco::AutoPtr<Poco::XML::Element> rply=doc->createElement("InReplyTo");\r
                root->appendChild(rply);\r
-               //tid->LinkEndChild(rply);\r
                for(std::map<long,std::string>::iterator j=m_inreplyto.begin(); j!=m_inreplyto.end(); j++)\r
                {\r
-                       Poco::XML::Element *mess=doc->createElement("Message");\r
-                       //TiXmlElement *mess=new TiXmlElement("Message");\r
+                       Poco::AutoPtr<Poco::XML::Element> mess=doc->createElement("Message");\r
                        rply->appendChild(mess);\r
                        mess->appendChild(XMLCreateTextElement(doc,"Order",(*j).first));\r
                        mess->appendChild(XMLCreateCDATAElement(doc,"MessageID",(*j).second));\r
-                       //mess->LinkEndChild(XMLCreateTextElement("Order",(*j).first));\r
-                       //mess->LinkEndChild(XMLCreateCDATAElement("MessageID",(*j).second));\r
                }\r
        }\r
 \r
        // add attachemnt node if we have attachments\r
        if(m_fileattachments.size()>0)\r
        {\r
-               Poco::XML::Element *attachments=doc->createElement("Attachments");\r
-               //TiXmlElement *attachments=new TiXmlElement("Attachments");\r
+               Poco::AutoPtr<Poco::XML::Element> attachments=doc->createElement("Attachments");\r
                root->appendChild(attachments);\r
-               //tid->LinkEndChild(attachments);\r
                for(std::vector<fileattachment>::iterator j=m_fileattachments.begin(); j!=m_fileattachments.end(); j++)\r
                {\r
-                       Poco::XML::Element *f=doc->createElement("File");\r
-                       //TiXmlElement *f=new TiXmlElement("File");\r
+                       Poco::AutoPtr<Poco::XML::Element> f=doc->createElement("File");\r
                        attachments->appendChild(f);\r
-                       //attachments->LinkEndChild(f);\r
                        f->appendChild(XMLCreateCDATAElement(doc,"Key",(*j).m_key));\r
                        f->appendChild(XMLCreateTextElement(doc,"Size",(*j).m_size));\r
-                       //f->LinkEndChild(XMLCreateCDATAElement("Key",(*j).m_key));\r
-                       //f->LinkEndChild(XMLCreateTextElement("Size",(*j).m_size));\r
                }\r
        }\r
 \r
-       //td.Accept(&tp);\r
-       //return std::string(tp.CStr());\r
        return GenerateXML(doc);\r
 }\r
 \r
@@ -252,133 +223,4 @@ const bool MessageXML::ParseXML(const std::string &xml)
        }\r
 \r
        return parsed;\r
-\r
-/*\r
-       TiXmlDocument td;\r
-       td.Parse(xml.c_str());\r
-\r
-       if(!td.Error())\r
-       {\r
-               TiXmlHandle hnd(&td);\r
-               TiXmlNode *node2;\r
-               TiXmlText *txt;\r
-\r
-               Initialize();\r
-\r
-               txt=hnd.FirstChild("Message").FirstChild("Date").FirstChild().ToText();\r
-               if(txt)\r
-               {\r
-                       m_date=SanitizeSingleString(txt->ValueStr());\r
-               }\r
-               txt=hnd.FirstChild("Message").FirstChild("Time").FirstChild().ToText();\r
-               if(txt)\r
-               {\r
-                       m_time=SanitizeSingleString(txt->ValueStr());\r
-               }\r
-               txt=hnd.FirstChild("Message").FirstChild("Subject").FirstChild().ToText();\r
-               if(txt)\r
-               {\r
-                       m_subject=SanitizeSingleString(txt->ValueStr());\r
-               }\r
-               txt=hnd.FirstChild("Message").FirstChild("MessageID").FirstChild().ToText();\r
-               if(txt)\r
-               {\r
-                       m_messageid=SanitizeSingleString(txt->ValueStr());\r
-               }\r
-               txt=hnd.FirstChild("Message").FirstChild("ReplyBoard").FirstChild().ToText();\r
-               if(txt)\r
-               {\r
-                       m_replyboard=SanitizeSingleString(txt->ValueStr());\r
-                       StringFunctions::LowerCase(m_replyboard,m_replyboard);\r
-                       if(m_replyboard.size()>40)\r
-                       {\r
-                               m_replyboard.erase(40);\r
-                       }\r
-               }\r
-               txt=hnd.FirstChild("Message").FirstChild("Body").FirstChild().ToText();\r
-               if(txt)\r
-               {\r
-                       m_body=txt->ValueStr();\r
-               }\r
-\r
-               node2=hnd.FirstChild("Message").FirstChild("Boards").FirstChild("Board").ToNode();\r
-               while(node2)\r
-               {\r
-                       if(node2->FirstChild())\r
-                       {\r
-                               std::string boardname=SanitizeSingleString(node2->FirstChild()->ValueStr());\r
-                               StringFunctions::LowerCase(boardname,boardname);\r
-                               if(boardname.size()>40)\r
-                               {\r
-                                       boardname.erase(40);\r
-                               }\r
-                               m_boards.push_back(boardname);\r
-                       }\r
-                       node2=node2->NextSibling("Board");\r
-               }\r
-\r
-               node2=hnd.FirstChild("Message").FirstChild("InReplyTo").FirstChild("Message").ToNode();\r
-               while(node2)\r
-               {\r
-                       std::string orderstr;\r
-                       long order=-1;\r
-                       std::string messageid="";\r
-                       TiXmlHandle hnd2(node2);\r
-                       txt=hnd2.FirstChild("Order").FirstChild().ToText();\r
-                       if(txt)\r
-                       {\r
-                               orderstr=SanitizeSingleString(txt->ValueStr());\r
-                               StringFunctions::Convert(orderstr,order);\r
-                       }\r
-                       txt=hnd2.FirstChild("MessageID").FirstChild().ToText();\r
-                       if(txt)\r
-                       {\r
-                               messageid=SanitizeSingleString(txt->ValueStr());\r
-                       }\r
-\r
-                       if(order!=-1 && messageid!="")\r
-                       {\r
-                               m_inreplyto[order]=messageid;\r
-                       }\r
-\r
-                       node2=node2->NextSibling("Message");\r
-               }\r
-\r
-               node2=hnd.FirstChild("Message").FirstChild("Attachments").FirstChild("File").ToNode();\r
-               while(node2)\r
-               {\r
-                       std::string key="";\r
-                       std::string sizestr="-1";\r
-                       int size=-1;\r
-\r
-                       TiXmlHandle hnd2(node2);\r
-\r
-                       txt=hnd2.FirstChild("Key").FirstChild().ToText();\r
-                       if(txt)\r
-                       {\r
-                               key=SanitizeSingleString(txt->ValueStr());\r
-                       }\r
-\r
-                       txt=hnd2.FirstChild("Size").FirstChild().ToText();\r
-                       if(txt)\r
-                       {\r
-                               sizestr=SanitizeSingleString(txt->ValueStr());\r
-                               StringFunctions::Convert(sizestr,size);\r
-                       }\r
-\r
-                       if(key!="" && size>0)\r
-                       {\r
-                               m_fileattachments.push_back(fileattachment(key,size));\r
-                       }\r
-\r
-                       node2=node2->NextSibling("File");\r
-               }\r
-\r
-               return true;\r
-       }\r
-       else\r
-       {\r
-               return false;\r
-       }\r
-       */\r
 }\r