Kick all clients who are in partyline channels when the module is unloaded

This commit is contained in:
Kyle Fuller
2012-02-07 19:21:27 +00:00
parent 89543cefc3
commit 7f21e73d3d
+13
View File
@@ -70,6 +70,19 @@ public:
}
virtual ~CPartylineMod() {
// Kick all clients who are in partyline channels
for (set<CPartylineChannel*>::iterator it = m_ssChannels.begin(); it != m_ssChannels.end(); ++it) {
set<CString> ssNicks = (*it)->GetNicks();
for (set<CString>::const_iterator it2 = ssNicks.begin(); it2 != ssNicks.end(); ++it2) {
CUser* pUser = CZNC::Get().FindUser(*it2);
vector<CClient*> vClients = pUser->GetAllClients();
for (vector<CClient*>::const_iterator it3 = vClients.begin(); it3 != vClients.end(); ++it3) {
CClient* pClient = *it3;
pClient->PutClient( ":*" + GetModName() + "!znc@znc.in KICK " + (*it)->GetName() + " " + pClient->GetNick() + " :" + GetModName() + " unloaded");
}
}
}
while (m_ssChannels.size()) {
delete *m_ssChannels.begin();
m_ssChannels.erase(m_ssChannels.begin());