version 0.2.11
[fms.git] / include / message.h
1 #ifndef _message_\r
2 #define _message_\r
3 \r
4 #include "idatabase.h"\r
5 #include "ilogger.h"\r
6 #include "datetime.h"\r
7 \r
8 class Message:public IDatabase,public ILogger\r
9 {\r
10 public:\r
11         Message();\r
12         Message(const long messageid);\r
13         Message(const std::string &messageuuid);\r
14 \r
15         const long GetMessageID() const                                 { return m_messageid; }\r
16         const std::string GetMessageUUID() const                { return m_messageuuid; }\r
17         const std::string GetSubject() const                    { return m_subject; }\r
18         const std::string GetBody() const                               { return m_body; }\r
19         const std::string GetReplyBoardName()                   { return m_replyboardname; }\r
20         const DateTime GetDateTime() const                              { return m_datetime; }\r
21         const std::string GetFromName() const                   { return m_fromname; }\r
22         std::vector<std::string> GetBoards() const              { return m_boards; }\r
23         std::map<long,std::string> GetInReplyTo() const { return m_inreplyto; }\r
24 \r
25         void SetFromName(const std::string &fromname)   { m_fromname=fromname; }\r
26 \r
27         const std::string GetNNTPHeaders() const;\r
28         const std::string GetNNTPArticleID() const;\r
29         const std::string GetNNTPBody() const;\r
30 \r
31 /*\r
32         void SetMessageUUID(const std::string &messageuuid)                                     { m_messageuuid=messageuuid; }\r
33         void SetSubject(const std::string &subject)                                                     { m_subject=subject; }\r
34         void SetBody(const std::string &body)                                                           { m_body=body; }\r
35         void SetReplyBoardName(const std::string &replyboardname)                       { m_replyboardname=replyboardname; }\r
36         void SetDateTime(const DateTime &datetime)                                                      { m_datetime=datetime; }\r
37         void SetFromName(const std::string &fromname)                                           { m_fromname=fromname; }\r
38         void AddBoard(const std::string &board)                                                         { m_boards.push_back(board); }\r
39         void AddInReplyTo(const long index, const std::string &messageid)       { m_inreplyto[index]=messageid; }\r
40 */\r
41 \r
42         const bool Load(const long messageid, const long boardid=-1);\r
43         const bool LoadNext(const long messageid, const long boardid=-1);               // loads next message in board with messageid > passed id\r
44         const bool LoadPrevious(const long messageid, const long boardid=-1);   // loads previous message in board with messageid < passed id\r
45         const bool Load(const std::string &messageuuid);\r
46         \r
47         const bool ParseNNTPMessage(const std::string &nntpmessage);\r
48 \r
49         const bool PostedToAdministrationBoard()                { return CheckForAdministrationBoard(m_boards); }\r
50 \r
51         const bool StartFreenetInsert();\r
52         void HandleAdministrationMessage();\r
53 \r
54 private:\r
55         void Initialize();\r
56         // checks vector of boards for any special administration boards - if it finds one true is returned, otherwise false\r
57         const bool CheckForAdministrationBoard(const std::vector<std::string> &boards);\r
58         void HandleChangeTrust();\r
59         void StripAdministrationBoards();       // removes administration boards from boards vector\r
60         const int FindLocalIdentityID(const std::string &name);\r
61 \r
62         struct fileattachment\r
63         {\r
64                 fileattachment(const std::string &filename, const std::vector<unsigned char> &data):m_filename(filename),m_data(data)   {}\r
65                 std::string m_filename;\r
66                 std::vector<unsigned char> m_data;\r
67         };\r
68 \r
69         long m_messageid;\r
70         bool m_addnewpostfromidentities;\r
71         std::string m_messageuuid;\r
72         std::string m_subject;\r
73         std::string m_body;\r
74         std::string m_replyboardname;\r
75         DateTime m_datetime;\r
76         std::string m_fromname;\r
77         std::vector<std::string> m_boards;\r
78         std::map<long,std::string> m_inreplyto;\r
79         std::vector<fileattachment> m_fileattachments;\r
80         long m_changemessagetrustonreply;\r
81         long m_minlocalmessagetrust;\r
82         long m_minlocaltrustlisttrust;\r
83 \r
84 };\r
85 \r
86 #endif  // _message_\r