Commit d420f861 authored by deuce's avatar deuce
Browse files

Completed Statistics Menu

parent f11a30a2
......@@ -138,6 +138,40 @@ int check_save(scfg_t *cfg,user_t *user)
return(i);
}
/****************************************************************************/
/* Takes a string in the format HH:MM:SS and returns in seconds */
/****************************************************************************/
time_t DLLCALL strtosec(char *str)
{
char *p1;
char *p2;
long int hour=0;
long int min=0;
long int sec2=0;
time_t sec=0;
hour=strtol(str,&p1,10);
if(hour<0 || hour > 24)
return(-1);
if(*p1==':') {
p1++;
min=strtol(p1,&p2,10);
if(min<0 || min > 59)
return(-1);
if(*p2==':') {
p2++;
sec2=strtol(p2,&p1,10);
if(sec2 < 0 || sec2 > 59)
return(-1);
}
}
sec=hour*60*60;
sec+=min*60;
sec+=sec2;
return(sec);
}
/* Edit "Extended comment" */
int edit_comment(scfg_t *cfg, user_t *user)
{
......@@ -176,7 +210,7 @@ int edit_settings(scfg_t *cfg, user_t *user)
* Todays Uploads
* Total Time On
* Todays Time On
* Last Call
* Last Call Time On
* Extra
* Total Downloads
* Bytes
......@@ -187,6 +221,235 @@ int edit_settings(scfg_t *cfg, user_t *user)
*/
int edit_stats(scfg_t *cfg, user_t *user)
{
int i,j;
char **opt;
char str[256];
time_t temptime,temptime2;
if((opt=(char **)MALLOC(sizeof(char *)*(MAX_OPTS+1)))==NULL)
allocfail(sizeof(char *)*(MAX_OPTS+1));
for(i=0;i<(MAX_OPTS+1);i++)
if((opt[i]=(char *)MALLOC(MAX_OPLN))==NULL)
allocfail(MAX_OPLN);
j=0;
while(1) {
i=0;
sprintf(opt[i++],"First On: %s",user->firston?timestr(cfg, &user->firston, str):"Never");
sprintf(opt[i++],"Last On: %s",user->laston?timestr(cfg, &user->laston, str):"Never");
sprintf(opt[i++],"Logon Time: %s",user->laston?timestr(cfg, &user->logontime, str):"Not On");
sprintf(opt[i++],"Total Logons: %hu",user->logons);
sprintf(opt[i++],"Todays Logons: %hu",user->ltoday);
sprintf(opt[i++],"Total Posts: %hu",user->posts);
sprintf(opt[i++],"Todays Posts: %hu",user->ptoday);
sprintf(opt[i++],"Total Email: %hu",user->emails);
sprintf(opt[i++],"Todays Email: %hu",user->etoday);
sprintf(opt[i++],"Email To Sysop: %hu",user->fbacks);
sprintf(opt[i++],"Total Time On: %hu",user->timeon);
sprintf(opt[i++],"Time On Today: %hu",user->ttoday);
sprintf(opt[i++],"Time On Last Call: %hu",user->tlast);
sprintf(opt[i++],"Extra Time Today: %hu",user->textra);
sprintf(opt[i++],"Total Downloads: %hu",user->dls);
sprintf(opt[i++],"Downloaded Bytes: %lu",user->dlb);
sprintf(opt[i++],"Total Uploads: %hu",user->uls);
sprintf(opt[i++],"Uploaded Bytes: %lu",user->ulb);
sprintf(opt[i++],"Leech: %u",user->leech);
switch(uifc.list(WIN_MID|WIN_SAV,0,0,0,&j,0,"Statistics",opt)) {
case -1:
freeopt(opt);
return(0);
break;
case 0:
/* First On */
temptime=user->firston;
unixtodstr(cfg,temptime,str);
uifc.input(WIN_MID|WIN_SAV,0,0,"First On Date",str,8,K_EDIT);
user->firston=dstrtounix(cfg, str);
temptime2=temptime-user->firston;
sectostr(temptime2,str);
uifc.input(WIN_MID|WIN_SAV,0,0,"First On Time",str,8,K_EDIT);
temptime2=strtosec(str);
if(temptime2!=-1)
user->firston += temptime2;
if(temptime!=user->firston)
modified=1;
break;
case 1:
/* Last On */
temptime=user->laston;
unixtodstr(cfg,temptime,str);
uifc.input(WIN_MID|WIN_SAV,0,0,"Last On Date",str,8,K_EDIT);
user->laston=dstrtounix(cfg, str);
temptime2=temptime-user->laston;
sectostr(temptime2,str);
uifc.input(WIN_MID|WIN_SAV,0,0,"Last On Time",str,8,K_EDIT);
temptime2=strtosec(str);
if(temptime2!=-1)
user->laston += temptime2;
if(temptime!=user->laston)
modified=1;
break;
case 2:
/* Logon Time */
temptime=user->logontime;
unixtodstr(cfg,temptime,str);
uifc.input(WIN_MID|WIN_SAV,0,0,"Logon Date",str,8,K_EDIT);
user->logontime=dstrtounix(cfg, str);
temptime2=temptime-user->logontime;
sectostr(temptime2,str);
uifc.input(WIN_MID|WIN_SAV,0,0,"Logon Time",str,8,K_EDIT);
temptime2=strtosec(str);
if(temptime2!=-1)
user->logontime += temptime2;
if(temptime!=user->logontime)
modified=1;
break;
case 3:
/* Total Logons */
sprintf(str,"%hu",user->logons);
uifc.input(WIN_MID|WIN_SAV,0,0,"Total Logons",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->logons=strtoul(str,NULL,10);
}
break;
case 4:
/* Todays Logons */
sprintf(str,"%hu",user->ltoday);
uifc.input(WIN_MID|WIN_SAV,0,0,"Todays Logons",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->ltoday=strtoul(str,NULL,10);
}
break;
case 5:
/* Total Posts */
sprintf(str,"%hu",user->posts);
uifc.input(WIN_MID|WIN_SAV,0,0,"Total Posts",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->posts=strtoul(str,NULL,10);
}
break;
case 6:
/* Todays Posts */
sprintf(str,"%hu",user->ptoday);
uifc.input(WIN_MID|WIN_SAV,0,0,"Todays Posts",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->ptoday=strtoul(str,NULL,10);
}
break;
case 7:
/* Total Emails */
sprintf(str,"%hu",user->emails);
uifc.input(WIN_MID|WIN_SAV,0,0,"Total Emails",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->emails=strtoul(str,NULL,10);
}
break;
case 8:
/* Todays Emails */
sprintf(str,"%hu",user->etoday);
uifc.input(WIN_MID|WIN_SAV,0,0,"Todays Emails",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->etoday=strtoul(str,NULL,10);
}
break;
case 9:
/* Emails to Sysop */
sprintf(str,"%hu",user->fbacks);
uifc.input(WIN_MID|WIN_SAV,0,0,"Emails to Sysop",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->fbacks=strtoul(str,NULL,10);
}
break;
case 10:
/* Total Time On */
sprintf(str,"%hu",user->timeon);
uifc.input(WIN_MID|WIN_SAV,0,0,"Total Time On",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->timeon=strtoul(str,NULL,10);
}
break;
case 11:
/* Time On Today */
sprintf(str,"%hu",user->ttoday);
uifc.input(WIN_MID|WIN_SAV,0,0,"Time On Today",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->ttoday=strtoul(str,NULL,10);
}
break;
case 12:
/* Time On Last Call */
sprintf(str,"%hu",user->tlast);
uifc.input(WIN_MID|WIN_SAV,0,0,"Time On Last Call",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->tlast=strtoul(str,NULL,10);
}
break;
case 13:
/* Extra Time Today */
sprintf(str,"%hu",user->textra);
uifc.input(WIN_MID|WIN_SAV,0,0,"Extra Time Today",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->textra=strtoul(str,NULL,10);
}
break;
case 14:
/* Total Downloads */
sprintf(str,"%hu",user->dls);
uifc.input(WIN_MID|WIN_SAV,0,0,"Total Downloads",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->dls=strtoul(str,NULL,10);
}
break;
case 15:
/* Downloaded Bytes */
sprintf(str,"%lu",user->dlb);
uifc.input(WIN_MID|WIN_SAV,0,0,"Downloaded Bytes",str,10,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->dlb=strtoul(str,NULL,10);
}
break;
case 16:
/* Total Uploads */
sprintf(str,"%hu",user->uls);
uifc.input(WIN_MID|WIN_SAV,0,0,"Total Uploads",str,5,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->uls=strtoul(str,NULL,10);
}
break;
case 17:
/* Uploaded Bytes */
sprintf(str,"%lu",user->ulb);
uifc.input(WIN_MID|WIN_SAV,0,0,"Uploaded Bytes",str,10,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->ulb=strtoul(str,NULL,10);
}
break;
case 18:
/* Leech Counter */
sprintf(str,"%u",user->leech);
uifc.input(WIN_MID|WIN_SAV,0,0,"Leech Counter",str,3,K_EDIT|K_NUMBER);
if(uifc.changes) {
modified=1;
user->leech=strtoul(str,NULL,10);
}
break;
}
}
return(0);
}
......@@ -218,7 +481,7 @@ int edit_security(scfg_t *cfg, user_t *user)
j=0;
while(1) {
i=0;
sprintf(opt[i++],"Level: %-d",user->level);
sprintf(opt[i++],"Level: %d",user->level);
sprintf(opt[i++],"Expiration: %s",user->expire?unixtodstr(cfg, user->expire, str):"Never");
sprintf(opt[i++],"Flag Set 1: %s",ltoaf(user->flags1,str));
sprintf(opt[i++],"Flag Set 2: %s",ltoaf(user->flags2,str));
......@@ -226,9 +489,9 @@ int edit_security(scfg_t *cfg, user_t *user)
sprintf(opt[i++],"Flag Set 4: %s",ltoaf(user->flags4,str));
sprintf(opt[i++],"Exemptions: %s",ltoaf(user->exempt,str));
sprintf(opt[i++],"Restrictions: %s",ltoaf(user->rest,str));
sprintf(opt[i++],"Credits: %-lu",user->cdt);
sprintf(opt[i++],"Free Credits: %-lu",user->freecdt);
sprintf(opt[i++],"Minutes: %-lu",user->min);
sprintf(opt[i++],"Credits: %lu",user->cdt);
sprintf(opt[i++],"Free Credits: %lu",user->freecdt);
sprintf(opt[i++],"Minutes: %lu",user->min);
opt[i][0]=0;
switch(uifc.list(WIN_MID|WIN_SAV,0,0,0,&j,0,"Security Settings",opt)) {
case -1:
......@@ -351,7 +614,6 @@ int edit_security(scfg_t *cfg, user_t *user)
* Gender
* Connection
* Handle
* Bitrate
* Password
* Address 1
* Address 2
......@@ -381,7 +643,6 @@ int edit_personal(scfg_t *cfg, user_t *user)
sprintf(opt[i++],"Gender: %c",user->sex);
sprintf(opt[i++],"Connection: %s",user->modem);
sprintf(opt[i++],"Handle: %s",user->alias);
sprintf(opt[i++],"Bitrate: Hrm...");
sprintf(opt[i++],"Password: %s",user->pass);
sprintf(opt[i++],"Location: %s",user->location);
sprintf(opt[i++],"Address: %s",user->address);
......@@ -450,27 +711,24 @@ int edit_personal(scfg_t *cfg, user_t *user)
modified=1;
break;
case 9:
/* Bitrate */
break;
case 10:
/* Password */
uifc.input(WIN_MID|WIN_SAV,0,0,"Password",user->pass,LEN_PASS,K_EDIT);
if(uifc.changes)
modified=1;
break;
case 11:
case 10:
/* Location */
uifc.input(WIN_MID|WIN_SAV,0,0,"Location",user->location,LEN_LOCATION,K_EDIT);
if(uifc.changes)
modified=1;
break;
case 12:
case 11:
/* Address */
uifc.input(WIN_MID|WIN_SAV,0,0,"Address",user->address,LEN_ADDRESS,K_EDIT);
if(uifc.changes)
modified=1;
break;
case 13:
case 12:
/* Postal/Zip */
uifc.input(WIN_MID|WIN_SAV,0,0,"Postal/Zip Code",user->zipcode,LEN_ZIPCODE,K_EDIT);
if(uifc.changes)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment