version 0.2.11
[fms.git] / src / message.cpp
index d2693f5..5905021 100644 (file)
@@ -325,6 +325,7 @@ void Message::Initialize()
        m_fromname="";\r
        m_boards.clear();\r
        m_inreplyto.clear();\r
+       m_fileattachments.clear();\r
        m_changemessagetrustonreply=0;\r
        Option::Instance()->Get("ChangeMessageTrustOnReply",tempval);\r
        StringFunctions::Convert(tempval,m_changemessagetrustonreply);\r
@@ -694,6 +695,12 @@ const bool Message::ParseNNTPMessage(const std::string &nntpmessage)
 #endif\r
                        m_body+=bodypart;\r
                }\r
+               // add a binary file attachment\r
+               else if((*i)->GetName()!="" && (*i)->GetLength()>0 && (*i)->GetContent())\r
+               {\r
+                       std::vector<unsigned char> data((*i)->GetContent(),(*i)->GetContent()+(*i)->GetContentLength());\r
+                       m_fileattachments.push_back(fileattachment((*i)->GetName(),data));\r
+               }\r
        }\r
 \r
        return true;\r
@@ -735,6 +742,18 @@ const bool Message::StartFreenetInsert()
        st.Bind(2,xml.GetXML());\r
        st.Step();\r
 \r
+       // insert file attachments into database\r
+       st=m_db->Prepare("INSERT INTO tblFileInserts(MessageUUID,FileName,Size,Data) VALUES(?,?,?,?);");\r
+       for(std::vector<fileattachment>::iterator i=m_fileattachments.begin(); i!=m_fileattachments.end(); i++)\r
+       {\r
+               st.Bind(0,m_messageuuid);\r
+               st.Bind(1,(*i).m_filename);\r
+               st.Bind(2,(long)(*i).m_data.size());\r
+               st.Bind(3,&((*i).m_data[0]),(*i).m_data.size());\r
+               st.Step();\r
+               st.Reset();\r
+       }\r
+\r
        HandleChangeTrust();\r
 \r
        return true;\r