return TIME.str();
}
-class ListItem
+class ListItem : public classbase
{
public:
std::string nick;
std::string time;
};
-class ListLimit
+class ListLimit : public classbase
{
public:
std::string mask;
{
protected:
Server* Srv;
-
std::string infokey;
std::string listnumeric;
std::string endoflistnumeric;
std::string endofliststring;
+ bool tidy;
std::string configtag;
limitlist chanlimits;
public:
- ListModeBase(Server* serv, char modechar, const std::string &eolstr, const std::string &lnum, const std::string &eolnum, const std::string &ctag = "banlist")
- : ModeHandler(modechar, 1, 1, true, MODETYPE_CHANNEL, false), Srv(serv), listnumeric(lnum), endoflistnumeric(eolnum), endofliststring(eolstr), configtag(ctag)
+ ListModeBase(Server* serv, char modechar, const std::string &eolstr, const std::string &lnum, const std::string &eolnum, bool autotidy, const std::string &ctag = "banlist")
+ : ModeHandler(modechar, 1, 1, true, MODETYPE_CHANNEL, false), Srv(serv), listnumeric(lnum), endoflistnumeric(eolnum), endofliststring(eolstr), tidy(autotidy), configtag(ctag)
{
this->DoRehash();
infokey = "exceptionbase_mode_" + std::string(1, mode) + "_list";
virtual void DisplayList(userrec* user, chanrec* channel)
{
- modelist* el = (modelist*)channel->GetExt(infokey);
+ modelist* el;
+ channel->GetExt(infokey, el);
if (el)
{
for(modelist::iterator it = el->begin(); it != el->end(); it++)
virtual ModeAction OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)
{
// Try and grab the list
- modelist* el = (modelist*)channel->GetExt(infokey);
+ modelist* el;
+ channel->GetExt(infokey, el);
if (adding)
{
}
// Clean the mask up
- ModeParser::CleanMask(parameter);
+ if (this->tidy)
+ ModeParser::CleanMask(parameter);
// Check if the item already exists in the list
for (modelist::iterator it = el->begin(); it != el->end(); it++)
virtual void DoChannelDelete(chanrec* chan)
{
- modelist* list = (modelist*)chan->GetExt(infokey);
+ modelist* list;
+ chan->GetExt(infokey, list);
if (list)
{
virtual void DoSyncChannel(chanrec* chan, Module* proto, void* opaque)
{
- modelist* list = (modelist*)chan->GetExt(infokey);
+ modelist* list;
+ chan->GetExt(infokey, list);
if (list)
{
for (modelist::iterator it = list->begin(); it != list->end(); it++)
{
chanrec* chan = (chanrec*)item;
- modelist* list = (modelist*)chan->GetExt(infokey);
+ modelist* list;
+ chan->GetExt(infokey, list);
if (list)
{