class ModuleDelayMsg : public Module
{
- private:
DelayMsgMode djm;
public:
ModuleDelayMsg() : djm(this)
{
}
- void init()
+ void init() CXX11_OVERRIDE
{
- if (!ServerInstance->Modes->AddMode(&djm))
- throw ModuleException("Could not add new modes!");
- ServerInstance->Extensions.Register(&djm.jointime);
+ ServerInstance->Modules->AddService(djm);
+ ServerInstance->Modules->AddService(djm.jointime);
Implementation eventlist[] = { I_OnUserJoin, I_OnUserPreMessage};
ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
}
- Version GetVersion();
- void OnUserJoin(Membership* memb, bool sync, bool created, CUList&);
- ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list);
+ Version GetVersion() CXX11_OVERRIDE;
+ void OnUserJoin(Membership* memb, bool sync, bool created, CUList&) CXX11_OVERRIDE;
+ ModResult OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list, MessageType msgtype) CXX11_OVERRIDE;
};
ModeAction DelayMsgMode::OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
{
if (adding)
{
- if ((channel->IsModeSet('d')) && (channel->GetModeParameter('d') == parameter))
+ if ((channel->IsModeSet(this)) && (channel->GetModeParameter(this) == parameter))
return MODEACTION_DENY;
/* Setting a new limit, sanity check */
}
else
{
- if (!channel->IsModeSet('d'))
+ if (!channel->IsModeSet(this))
return MODEACTION_DENY;
/*
for (UserMembCIter n = names->begin(); n != names->end(); ++n)
jointime.set(n->second, 0);
}
- channel->SetModeParam('d', adding ? parameter : "");
return MODEACTION_ALLOW;
}
void ModuleDelayMsg::OnUserJoin(Membership* memb, bool sync, bool created, CUList&)
{
- if ((IS_LOCAL(memb->user)) && (memb->chan->IsModeSet('d')))
+ if ((IS_LOCAL(memb->user)) && (memb->chan->IsModeSet(djm)))
{
djm.jointime.set(memb, ServerInstance->Time());
}
}
-ModResult ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_type, std::string &text, char status, CUList &exempt_list)
+ModResult ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list, MessageType msgtype)
{
/* Server origin */
if ((!user) || (!IS_LOCAL(user)))
return MOD_RES_PASSTHRU;
- if (target_type != TYPE_CHANNEL)
+ if ((target_type != TYPE_CHANNEL) || (msgtype != MSG_PRIVMSG))
return MOD_RES_PASSTHRU;
Channel* channel = (Channel*) dest;
if (ts == 0)
return MOD_RES_PASSTHRU;
- std::string len = channel->GetModeParameter('d');
+ std::string len = channel->GetModeParameter(&djm);
if (ts + atoi(len.c_str()) > ServerInstance->Time())
{
}
MODULE_INIT(ModuleDelayMsg)
-