]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chancmds/removeuser.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_AUTHED
7 * CMDDESC: Removes one or more users from a channel.
8 * CMDFUNC: csc_doremoveuser
9 * CMDPROTO: int csc_doremoveuser(void *source, int cargc, char **cargv);
12 #include "../chanserv.h"
13 #include "../../nick/nick.h"
14 #include "../../lib/flags.h"
15 #include "../../lib/irc_string.h"
16 #include "../../channel/channel.h"
17 #include "../../parser/parser.h"
18 #include "../../irc/irc.h"
19 #include "../../localuser/localuserchannel.h"
23 int csc_doremoveuser(void *source
, int cargc
, char **cargv
) {
33 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "removeuser");
37 if (!(cip
=cs_checkaccess(sender
, cargv
[0], CA_MASTERPRIV
, NULL
, "adduser", QPRIV_CHANGECHANLEV
, 0)))
40 if (cs_checkaccess(sender
, NULL
, CA_OWNERPRIV
, cip
, "adduser", QPRIV_CHANGECHANLEV
, 1))
43 rcp
=cip
->exts
[chanservext
];
45 for (i
=1;i
<cargc
;i
++) {
46 if (!(rup
=findreguser(sender
, cargv
[i
])))
49 if (!(rcup
=findreguseronchannel(rcp
, rup
))) {
50 chanservstdmessage(sender
, QM_CHANUSERUNKNOWN
, cargv
[i
], cip
->name
->content
);
54 if (CUIsOwner(rcup
)) {
55 chanservstdmessage(sender
, QM_CANNOTREMOVEOWNER
, cargv
[i
], cip
->name
->content
);
59 if (CUIsMaster(rcup
) && !isowner
&& (rup
!= getreguserfromnick(sender
))) {
60 chanservstdmessage(sender
, QM_CANNOTREMOVEMASTER
, cargv
[i
], cip
->name
->content
);
64 cs_log(sender
,"CHANLEV %s #%s -%s (%s -> +)",cip
->name
->content
,rup
->username
,
65 printflags_noprefix(rcup
->flags
, rcuflags
), printflags(rcup
->flags
, rcuflags
));
67 csdb_deletechanuser(rcup
);
68 delreguserfromchannel(rcp
, rup
);
71 rcp
->status
|= QCSTAT_OPCHECK
;
74 chanservstdmessage(sender
, QM_DONE
);