From 910fd5a78d5fec88a415e2917f4c386d2ae79c94 Mon Sep 17 00:00:00 2001 From: prozacx Date: Sat, 14 May 2005 00:22:23 +0000 Subject: [PATCH] Added calls to module hooks: OnChanPermission() OnOp() OnDeop() OnVoice() OnDevoice() git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@281 726aef4b-f618-498e-8847-2d620e286838 --- Chan.cpp | 62 ++++++++++++++++++++++---------------------------------- 1 file changed, 24 insertions(+), 38 deletions(-) diff --git a/Chan.cpp b/Chan.cpp index 64eb8f2d..60ad3e38 100644 --- a/Chan.cpp +++ b/Chan.cpp @@ -160,14 +160,14 @@ void CChan::OnWho(const CString& sNick, const CString& sIdent, const CString& sH } void CChan::ModeChange(const CString& sModes, const CString& sOpNick) { + CNick* pOpNick = FindNick(sOpNick); CString sModeArg = sModes.Token(0); CString sArgs = sModes.Token(1, true); bool bAdd = true; #ifdef _MODULES - CNick* pNick = FindNick(sOpNick); - if (pNick) { - m_pUser->GetModules().OnRawMode(*pNick, *this, sModeArg, sArgs); + if (pOpNick) { + m_pUser->GetModules().OnRawMode(*pOpNick, *this, sModeArg, sArgs); } #endif @@ -203,6 +203,27 @@ void CChan::ModeChange(const CString& sModes, const CString& sOpNick) { RemPerm(uPerm); } } +#ifdef _MODULES + bool bNoChange = (pNick->HasPerm(uPerm) == bAdd); + + if (uMode && pOpNick) { + m_pUser->GetModules().OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange); + + if (uMode == CChan::M_Op) { + if (bAdd) { + m_pUser->GetModules().OnOp(*pOpNick, *pNick, *this, bNoChange); + } else { + m_pUser->GetModules().OnDeop(*pOpNick, *pNick, *this, bNoChange); + } + } else if (uMode == CChan::M_Voice) { + if (bAdd) { + m_pUser->GetModules().OnVoice(*pOpNick, *pNick, *this, bNoChange); + } else { + m_pUser->GetModules().OnDevoice(*pOpNick, *pNick, *this, bNoChange); + } + } + } +#endif } } } else { @@ -443,41 +464,6 @@ void CChan::OnOp(const CString& sOpNick, const CString& sNick, bool bOpped) { } } -void CChan::OnVoice(const CString& sOpNick, const CString& sNick, bool bVoiced) { - CNick* pNick = FindNick(sNick); - - if (pNick) { - bool bNoChange = (pNick->HasPerm(Voice) == bVoiced); - -#ifdef _MODULES - CNick* pOpNick = FindNick(sOpNick); - - if (pOpNick) { - if (bVoiced) { - m_pUser->GetModules().OnVoice(*pOpNick, *pNick, *this, bNoChange); - } else { - m_pUser->GetModules().OnDevoice(*pOpNick, *pNick, *this, bNoChange); - } - } -#endif - - if (sNick.CaseCmp(m_pUser->GetCurNick()) == 0) { - (bVoiced) ? AddPerm(Voice) : RemPerm(Voice); - } - - if (bNoChange) { - // If no change, return - return; - } - - bool bChange = (bVoiced) ? pNick->AddPerm(Voice) : pNick->RemPerm(Voice); - - if (bChange) { - (bVoiced) ? IncPermCount(Voice) : DecPermCount(Voice); - } - } -} - CNick* CChan::FindNick(const CString& sNick) const { map::const_iterator it = m_msNicks.find(sNick); return (it != m_msNicks.end()) ? it->second : NULL;