-ModeAction ModeChannelVoice::OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)
+void ModeChannelVoice::RemoveMode(Channel* channel, irc::modestacker* stack)
+{
+ CUList* clist = channel->GetVoicedUsers();
+ CUList copy;
+
+ for (CUList::iterator i = clist->begin(); i != clist->end(); i++)
+ {
+ User* n = i->first;
+ copy.insert(std::make_pair(n,n->nick));
+ }
+
+ for (CUList::iterator i = copy.begin(); i != copy.end(); i++)
+ {
+ if (stack)
+ stack->Push(this->GetModeChar(), i->first->nick);
+ else
+ {
+ std::vector<std::string> parameters; parameters.push_back(channel->name); parameters.push_back("-v"); parameters.push_back(i->first->nick);
+ ServerInstance->SendMode(parameters, ServerInstance->FakeClient);
+ }
+ }
+}
+
+void ModeChannelVoice::RemoveMode(User*, irc::modestacker* stack)
+{
+}
+
+ModeAction ModeChannelVoice::OnModeChange(User* source, User*, Channel* channel, std::string ¶meter, bool adding, bool servermode)