]> jfr.im git - irc/quakenet/newserv.git/blame - chanserv/chancmds/unsuspendchan.c
Merge chanserv-live into default.
[irc/quakenet/newserv.git] / chanserv / chancmds / unsuspendchan.c
CommitLineData
1dd6d55d 1/* Automatically generated by refactor.pl.
2 *
3 *
4 * CMDNAME: unsuspendchan
5 * CMDLEVEL: QCMD_OPER
dae08100 6 * CMDARGS: 2
1dd6d55d 7 * CMDDESC: Unsuspends a channel from the bot.
8 * CMDFUNC: csc_dounsuspendchan
9 * CMDPROTO: int csc_dounsuspendchan(void *source, int cargc, char **cargv);
dae08100 10 * CMDHELP: Usage: unsuspendchan <channel> <reason>
94e4d2f4 11 * CMDHELP: Unsuspends specified channel.
1dd6d55d 12 */
13
14#include "../chanserv.h"
15#include "../../nick/nick.h"
16#include "../../lib/flags.h"
17#include "../../lib/irc_string.h"
18#include "../../channel/channel.h"
19#include "../../parser/parser.h"
20#include "../../irc/irc.h"
21#include "../../localuser/localuserchannel.h"
22#include <string.h>
23#include <stdio.h>
24
25int csc_dounsuspendchan(void *source, int cargc, char **cargv) {
26 nick *sender=source;
27 reguser *rup=getreguserfromnick(sender);
28 chanindex *cip;
29 regchan *rcp;
dae08100
CP
30 reguser *suspendedby;
31 char *csuspendedby, *csuspendedreason;
32 char *unsuspendreason;
1dd6d55d 33
34 if (!rup)
35 return CMD_ERROR;
36
dae08100 37 if (cargc<2) {
1dd6d55d 38 chanservstdmessage(sender, QM_NOTENOUGHPARAMS, "unsuspendchan");
39 return CMD_ERROR;
40 }
41
dae08100
CP
42 unsuspendreason = cargv[1];
43 if(!checkreason(sender, unsuspendreason))
44 return CMD_ERROR;
45
1dd6d55d 46 if (!(cip=findchanindex(cargv[0])) || !(rcp=cip->exts[chanservext])) {
47 chanservstdmessage(sender, QM_UNKNOWNCHAN, cargv[0]);
48 return CMD_ERROR;
49 }
50
51 if(!CIsSuspended(rcp)) {
52 chanservstdmessage(sender, QM_CHANNELNOTSUSPENDED, cip->name->content);
53 cs_log(sender,"UNSUSPENDCHAN %s is not suspended",cip->name->content);
54 return CMD_ERROR;
55 }
56
57 CClearSuspended(rcp);
dae08100
CP
58
59 suspendedby = findreguserbyID(rcp->suspendby);
60 csuspendedby = suspendedby?suspendedby->username:"(unknown)";
61 csuspendedreason = rcp->suspendreason?rcp->suspendreason->content:"(no reason)";
62
63 chanservwallmessage("%s (%s) used UNSUSPENDCHAN on %s (suspended by: %s, suspension reason: %s), unsuspension reason: %s", sender->nick, rup->username, cip->name->content, csuspendedby, csuspendedreason, unsuspendreason);
64 cs_log(sender,"UNSUSPENDCHAN %s (suspended by: %s, suspension reason: %s), unsuspension reason: %s", cip->name->content, csuspendedby, csuspendedreason, unsuspendreason);
65
1dd6d55d 66 freesstring(rcp->suspendreason);
67 rcp->suspendreason = NULL;
68 rcp->suspendby = 0;
69
9d53322f
CP
70 if(cip->channel)
71 chanservjoinchan(cip->channel);
1dd6d55d 72
73 csdb_updatechannel(rcp);
74 chanservstdmessage(sender, QM_DONE);
75
76 return CMD_OK;
77}