diff options
| author | Adam <Adam@anope.org> | 2014-05-28 12:07:29 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2014-05-28 12:07:54 -0400 |
| commit | f29e1cf383529a1a29f02b0669d973f5ee0b7a66 (patch) | |
| tree | 3c33db276dc9328235bbd572641521ed44458176 /modules/pseudoclients/memoserv/memo.cpp | |
| parent | 1253c70e0682fa1490c99c3d2869049a0e3fa2e0 (diff) | |
Move most of the core pseudoclient logic to modules
Diffstat (limited to 'modules/pseudoclients/memoserv/memo.cpp')
| -rw-r--r-- | modules/pseudoclients/memoserv/memo.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/modules/pseudoclients/memoserv/memo.cpp b/modules/pseudoclients/memoserv/memo.cpp new file mode 100644 index 000000000..9383e3b8b --- /dev/null +++ b/modules/pseudoclients/memoserv/memo.cpp @@ -0,0 +1,58 @@ +#include "memo.h" + +MemoImpl::MemoImpl() +{ + unread = receipt = false; +} + +MemoImpl::~MemoImpl() +{ + bool ischan, isregistered; + MemoServ::MemoInfo *mi = MemoServ::service->GetMemoInfo(this->owner, ischan, isregistered, false); + if (mi) + { + std::vector<Memo *>::iterator it = std::find(mi->memos->begin(), mi->memos->end(), this); + + if (it != mi->memos->end()) + mi->memos->erase(it); + } +} + +void MemoImpl::Serialize(Serialize::Data &data) const +{ + data["owner"] << this->owner; + data.SetType("time", Serialize::Data::DT_INT); data["time"] << this->time; + data["sender"] << this->sender; + data["text"] << this->text; + data["unread"] << this->unread; + data["receipt"] << this->receipt; +} + +Serializable* MemoImpl::Unserialize(Serializable *obj, Serialize::Data &data) +{ + Anope::string owner; + + data["owner"] >> owner; + + bool ischan, isregistered; + MemoServ::MemoInfo *mi = MemoServ::service->GetMemoInfo(owner, ischan, isregistered, true); + if (!mi) + return NULL; + + Memo *m; + if (obj) + m = anope_dynamic_static_cast<Memo *>(obj); + else + m = new MemoImpl(); + + m->owner = owner; + data["time"] >> m->time; + data["sender"] >> m->sender; + data["text"] >> m->text; + data["unread"] >> m->unread; + data["receipt"] >> m->receipt; + + if (obj == NULL) + mi->memos->push_back(m); + return m; +} |
