X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fu_listmode.h;h=b656196e9a476388c9663b807d976b83ba8fba00;hb=a1f073f66f4b985bf776b9be2015136209c0c311;hp=a03efce00b599e69a1a0f6578d9ad37c3724e018;hpb=f16ef27e0e5df0249ecb38f7adf76735a550ad0a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/u_listmode.h b/include/u_listmode.h index a03efce00..b656196e9 100644 --- a/include/u_listmode.h +++ b/include/u_listmode.h @@ -25,7 +25,7 @@ inline std::string stringtime() return TIME.str(); } -class ListItem +class ListItem : public classbase { public: std::string nick; @@ -33,7 +33,7 @@ public: std::string time; }; -class ListLimit +class ListLimit : public classbase { public: std::string mask; @@ -48,11 +48,11 @@ class ListModeBase : public ModeHandler { protected: Server* Srv; - bool tidy; std::string infokey; std::string listnumeric; std::string endoflistnumeric; std::string endofliststring; + bool tidy; std::string configtag; limitlist chanlimits; @@ -64,9 +64,30 @@ class ListModeBase : public ModeHandler infokey = "exceptionbase_mode_" + std::string(1, mode) + "_list"; } + std::pair ModeSet(userrec* source, userrec* dest, chanrec* channel, const std::string ¶meter) + { + log(DEBUG,"ListMode: ModeSet()"); + 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()); + 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) { - modelist* el = (modelist*)channel->GetExt(infokey); + modelist* el; + channel->GetExt(infokey, el); if (el) { for(modelist::iterator it = el->begin(); it != el->end(); it++) @@ -117,7 +138,8 @@ class ListModeBase : public ModeHandler 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) { @@ -238,7 +260,8 @@ class ListModeBase : public ModeHandler virtual void DoChannelDelete(chanrec* chan) { - modelist* list = (modelist*)chan->GetExt(infokey); + modelist* list; + chan->GetExt(infokey, list); if (list) { @@ -249,7 +272,8 @@ class ListModeBase : public ModeHandler 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++) @@ -265,7 +289,8 @@ class ListModeBase : public ModeHandler { chanrec* chan = (chanrec*)item; - modelist* list = (modelist*)chan->GetExt(infokey); + modelist* list; + chan->GetExt(infokey, list); if (list) {