f30f33b6bbaa22927e2e768123a0aec04aac723a
[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         const std::string GetNNTPHeaders() const;\r
26         const std::string GetNNTPArticleID() const;\r
27         const std::string GetNNTPBody() const;\r
28 \r
29 /*\r
30         void SetMessageUUID(const std::string &messageuuid)                                     { m_messageuuid=messageuuid; }\r
31         void SetSubject(const std::string &subject)                                                     { m_subject=subject; }\r
32         void SetBody(const std::string &body)                                                           { m_body=body; }\r
33         void SetReplyBoardName(const std::string &replyboardname)                       { m_replyboardname=replyboardname; }\r
34         void SetDateTime(const DateTime &datetime)                                                      { m_datetime=datetime; }\r
35         void SetFromName(const std::string &fromname)                                           { m_fromname=fromname; }\r
36         void AddBoard(const std::string &board)                                                         { m_boards.push_back(board); }\r
37         void AddInReplyTo(const long index, const std::string &messageid)       { m_inreplyto[index]=messageid; }\r
38 */\r
39 \r
40         const bool Load(const long messageid, const long boardid=-1);\r
41         const bool LoadNext(const long messageid, const long boardid=-1);               // loads next message in board with messageid > passed id\r
42         const bool LoadPrevious(const long messageid, const long boardid=-1);   // loads previous message in board with messageid < passed id\r
43         const bool Load(const std::string &messageuuid);\r
44         \r
45         const bool ParseNNTPMessage(const std::string &nntpmessage);\r
46 \r
47         const bool PostedToAdministrationBoard()                { return CheckForAdministrationBoard(m_boards); }\r
48 \r
49         void StartFreenetInsert();\r
50         void HandleAdministrationMessage();\r
51 \r
52 private:\r
53         void Initialize();\r
54         // checks vector of boards for any special administration boards - if it finds one true is returned, otherwise false\r
55         const bool CheckForAdministrationBoard(const std::vector<std::string> &boards);\r
56 \r
57         long m_messageid;\r
58         std::string m_messageuuid;\r
59         std::string m_subject;\r
60         std::string m_body;\r
61         std::string m_replyboardname;\r
62         DateTime m_datetime;\r
63         std::string m_fromname;\r
64         std::vector<std::string> m_boards;\r
65         std::map<long,std::string> m_inreplyto;\r
66 \r
67 };\r
68 \r
69 #endif  // _message_\r