X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_delaymsg.cpp;h=978ab55d2191c94b31bb74862bf454f4f01ce72d;hb=09186df9f8c0d4f699b5abb4325d7dd583a8a0b1;hp=1a0734ed9b01506f3ec3d4949f5ad02602576847;hpb=13eef9a8e06effb5981729cc6c2b11aa0fb940cf;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_delaymsg.cpp b/src/modules/m_delaymsg.cpp index 1a0734ed9..978ab55d2 100644 --- a/src/modules/m_delaymsg.cpp +++ b/src/modules/m_delaymsg.cpp @@ -46,15 +46,21 @@ class ModuleDelayMsg : public Module public: ModuleDelayMsg() : djm(this) { - if (!ServerInstance->Modes->AddMode(&djm)) - throw ModuleException("Could not add new modes!"); - ServerInstance->Extensions.Register(&djm.jointime); - Implementation eventlist[] = { I_OnUserJoin, I_OnUserPreMessage}; - ServerInstance->Modules->Attach(eventlist, this, 2); + } + + void init() + { + ServerInstance->Modules->AddService(djm); + ServerInstance->Modules->AddService(djm.jointime); + Implementation eventlist[] = { I_OnUserJoin, I_OnUserPreMessage, I_OnRehash }; + ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); + OnRehash(NULL); } 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); + ModResult OnUserPreNotice(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list); + void OnRehash(User* user); }; ModeAction DelayMsgMode::OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding) @@ -141,5 +147,19 @@ ModResult ModuleDelayMsg::OnUserPreMessage(User* user, void* dest, int target_ty return MOD_RES_PASSTHRU; } +ModResult ModuleDelayMsg::OnUserPreNotice(User* user, void* dest, int target_type, std::string& text, char status, CUList& exempt_list) +{ + return OnUserPreMessage(user, dest, target_type, text, status, exempt_list); +} + +void ModuleDelayMsg::OnRehash(User* user) +{ + ConfigTag* tag = ServerInstance->Config->ConfValue("delaymsg"); + if (tag->getBool("allownotice", true)) + ServerInstance->Modules->Detach(I_OnUserPreNotice, this); + else + ServerInstance->Modules->Attach(I_OnUserPreNotice, this); +} + MODULE_INIT(ModuleDelayMsg)