]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modes/cmode_v.cpp
Merge pull request #1050 from Aviator45003/insp20
[user/henk/code/inspircd.git] / src / modes / cmode_v.cpp
1 /*
2  * InspIRCd -- Internet Relay Chat Daemon
3  *
4  *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
5  *   Copyright (C) 2007 Robin Burchell <robin+git@viroteck.net>
6  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
7  *   Copyright (C) 2006 Craig Edwards <craigedwards@brainbox.cc>
8  *
9  * This file is part of InspIRCd.  InspIRCd is free software: you can
10  * redistribute it and/or modify it under the terms of the GNU General Public
11  * License as published by the Free Software Foundation, version 2.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  */
21
22
23 #include "inspircd.h"
24 #include "configreader.h"
25 #include "mode.h"
26 #include "channels.h"
27 #include "users.h"
28 #include "modules.h"
29 #include "modes/cmode_v.h"
30
31 ModeChannelVoice::ModeChannelVoice() : ModeHandler(NULL, "voice", 'v', PARAM_ALWAYS, MODETYPE_CHANNEL)
32 {
33         list = true;
34         prefix = '+';
35         levelrequired = HALFOP_VALUE;
36         m_paramtype = TR_NICK;
37 }
38
39 unsigned int ModeChannelVoice::GetPrefixRank()
40 {
41         return VOICE_VALUE;
42 }
43
44 void ModeChannelVoice::RemoveMode(Channel* channel, irc::modestacker* stack)
45 {
46         const UserMembList* clist = channel->GetUsers();
47
48         for (UserMembCIter i = clist->begin(); i != clist->end(); i++)
49         {
50                 if (stack)
51                         stack->Push(this->GetModeChar(), i->first->nick);
52                 else
53                 {
54                         std::vector<std::string> parameters;
55                         parameters.push_back(channel->name);
56                         parameters.push_back("-v");
57                         parameters.push_back(i->first->nick);
58                         ServerInstance->SendMode(parameters, ServerInstance->FakeClient);
59                 }
60         }
61 }
62
63 void ModeChannelVoice::RemoveMode(User*, irc::modestacker* stack)
64 {
65 }
66
67 ModeAction ModeChannelVoice::OnModeChange(User* source, User*, Channel* channel, std::string &parameter, bool adding)
68 {
69         return MODEACTION_ALLOW;
70 }