#include "users.h"
#include "channels.h"
#include "modules.h"
-#include "helperfuncs.h"
+
#include "wildcard.h"
#include "inspircd.h"
infokey = "exceptionbase_mode_" + std::string(1, mode) + "_list";
}
- std::pair<bool,std::string> ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string ¶meter)
- {
- log(DEBUG,"ListMode: ModeSet()");
+ std::pair<bool,std::string> ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string ¶meter)
+ {
modelist* el;
channel->GetExt(infokey, el);
if (el)
{
- for (modelist::iterator it = el->begin(); it != el->end(); it++)
- {
- if(parameter == it->mask)
- {
- log(DEBUG,"Found item %s",parameter.c_str());
+ for (modelist::iterator it = el->begin(); it != el->end(); it++)
+ {
+ if(parameter == it->mask)
+ {
return std::make_pair(true, parameter);
}
- }
+ }
}
- log(DEBUG,"Didnt find item %s",parameter.c_str());
return std::make_pair(false, parameter);
- }
+ }
virtual void DisplayList(userrec* user, chanrec* channel)
{
user->WriteServ( "%s %s %s %s", endoflistnumeric.c_str(), user->nick, channel->name, endofliststring.c_str());
}
+ virtual void RemoveMode(chanrec* channel)
+ {
+ modelist* el;
+ channel->GetExt(infokey, el);
+ if (el)
+ {
+ char moderemove[MAXBUF];
+ userrec* n = new userrec(ServerInstance);
+ n->SetFd(FD_MAGIC_NUMBER);
+ for(modelist::iterator it = el->begin(); it != el->end(); it++)
+ {
+ sprintf(moderemove,"-%c",this->GetModeChar());
+ const char* parameters[] = { channel->name, moderemove, it->mask.c_str() };
+ ServerInstance->SendMode(parameters, 3, n);
+ }
+ delete n;
+ }
+ }
+
+ virtual void RemoveMode(userrec* user)
+ {
+ /* Listmodes dont get set on users */
+ }
+
virtual void DoRehash()
{
ConfigReader Conf(ServerInstance);
limit.limit = Conf.ReadInteger(configtag, "limit", i, true);
if(limit.mask.size() && limit.limit > 0)
- {
chanlimits.push_back(limit);
- log(DEBUG, "Read channel listmode limit of %u for mask '%s'", limit.limit, limit.mask.c_str());
- }
- else
- {
- log(DEBUG, "Invalid tag");
- }
}
if(chanlimits.size() == 0)
{