summaryrefslogtreecommitdiff
path: root/modules/chanserv/register.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-07-28 21:29:35 -0400
committerAdam <Adam@anope.org>2016-07-28 21:29:35 -0400
commit0e758a2ac23dc4a001e8e126cec14588da9a9769 (patch)
tree45df813323e023c5c89db7279426c4ad0943b4a9 /modules/chanserv/register.cpp
parenta3c8afae00c54d5b95c620248b51f90679d7d53f (diff)
Allow serializable fields to use storage in the respective objects.
Split service management code nito a proper servicemanager. Make service references managed instead of lazy lookup. Also made events and serializable use service manager instead of their respective systems for management
Diffstat (limited to 'modules/chanserv/register.cpp')
-rw-r--r--modules/chanserv/register.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/modules/chanserv/register.cpp b/modules/chanserv/register.cpp
index eb2832074..f342ba43b 100644
--- a/modules/chanserv/register.cpp
+++ b/modules/chanserv/register.cpp
@@ -88,12 +88,19 @@ class CommandCSRegister : public Command
return;
}
- if (!ChanServ::service)
+ ci = Serialize::New<ChanServ::Channel *>();
+ if (ci == nullptr)
return;
- ci = ChanServ::channel.Create();
+
ci->SetName(chan);
ci->SetFounder(nc);
ci->SetDesc(chdesc);
+ ci->SetTimeRegistered(Anope::CurTime);
+ ci->SetLastUsed(Anope::CurTime);
+ ci->SetBanType(2);
+
+ ci->c = c; // XXX? this isnt set on reconstrubted objects?
+ c->ci = ci;
if (c && !c->topic.empty())
{
@@ -102,7 +109,9 @@ class CommandCSRegister : public Command
ci->SetLastTopicTime(c->topic_time);
}
else
+ {
ci->SetLastTopicSetter(source.service->nick);
+ }
Log(LOG_COMMAND, source, this, ci);
source.Reply(_("Channel \002{0}\002 registered under your account: \002{1}\002"), chan, nc->GetDisplay());
@@ -114,7 +123,7 @@ class CommandCSRegister : public Command
if (u)
c->SetCorrectModes(u, true);
- Event::OnChanRegistered(&Event::ChanRegistered::OnChanRegistered, ci);
+ EventManager::Get()->Dispatch(&Event::ChanRegistered::OnChanRegistered, ci);
}
}