summaryrefslogtreecommitdiff
path: root/modules/pseudoclients/memoserv/memo.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-05-28 12:07:29 -0400
committerAdam <Adam@anope.org>2014-05-28 12:07:54 -0400
commitf29e1cf383529a1a29f02b0669d973f5ee0b7a66 (patch)
tree3c33db276dc9328235bbd572641521ed44458176 /modules/pseudoclients/memoserv/memo.cpp
parent1253c70e0682fa1490c99c3d2869049a0e3fa2e0 (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.cpp58
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;
+}