From e9a6ab44bf17e5fe61d76964b9cb09d42f0d627c Mon Sep 17 00:00:00 2001 From: brain Date: Sun, 4 Apr 2004 13:41:01 +0000 Subject: Added support for module-based chanmodes with parameters and the ability to query the mode states. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@374 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/channels.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'src/channels.cpp') diff --git a/src/channels.cpp b/src/channels.cpp index afa748f08..f6658db95 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -2,6 +2,7 @@ #include "channels.h" #include "inspircd.h" #include +#include chanrec::chanrec() { @@ -40,9 +41,56 @@ void chanrec::SetCustomMode(char mode,bool mode_on) } } +vector custom_mode_params; + void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on) { -} + log(DEBUG,"SetCustomModeParam called"); + ModeParameter M; + M.mode = mode; + strcpy(M.channel,this->name); + strcpy(M.parameter,parameter); + if (mode_on) + { + log(DEBUG,"Custom mode parameter %c %s added",mode,parameter); + custom_mode_params.push_back(M); + } + else + { + if (custom_mode_params.size()) + { + for (vector::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) + { + if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) + { + log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter); + custom_mode_params.erase(i); + return; + } + } + } + log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!"); + } +} +bool chanrec::IsCustomModeSet(char mode) +{ + log(DEBUG,"Checking ISCustomModeSet: %c %s",mode,this->custom_modes); + return (strchr(this->custom_modes,mode) != 0); +} +std::string chanrec::GetModeParameter(char mode) +{ + if (custom_mode_params.size()) + { + for (vector::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) + { + if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) + { + return std::string(i->parameter); + } + } + } + return std::string(""); +} -- cgit v1.3.1-10-gc9f91