]>
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>
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
) {
36 chanservstdmessage(sender
, QM_NOTENOUGHPARAMS
, "chanstat");
40 if (!(cip
=cs_checkaccess(sender
, cargv
[0], CA_MASTERPRIV
,
41 NULL
, "chanstat", QPRIV_VIEWFULLCHANLEV
, 0)))
44 rcp
=cip
->exts
[chanservext
];
46 chanservstdmessage(sender
, QM_STATSHEADER
, cip
->name
->content
);
48 strftime(timebuf
, 30, "%d/%m/%y %H:%M", localtime(&(rcp
->created
)));
49 chanservstdmessage(sender
, QM_STATSADDED
, timebuf
);
51 /* Show opers founder/addedby/type info */
52 if (cs_privcheck(QPRIV_VIEWFULLCHANLEV
, sender
)) {
53 reguser
*founder
=NULL
, *addedby
=NULL
;
55 strftime(timebuf
, 30, "%d/%m/%y %H:%M", localtime(&(rcp
->lastactive
)));
56 chanservstdmessage(sender
, QM_STATSLASTACTIVE
, timebuf
);
59 addedby
=findreguserbyID(rcp
->addedby
);
60 chanservstdmessage(sender
, QM_ADDEDBY
, addedby
? addedby
->username
: "(unknown)");
61 founder
=findreguserbyID(rcp
->founder
);
62 chanservstdmessage(sender
, QM_FOUNDER
, founder
? founder
->username
: "(unknown)");
63 chanservstdmessage(sender
, QM_CHANTYPE
, chantypes
[rcp
->chantype
]->content
);
66 strftime(timebuf
, 30, "%d/%m/%y %H:%M", localtime(&(rcp
->created
)));
68 chanservstdmessage(sender
, QM_STATSJOINS
, timebuf
, rcp
->maxusers
, rcp
->totaljoins
,
69 (float)rcp
->totaljoins
/ ((time(NULL
)-rcp
->created
)/(3600*24)));
71 strftime(timebuf
, 30, "%d/%m/%y %H:%M", localtime(&(rcp
->statsreset
)));
73 chanservstdmessage(sender
, QM_STATSJOINS
, timebuf
, rcp
->tripusers
, rcp
->tripjoins
,
74 (float)rcp
->tripjoins
/ ((time(NULL
)-rcp
->statsreset
)/(3600*24)));