diff --git a/include/znc/Modules.h b/include/znc/Modules.h index 0ef95818..50ef5df9 100644 --- a/include/znc/Modules.h +++ b/include/znc/Modules.h @@ -471,7 +471,7 @@ public: virtual EModRet OnBroadcast(CString& sMessage); /** This module hook is called when a user mode on a channel changes. - * @param OpNick The nick who sent the mode change. + * @param pOpNick The nick who sent the mode change, or NULL if set by server. * @param Nick The nick whose channel mode changes. * @param Channel The channel on which the user mode is changed. * @param uMode The mode character that is changed, e.g. '@' for op. @@ -481,31 +481,38 @@ public: * @see CIRCSock::GetModeType() for converting uMode into a mode (e.g. * 'o' for op). */ + virtual void OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); virtual void OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); /** Called when a nick is opped on a channel */ + virtual void OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); virtual void OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); /** Called when a nick is deopped on a channel */ + virtual void OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); virtual void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); /** Called when a nick is voiced on a channel */ + virtual void OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); virtual void OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); /** Called when a nick is devoiced on a channel */ + virtual void OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); /** Called on an individual channel mode change. - * @param OpNick The nick who changes the channel mode. + * @param pOpNick The nick who changes the channel mode, or NULL if set by server. * @param Channel The channel whose mode is changed. * @param uMode The mode character that is changed. * @param sArg The argument to the mode character, if any. * @param bAdded True if this mode is added ("+"), else false. * @param bNoChange True if this mode was already effective before. */ + virtual void OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); virtual void OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); /** Called on any channel mode change. This is called before the more * detailed mode hooks like e.g. OnOp() and OnMode(). - * @param OpNick The nick who changes the channel mode. + * @param pOpNick The nick who changes the channel mode, or NULL if set by server. * @param Channel The channel whose mode is changed. * @param sModes The raw mode change, e.g. "+s-io". * @param sArgs All arguments to the mode change from sModes. */ + virtual void OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs); virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs); /** Called on any raw IRC line received from the IRC server. @@ -1066,12 +1073,19 @@ public: bool OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName); bool OnBroadcast(CString& sMessage); + bool OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); bool OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); + bool OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); bool OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); bool OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); bool OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); bool OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + bool OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs); bool OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs); + bool OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); bool OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); bool OnRaw(CString& sLine); diff --git a/modules/autoop.cpp b/modules/autoop.cpp index 260e9358..a57bc211 100644 --- a/modules/autoop.cpp +++ b/modules/autoop.cpp @@ -210,7 +210,7 @@ public: return HALTCORE; } - virtual void OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + virtual void OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { if (Nick.GetNick() == m_pNetwork->GetIRCNick().GetNick()) { const map& msNicks = Channel.GetNicks(); diff --git a/modules/buffextras.cpp b/modules/buffextras.cpp index 7a16f1a0..3e1ac2a8 100644 --- a/modules/buffextras.cpp +++ b/modules/buffextras.cpp @@ -33,8 +33,9 @@ public: Channel.AddBuffer(":" + GetModNick() + "!" + GetModName() + "@znc.in PRIVMSG " + _NAMEDFMT(Channel.GetName()) + " :{text}", sMessage); } - virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { - AddBuffer(Channel, OpNick.GetNickMask() + " set mode: " + sModes + " " + sArgs); + virtual void OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { + const CString sNickMask = pOpNick ? pOpNick->GetNickMask() : "Server"; + AddBuffer(Channel, sNickMask + " set mode: " + sModes + " " + sArgs); } virtual void OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) { diff --git a/modules/chansaver.cpp b/modules/chansaver.cpp index e5797c63..4979c396 100644 --- a/modules/chansaver.cpp +++ b/modules/chansaver.cpp @@ -54,7 +54,7 @@ public: return CONTINUE; } - virtual void OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { + virtual void OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { // This is called when we join (ZNC requests the channel modes // on join) *and* when someone changes the channel keys. // We ignore channel key "*" because of some broken nets. diff --git a/modules/log.cpp b/modules/log.cpp index ba20b0ab..260b5770 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -40,7 +40,7 @@ public: virtual void OnIRCDisconnected(); virtual EModRet OnBroadcast(CString& sMessage); - virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs); + virtual void OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs); virtual void OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& Channel, const CString& sMessage); virtual void OnQuit(const CNick& Nick, const CString& sMessage, const vector& vChans); virtual void OnJoin(const CNick& Nick, CChan& Channel); @@ -195,9 +195,10 @@ CModule::EModRet CLogMod::OnBroadcast(CString& sMessage) return CONTINUE; } -void CLogMod::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) +void CLogMod::OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { - PutLog("*** " + OpNick.GetNick() + " sets mode: " + sModes + " " + sArgs, Channel); + const CString sNick = pOpNick ? pOpNick->GetNick() : "Server"; + PutLog("*** " + sNick + " sets mode: " + sModes + " " + sArgs, Channel); } void CLogMod::OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& Channel, const CString& sMessage) diff --git a/modules/modperl/functions.in b/modules/modperl/functions.in index 80026091..56d98fe5 100644 --- a/modules/modperl/functions.in +++ b/modules/modperl/functions.in @@ -13,13 +13,13 @@ EModRet OnIRCConnecting(CIRCSock *pIRCSock) void OnIRCConnectionError(CIRCSock *pIRCSock) EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) EModRet OnBroadcast(CString& sMessage) -void OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) -void OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) -void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) +void OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) +void OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) +void OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) EModRet OnRaw(CString& sLine) EModRet OnStatusCommand(CString& sCommand) void OnModCommand(const CString& sCommand) diff --git a/modules/modperl/module.h b/modules/modperl/module.h index 8a31bccb..c66cebe2 100644 --- a/modules/modperl/module.h +++ b/modules/modperl/module.h @@ -53,13 +53,13 @@ public: virtual void OnIRCConnectionError(CIRCSock *pIRCSock); virtual EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName); virtual EModRet OnBroadcast(CString& sMessage); - virtual void OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); - virtual void OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); - virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs); + virtual void OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); + virtual void OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); + virtual void OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs); virtual EModRet OnRaw(CString& sLine); virtual EModRet OnStatusCommand(CString& sCommand); virtual void OnModCommand(const CString& sCommand); diff --git a/modules/modpython/functions.in b/modules/modpython/functions.in index 9b45225f..d3b1f4e7 100644 --- a/modules/modpython/functions.in +++ b/modules/modpython/functions.in @@ -13,13 +13,13 @@ EModRet OnIRCConnecting(CIRCSock *pIRCSock) void OnIRCConnectionError(CIRCSock *pIRCSock) EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) EModRet OnBroadcast(CString& sMessage) -void OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) -void OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) -void OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) -void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) +void OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) +void OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) +void OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) +void OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) EModRet OnRaw(CString& sLine) EModRet OnStatusCommand(CString& sCommand) void OnModCommand(const CString& sCommand) diff --git a/modules/modpython/module.h b/modules/modpython/module.h index 69cec0cf..51867bf7 100644 --- a/modules/modpython/module.h +++ b/modules/modpython/module.h @@ -69,13 +69,13 @@ public: virtual void OnIRCConnectionError(CIRCSock *pIRCSock); virtual EModRet OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName); virtual EModRet OnBroadcast(CString& sMessage); - virtual void OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); - virtual void OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange); - virtual void OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); - virtual void OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs); + virtual void OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange); + virtual void OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange); + virtual void OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange); + virtual void OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs); virtual EModRet OnRaw(CString& sLine); virtual EModRet OnStatusCommand(CString& sCommand); virtual void OnModCommand(const CString& sCommand); diff --git a/modules/q.cpp b/modules/q.cpp index 004b9538..5551b7a8 100644 --- a/modules/q.cpp +++ b/modules/q.cpp @@ -232,13 +232,13 @@ public: HandleNeed(Channel, "ov"); } - virtual void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { - if (m_bRequestPerms && IsSelf(Nick) && !IsSelf(OpNick)) + virtual void OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (m_bRequestPerms && IsSelf(Nick) && (!pOpNick || !IsSelf(*pOpNick))) HandleNeed(Channel, "o"); } - virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { - if (m_bRequestPerms && IsSelf(Nick) && !IsSelf(OpNick)) + virtual void OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (m_bRequestPerms && IsSelf(Nick) && (!pOpNick || !IsSelf(*pOpNick))) HandleNeed(Channel, "v"); } diff --git a/src/Chan.cpp b/src/Chan.cpp index 4d69d957..ec9d0d67 100644 --- a/src/Chan.cpp +++ b/src/Chan.cpp @@ -263,9 +263,7 @@ void CChan::ModeChange(const CString& sModes, const CNick* pOpNick) { pOpNick = OpNick; } - if (pOpNick) { - NETWORKMODULECALL(OnRawMode(*pOpNick, *this, sModeArg, sArgs), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); - } + NETWORKMODULECALL(OnRawMode(pOpNick, *this, sModeArg, sArgs), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); for (unsigned int a = 0; a < sModeArg.size(); a++) { const unsigned char& uMode = sModeArg[a]; @@ -297,21 +295,19 @@ void CChan::ModeChange(const CString& sModes, const CNick* pOpNick) { } } - if (uMode && pOpNick) { - NETWORKMODULECALL(OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnChanPermission(pOpNick, *pNick, *this, uMode, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); - if (uMode == CChan::M_Op) { - if (bAdd) { - NETWORKMODULECALL(OnOp(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); - } else { - NETWORKMODULECALL(OnDeop(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); - } - } else if (uMode == CChan::M_Voice) { - if (bAdd) { - NETWORKMODULECALL(OnVoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); - } else { - NETWORKMODULECALL(OnDevoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); - } + if (uMode == CChan::M_Op) { + if (bAdd) { + NETWORKMODULECALL(OnOp(pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + } else { + NETWORKMODULECALL(OnDeop(pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + } + } else if (uMode == CChan::M_Voice) { + if (bAdd) { + NETWORKMODULECALL(OnVoice(pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + } else { + NETWORKMODULECALL(OnDevoice(pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } } } @@ -338,17 +334,15 @@ void CChan::ModeChange(const CString& sModes, const CNick* pOpNick) { break; } - if (pOpNick) { - bool bNoChange; - if (bList) { - bNoChange = false; - } else if (bAdd) { - bNoChange = HasMode(uMode) && GetModeArg(uMode) == sArg; - } else { - bNoChange = !HasMode(uMode); - } - NETWORKMODULECALL(OnMode(*pOpNick, *this, uMode, sArg, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + bool bNoChange; + if (bList) { + bNoChange = false; + } else if (bAdd) { + bNoChange = HasMode(uMode) && GetModeArg(uMode) == sArg; + } else { + bNoChange = !HasMode(uMode); } + NETWORKMODULECALL(OnMode(pOpNick, *this, uMode, sArg, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if (!bList) { (bAdd) ? AddMode(uMode, sArg) : RemMode(uMode); diff --git a/src/Modules.cpp b/src/Modules.cpp index 9e38dd55..3e118d20 100644 --- a/src/Modules.cpp +++ b/src/Modules.cpp @@ -537,13 +537,35 @@ void CModule::OnIRCConnectionError(CIRCSock *IRCSock) {} CModule::EModRet CModule::OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) { return CONTINUE; } CModule::EModRet CModule::OnBroadcast(CString& sMessage) { return CONTINUE; } -void CModule::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) {} -void CModule::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} -void CModule::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} -void CModule::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} -void CModule::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} -void CModule::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) {} -void CModule::OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) {} +void CModule::OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) { + if (pOpNick) OnChanPermission(*pOpNick, Nick, Channel, uMode, bAdded, bNoChange); +} +void CModule::OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (pOpNick) OnOp(*pOpNick, Nick, Channel, bNoChange); +} +void CModule::OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (pOpNick) OnDeop(*pOpNick, Nick, Channel, bNoChange); +} +void CModule::OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (pOpNick) OnVoice(*pOpNick, Nick, Channel, bNoChange); +} +void CModule::OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (pOpNick) OnDevoice(*pOpNick, Nick, Channel, bNoChange); +} +void CModule::OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { + if (pOpNick) OnRawMode(*pOpNick, Channel, sModes, sArgs); +} +void CModule::OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { + if (pOpNick) OnMode(*pOpNick, Channel, uMode, sArg, bAdded, bNoChange); +} + +void CModule::OnChanPermission(const CNick& pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) {} +void CModule::OnOp(const CNick& pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} +void CModule::OnDeop(const CNick& pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} +void CModule::OnVoice(const CNick& pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} +void CModule::OnDevoice(const CNick& pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) {} +void CModule::OnRawMode(const CNick& pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) {} +void CModule::OnMode(const CNick& pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) {} CModule::EModRet CModule::OnRaw(CString& sLine) { return CONTINUE; } @@ -717,12 +739,20 @@ bool CModules::OnIRCConnectionError(CIRCSock *pIRCSock) { MODUNLOADCHK(OnIRCConn bool CModules::OnIRCRegistration(CString& sPass, CString& sNick, CString& sIdent, CString& sRealName) { MODHALTCHK(OnIRCRegistration(sPass, sNick, sIdent, sRealName)); } bool CModules::OnBroadcast(CString& sMessage) { MODHALTCHK(OnBroadcast(sMessage)); } bool CModules::OnIRCDisconnected() { MODUNLOADCHK(OnIRCDisconnected()); return false; } + +bool CModules::OnChanPermission(const CNick* pOpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnChanPermission(pOpNick, Nick, Channel, uMode, bAdded, bNoChange)); return false; } bool CModules::OnChanPermission(const CNick& OpNick, const CNick& Nick, CChan& Channel, unsigned char uMode, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnChanPermission(OpNick, Nick, Channel, uMode, bAdded, bNoChange)); return false; } +bool CModules::OnOp(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnOp(pOpNick, Nick, Channel, bNoChange)); return false; } bool CModules::OnOp(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnOp(OpNick, Nick, Channel, bNoChange)); return false; } +bool CModules::OnDeop(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDeop(pOpNick, Nick, Channel, bNoChange)); return false; } bool CModules::OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDeop(OpNick, Nick, Channel, bNoChange)); return false; } +bool CModules::OnVoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnVoice(pOpNick, Nick, Channel, bNoChange)); return false; } bool CModules::OnVoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnVoice(OpNick, Nick, Channel, bNoChange)); return false; } +bool CModules::OnDevoice(const CNick* pOpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDevoice(pOpNick, Nick, Channel, bNoChange)); return false; } bool CModules::OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { MODUNLOADCHK(OnDevoice(OpNick, Nick, Channel, bNoChange)); return false; } +bool CModules::OnRawMode(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { MODUNLOADCHK(OnRawMode(pOpNick, Channel, sModes, sArgs)); return false; } bool CModules::OnRawMode(const CNick& OpNick, CChan& Channel, const CString& sModes, const CString& sArgs) { MODUNLOADCHK(OnRawMode(OpNick, Channel, sModes, sArgs)); return false; } +bool CModules::OnMode(const CNick* pOpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnMode(pOpNick, Channel, uMode, sArg, bAdded, bNoChange)); return false; } bool CModules::OnMode(const CNick& OpNick, CChan& Channel, char uMode, const CString& sArg, bool bAdded, bool bNoChange) { MODUNLOADCHK(OnMode(OpNick, Channel, uMode, sArg, bAdded, bNoChange)); return false; } bool CModules::OnRaw(CString& sLine) { MODHALTCHK(OnRaw(sLine)); }