]>
jfr.im git - irc/quakenet/newserv.git/blob - chanserv/chancmds/chanstat.c
1 /* Automatically generated by refactor.pl.
5 * CMDLEVEL: QCMD_AUTHED
7 * CMDDESC: Displays channel activity statistics.
8 * CMDFUNC: csc_dochanstat
9 * CMDPROTO: int csc_dochanstat(void *source, int cargc, char **cargv);
10 * CMDHELP: Usage: CHANSTAT <channel> [RESET]
11 * CMDHELP: Shows some statistics about a channel, including total number of joins and
12 * CMDHELP: maximum channel size. Two sets of statistics are displayed, a lifetime
13 * CMDHELP: counter, and a trip meter counter which can be reset. Where:
14 * CMDHELP: channel - channel to display statistics for.
15 * CMDHELP: CHANSTAT requires master (+m) access on the named channel.
18 #include "../chanserv.h"
19 #include "../../nick/nick.h"
20 #include "../../lib/flags.h"
21 #include "../../lib/irc_string.h"
22 #include "../../channel/channel.h"
23 #include "../../parser/parser.h"
24 #include "../../irc/irc.h"
25 #include "../../localuser/localuserchannel.h"
29 int csc_dochanstat(void *source
, int cargc
, char **cargv
) {
35 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "chanstat");
39 if (!(cip
=cs_checkaccess(sender
, cargv
[0], CA_MASTERPRIV
,
40 NULL
, "chanstat", QPRIV_VIEWFULLCHANLEV
, 0)))
43 rcp
=cip
->exts
[chanservext
];
45 chanservstdmessage(sender
, QM_STATSHEADER
, cip
->name
->content
);
47 chanservstdmessage(sender
, QM_STATSADDED
, rcp
->created
);
49 /* Show opers founder/addedby/type info */
50 if (cs_privcheck(QPRIV_VIEWFULLCHANLEV
, sender
)) {
51 reguser
*founder
=NULL
, *addedby
=NULL
;
53 chanservstdmessage(sender
, QM_STATSLASTACTIVE
, rcp
->lastactive
);
55 addedby
=findreguserbyID(rcp
->addedby
);
56 chanservstdmessage(sender
, QM_ADDEDBY
, addedby
? addedby
->username
: "(unknown)");
57 founder
=findreguserbyID(rcp
->founder
);
58 chanservstdmessage(sender
, QM_FOUNDER
, founder
? founder
->username
: "(unknown)");
59 chanservstdmessage(sender
, QM_CHANTYPE
, chantypes
[rcp
->chantype
]->content
);
62 chanservstdmessage(sender
, QM_STATSJOINS
, rcp
->created
, rcp
->maxusers
, rcp
->totaljoins
,
63 (float)rcp
->totaljoins
/ ((time(NULL
)-rcp
->created
)/(3600*24)));
65 chanservstdmessage(sender
, QM_STATSJOINS
, rcp
->statsreset
, rcp
->tripusers
, rcp
->tripjoins
,
66 (float)rcp
->tripjoins
/ ((time(NULL
)-rcp
->statsreset
)/(3600*24)));
68 if (cargc
>1 && !ircd_strcmp(cargv
[1],"reset")) {
69 rcp
->statsreset
=time(NULL
);
72 chanservstdmessage(sender
, QM_STATSRESET
, cip
->name
->content
);
73 csdb_updatechannel(rcp
);