* ---------------------------------------------------
*/
+#include "inspircd.h"
#include "users.h"
#include "channels.h"
#include "modules.h"
-#include "inspircd.h"
/* $ModDesc: Provides channel modes +a and +q */
/* $ModDep: ../../include/u_listmode.h */
unload_kludge = true;
CUList* cl = channel->GetUsers();
std::string item = extend + std::string(channel->name);
- const char* mode_junk[MAXMODES+1];
+ const char* mode_junk[MAXMODES+2];
userrec* n = new userrec(MyInstance);
n->SetFd(FD_MAGIC_NUMBER);
mode_junk[0] = channel->name;
std::deque<std::string> stackresult;
for (CUList::iterator i = cl->begin(); i != cl->end(); i++)
{
- if (i->second->GetExt(item, dummyptr))
+ if (i->first->GetExt(item, dummyptr))
{
- modestack.Push(mc, i->second->nick);
+ modestack.Push(mc, i->first->nick);
}
}
unload_kludge = false;
}
- void DisplayList(userrec* user, chanrec* channel)
+ void DisplayList(userrec* user, chanrec* channel)
{
CUList* cl = channel->GetUsers();
std::string item = extend+std::string(channel->name);
- for (CUList::iterator i = cl->begin(); i != cl->end(); i++)
+ for (CUList::reverse_iterator i = cl->rbegin(); i != cl->rend(); ++i)
{
- if (i->second->GetExt(item, dummyptr))
+ if (i->first->GetExt(item, dummyptr))
{
- user->WriteServ("%d %s %s %s", list, user->nick, channel->name,i->second->nick);
+ user->WriteServ("%d %s %s %s", list, user->nick, channel->name,i->first->nick);
}
}
user->WriteServ("%d %s %s :End of channel %s list", end, user->nick, channel->name, type.c_str());
userrec* theuser = MyInstance->FindNick(parameter);
if ((!theuser) || (!channel->HasUser(theuser)))
{
- parameter = "";
+ parameter.clear();
return NULL;
}
return theuser;
{
// whoops, someones being naughty!
source->WriteServ("468 %s %s :Only servers may set channel mode +q",source->nick, channel->name);
- parameter = "";
+ parameter.clear();
return MODEACTION_DENY;
}
}
public:
ModuleChanProtect(InspIRCd* Me)
- : Module::Module(Me), FirstInGetsFounder(false), QAPrefixes(false), DeprivSelf(false), DeprivOthers(false), booting(true)
+ : Module(Me), FirstInGetsFounder(false), QAPrefixes(false), DeprivSelf(false), DeprivOthers(false), booting(true)
{
/* Load config stuff */
OnRehash(NULL,"");
List[I_OnUserKick] = List[I_OnUserPart] = List[I_OnRehash] = List[I_OnUserJoin] = List[I_OnAccessCheck] = List[I_OnSyncChannel] = 1;
}
- virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, const std::string &reason)
+ virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, const std::string &reason, bool &silent)
{
// FIX: when someone gets kicked from a channel we must remove their Extensibles!
user->Shrink("cm_founder_"+std::string(chan->name));
user->Shrink("cm_protect_"+std::string(chan->name));
}
- virtual void OnUserPart(userrec* user, chanrec* channel, const std::string &partreason)
+ virtual void OnUserPart(userrec* user, chanrec* channel, const std::string &partreason, bool &silent)
{
// FIX: when someone parts a channel we must remove their Extensibles!
user->Shrink("cm_founder_"+std::string(channel->name));
}
}
- virtual void OnUserJoin(userrec* user, chanrec* channel)
+ virtual void OnUserJoin(userrec* user, chanrec* channel, bool &silent)
{
// if the user is the first user into the channel, mark them as the founder, but only if
// the config option for it is set
std::deque<std::string> stackresult;
for (CUList::iterator i = cl->begin(); i != cl->end(); i++)
{
- if (i->second->GetExt(founder,dummyptr))
+ if (i->first->GetExt(founder,dummyptr))
{
- modestack.Push('q',i->second->nick);
+ modestack.Push('q',i->first->nick);
}
- if (i->second->GetExt(protect,dummyptr))
+ if (i->first->GetExt(protect,dummyptr))
{
- modestack.Push('a',i->second->nick);
+ modestack.Push('a',i->first->nick);
}
}
while (modestack.GetStackedLine(stackresult))
};
-extern "C" void * init_module( void )
+extern "C" DllExport void * init_module( void )
{
return new ModuleChanProtectFactory;
}