3c201af1c6d772b1a953627144f040bef7ab4067
[NeonServV5.git] / cmd_neonserv_devoiceall.c
1
2 #include "cmd_neonserv.h"
3
4 /*
5 * argv[0]    (optional) nick mask
6 */
7
8 CMD_BIND(neonserv_cmd_devoiceall) {
9     int issuer_access, victim_access, done_users = 0;
10     char *nickmask = NULL;
11     struct ChanUser *chanuser;
12     struct ModeBuffer *modeBuf;
13     check_mysql();
14     if(!checkChannelAccess(user, chan, "channel_canvoice", 1, 0)) {
15         reply(getTextBot(), user, "NS_ACCESS_DENIED");
16         return;
17     }
18     if(argc > 0)
19         nickmask = argv[0];
20     modeBuf = initModeBuffer(client, chan);
21     issuer_access = getChannelAccess(user, chan, 0);
22     for(chanuser = getChannelUsers(chan, NULL); chanuser; chanuser = getChannelUsers(chan, chanuser)) {
23         if(nickmask && match(nickmask, chanuser->user->nick)) continue;
24         victim_access = getChannelAccess(user, chan, 0);
25         if(victim_access >= issuer_access) continue;
26         if(!(chanuser->flags & CHANUSERFLAG_VOICED)) continue;
27         modeBufferDevoice(modeBuf, chanuser->user->nick);
28         done_users++;
29     }
30     freeModeBuffer(modeBuf);
31     reply(getTextBot(), user, "NS_DEVOICEALL_DONE", done_users, chan->name);
32     if(done_users)
33         logEvent(event);
34 }