*/
-/* $ModDesc: Provides the /HELPOP command for useful information */
-
#include "inspircd.h"
static std::map<irc::string, std::string> helpop_map;
/** Handles user mode +h
*/
-class Helpop : public ModeHandler
+class Helpop : public SimpleUserModeHandler
{
public:
- Helpop(Module* Creator) : ModeHandler(Creator, "helpop", 'h', PARAM_NONE, MODETYPE_USER)
+ Helpop(Module* Creator) : SimpleUserModeHandler(Creator, "helpop", 'h')
{
oper = true;
}
-
- ModeAction OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding)
- {
- if (adding)
- {
- if (!dest->IsModeSet('h'))
- {
- dest->SetMode('h',true);
- return MODEACTION_ALLOW;
- }
- }
- else
- {
- if (dest->IsModeSet('h'))
- {
- dest->SetMode('h',false);
- return MODEACTION_ALLOW;
- }
- }
-
- return MODEACTION_DENY;
- }
};
/** Handles /HELPOP
if (parameter == "index")
{
/* iterate over all helpop items */
- user->WriteServ("290 %s :HELPOP topic index", user->nick.c_str());
+ user->WriteNumeric(290, ":HELPOP topic index");
for (std::map<irc::string, std::string>::iterator iter = helpop_map.begin(); iter != helpop_map.end(); iter++)
- {
- user->WriteServ("292 %s : %s", user->nick.c_str(), iter->first.c_str());
- }
- user->WriteServ("292 %s :*** End of HELPOP topic index", user->nick.c_str());
+ user->WriteNumeric(292, ": %s", iter->first.c_str());
+ user->WriteNumeric(292, ":*** End of HELPOP topic index");
}
else
{
- user->WriteServ("290 %s :*** HELPOP for %s", user->nick.c_str(), parameter.c_str());
- user->WriteServ("292 %s : -", user->nick.c_str());
+ user->WriteNumeric(290, ":*** HELPOP for %s", parameter.c_str());
+ user->WriteNumeric(292, ": -");
std::map<irc::string, std::string>::iterator iter = helpop_map.find(parameter);
{
// Writing a blank line will not work with some clients
if (token.empty())
- user->WriteServ("292 %s : ", user->nick.c_str());
+ user->WriteNumeric(292, ": ");
else
- user->WriteServ("292 %s :%s", user->nick.c_str(), token.c_str());
+ user->WriteNumeric(292, ":%s", token.c_str());
}
- user->WriteServ("292 %s : -", user->nick.c_str());
- user->WriteServ("292 %s :*** End of HELPOP", user->nick.c_str());
+ user->WriteNumeric(292, ": -");
+ user->WriteNumeric(292, ":*** End of HELPOP");
}
return CMD_SUCCESS;
}
class ModuleHelpop : public Module
{
- private:
std::string h_file;
CommandHelpop cmd;
Helpop ho;
{
}
- void init()
- {
- ReadConfig();
- ServerInstance->Modules->AddService(ho);
- ServerInstance->Modules->AddService(cmd);
- Implementation eventlist[] = { I_OnRehash, I_OnWhois };
- ServerInstance->Modules->Attach(eventlist, this, 2);
- }
-
- void ReadConfig()
+ void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
{
helpop_map.clear();
}
- void OnRehash(User* user)
- {
- ReadConfig();
- }
-
- void OnWhois(User* src, User* dst)
+ void OnWhois(User* src, User* dst) CXX11_OVERRIDE
{
- if (dst->IsModeSet('h'))
+ if (dst->IsModeSet(ho))
{
- ServerInstance->SendWhoisLine(src, dst, 310, std::string(src->nick)+" "+std::string(dst->nick)+" :is available for help.");
+ ServerInstance->SendWhoisLine(src, dst, 310, dst->nick+" :is available for help.");
}
}
- Version GetVersion()
+ Version GetVersion() CXX11_OVERRIDE
{
return Version("Provides the /HELPOP command for useful information", VF_VENDOR);
}