summaryrefslogtreecommitdiff
path: root/modules/operserv
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2017-02-07 17:20:07 -0500
committerAdam <Adam@anope.org>2017-02-07 17:20:07 -0500
commit09dca29c8898916772c2a2a6b86b625c812007ed (patch)
tree1b28f4751feec3ea2b46fa0afb061da7926f3a47 /modules/operserv
parent8b694bc392c36551e428b84454efb81cdbc8bcd3 (diff)
Normalize databases by not allowing generic Object references
Remove redis database support
Diffstat (limited to 'modules/operserv')
-rw-r--r--modules/operserv/info.cpp44
1 files changed, 33 insertions, 11 deletions
diff --git a/modules/operserv/info.cpp b/modules/operserv/info.cpp
index c052c46ae..7a90c1bf6 100644
--- a/modules/operserv/info.cpp
+++ b/modules/operserv/info.cpp
@@ -27,15 +27,19 @@ class OperInfoImpl : public OperInfo
{
friend class OperInfoType;
- Serialize::Storage<Serialize::Object *> target;
+ Serialize::Storage<NickServ::Account *> account;
+ Serialize::Storage<ChanServ::Channel *> channel;
Serialize::Storage<Anope::string> info, creator;
Serialize::Storage<time_t> created;
public:
using OperInfo::OperInfo;
- Serialize::Object *GetTarget() override;
- void SetTarget(Serialize::Object *) override;
+ NickServ::Account *GetAccount() override;
+ void SetAccount(NickServ::Account *) override;
+
+ ChanServ::Channel *GetChannel() override;
+ void SetChannel(ChanServ::Channel *) override;
Anope::string GetInfo() override;
void SetInfo(const Anope::string &) override;
@@ -50,12 +54,14 @@ class OperInfoImpl : public OperInfo
class OperInfoType : public Serialize::Type<OperInfoImpl>
{
public:
- Serialize::ObjectField<OperInfoImpl, Serialize::Object *> target;
+ Serialize::ObjectField<OperInfoImpl, NickServ::Account *> account;
+ Serialize::ObjectField<OperInfoImpl, ChanServ::Channel *> channel;
Serialize::Field<OperInfoImpl, Anope::string> info, creator;
Serialize::Field<OperInfoImpl, time_t> created;
OperInfoType(Module *c) : Serialize::Type<OperInfoImpl>(c)
- , target(this, "target", &OperInfoImpl::target, true)
+ , account(this, "account", &OperInfoImpl::account, true)
+ , channel(this, "channel", &OperInfoImpl::channel, true)
, info(this, "info", &OperInfoImpl::info)
, creator(this, "adder", &OperInfoImpl::creator)
, created(this, "created", &OperInfoImpl::created)
@@ -63,14 +69,24 @@ class OperInfoType : public Serialize::Type<OperInfoImpl>
}
};
-Serialize::Object *OperInfoImpl::GetTarget()
+NickServ::Account *OperInfoImpl::GetAccount()
+{
+ return Get(&OperInfoType::account);
+}
+
+void OperInfoImpl::SetAccount(NickServ::Account *account)
{
- return Get(&OperInfoType::target);
+ Set(&OperInfoType::account, account);
}
-void OperInfoImpl::SetTarget(Serialize::Object *t)
+ChanServ::Channel *OperInfoImpl::GetChannel()
{
- Set(&OperInfoType::target, t);
+ return Get(&OperInfoType::channel);
+}
+
+void OperInfoImpl::SetChannel(ChanServ::Channel *channel)
+{
+ Set(&OperInfoType::channel, channel);
}
Anope::string OperInfoImpl::GetInfo()
@@ -118,7 +134,10 @@ class CommandOSInfo : public Command
{
const Anope::string &cmd = params[0], target = params[1], info = params.size() > 2 ? params[2] : "";
+ NickServ::Account *account = nullptr;
+ ChanServ::Channel *channel = nullptr;
Serialize::Object *e;
+
if (IRCD->IsChannelValid(target))
{
ChanServ::Channel *ci = ChanServ::Find(target);
@@ -128,6 +147,7 @@ class CommandOSInfo : public Command
return;
}
+ channel = ci;
e = ci;
}
else
@@ -139,7 +159,8 @@ class CommandOSInfo : public Command
return;
}
- e = na->GetAccount();
+ account = na->GetAccount();
+ e = account;
}
if (cmd.equals_ci("ADD"))
@@ -165,7 +186,8 @@ class CommandOSInfo : public Command
}
OperInfo *o = Serialize::New<OperInfo *>();
- o->SetTarget(e);
+ o->SetAccount(account);
+ o->SetChannel(channel);
o->SetInfo(info);
o->SetCreator(source.GetNick());
o->SetCreated(Anope::CurTime);