mirror of
https://github.com/znc/znc.git
synced 2026-08-06 08:52:57 +02:00
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
This commit is contained in:
@@ -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<CString,CNick*>::const_iterator it = m_msNicks.find(sNick);
|
||||
return (it != m_msNicks.end()) ? it->second : NULL;
|
||||
|
||||
Reference in New Issue
Block a user