#include "inspircd.h"
-
-/** Handles channel mode +S
- */
-class ChannelStripColor : public SimpleChannelModeHandler
-{
- public:
- ChannelStripColor(Module* Creator) : SimpleChannelModeHandler(Creator, "stripcolor", 'S') { }
-};
-
-/** Handles user mode +S
- */
-class UserStripColor : public SimpleUserModeHandler
-{
- public:
- UserStripColor(Module* Creator) : SimpleUserModeHandler(Creator, "u_stripcolor", 'S') { }
-};
-
+#include "modules/exemption.h"
class ModuleStripColor : public Module
{
- ChannelStripColor csc;
- UserStripColor usc;
+ CheckExemption::EventProvider exemptionprov;
+ SimpleChannelModeHandler csc;
+ SimpleUserModeHandler usc;
public:
- ModuleStripColor() : csc(this), usc(this)
+ ModuleStripColor()
+ : exemptionprov(this)
+ , csc(this, "stripcolor", 'S')
+ , usc(this, "u_stripcolor", 'S')
{
}
else if (target_type == TYPE_CHANNEL)
{
Channel* t = (Channel*)dest;
- ModResult res = ServerInstance->OnCheckExemption(user,t,"stripcolor");
+ ModResult res = CheckExemption::Call(exemptionprov, user, t, "stripcolor");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
if (!IS_LOCAL(user))
return;
- bool active = channel->GetExtBanStatus(user, 'S').check(!user->IsModeSet(csc))
- && ServerInstance->OnCheckExemption(user, channel, "stripcolor") != MOD_RES_ALLOW;
-
- if (active)
+ if (channel->GetExtBanStatus(user, 'S').check(!user->IsModeSet(csc)))
{
- InspIRCd::StripColor(partmessage);
+ ModResult res = CheckExemption::Call(exemptionprov, user, channel, "stripcolor");
+
+ if (res != MOD_RES_ALLOW)
+ InspIRCd::StripColor(partmessage);
}
}