Version 14.94

This commit is contained in:
Antonio Cañas Vargas 2015-03-17 01:03:22 +01:00
parent c5dde0ef53
commit cf191ade79
2 changed files with 24 additions and 19 deletions

View File

@ -103,11 +103,12 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.93.4 (2015/03/17)" #define Log_PLATFORM_VERSION "SWAD 14.94 (2015/03/17)"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/* /*
Version 14.94: Mar 17, 2015 Ranking for downloads, forum posts and messages in user's profile. (182666 lines)
Version 14.93.4: Mar 17, 2015 Links in user's figures to ranking. (182661 lines) Version 14.93.4: Mar 17, 2015 Links in user's figures to ranking. (182661 lines)
Version 14.93.3: Mar 16, 2015 Changes in rankings. (182630 lines) Version 14.93.3: Mar 16, 2015 Changes in rankings. (182630 lines)
Version 14.93.2: Mar 16, 2015 New rankings for downloads, forum posts and messages sent. (182628 lines) Version 14.93.2: Mar 16, 2015 New rankings for downloads, forum posts and messages sent. (182628 lines)

View File

@ -82,8 +82,8 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat);
static void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures); static void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures);
static unsigned long Prf_GetRankingNumClicks (long UsrCod); static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName);
static unsigned long Prf_GetNumUsrsWithNumClicks (void); static unsigned long Prf_GetNumUsrsWithFigure (const char *FieldName);
static unsigned long Prf_GetRankingNumClicksPerDay (long UsrCod); static unsigned long Prf_GetRankingNumClicksPerDay (long UsrCod);
static unsigned long Prf_GetNumUsrsWithNumClicksPerDay (void); static unsigned long Prf_GetNumUsrsWithNumClicksPerDay (void);
static void Prf_ShowRanking (unsigned long Rank,unsigned long NumUsrs); static void Prf_ShowRanking (unsigned long Rank,unsigned long NumUsrs);
@ -463,8 +463,8 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat)
{ {
fprintf (Gbl.F.Out,"%ld %s", fprintf (Gbl.F.Out,"%ld %s",
UsrFigures.NumClicks,Txt_clicks); UsrFigures.NumClicks,Txt_clicks);
Prf_ShowRanking (Prf_GetRankingNumClicks (UsrDat->UsrCod), Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumClicks"),
Prf_GetNumUsrsWithNumClicks ()); Prf_GetNumUsrsWithFigure ("NumClicks"));
if (UsrFigures.NumDays >= 0) if (UsrFigures.NumDays >= 0)
{ {
Str_WriteFloatNum ((float) UsrFigures.NumClicks / Str_WriteFloatNum ((float) UsrFigures.NumClicks /
@ -504,9 +504,10 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat)
UsrFigures.NumFileViews, UsrFigures.NumFileViews,
(UsrFigures.NumFileViews == 1) ? Txt_download : (UsrFigures.NumFileViews == 1) ? Txt_download :
Txt_downloads); Txt_downloads);
Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumFileViews"),
Prf_GetNumUsrsWithFigure ("NumFileViews"));
if (UsrFigures.NumDays >= 0) if (UsrFigures.NumDays >= 0)
{ {
fprintf (Gbl.F.Out,"<br />");
Str_WriteFloatNum ((float) UsrFigures.NumFileViews / Str_WriteFloatNum ((float) UsrFigures.NumFileViews /
(float) (UsrFigures.NumDays + 1)); (float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day); fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day);
@ -542,9 +543,10 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat)
UsrFigures.NumForPst, UsrFigures.NumForPst,
(UsrFigures.NumForPst == 1) ? Txt_post : (UsrFigures.NumForPst == 1) ? Txt_post :
Txt_posts); Txt_posts);
Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumForPst"),
Prf_GetNumUsrsWithFigure ("NumForPst"));
if (UsrFigures.NumDays >= 0) if (UsrFigures.NumDays >= 0)
{ {
fprintf (Gbl.F.Out,"<br />");
Str_WriteFloatNum ((float) UsrFigures.NumForPst / Str_WriteFloatNum ((float) UsrFigures.NumForPst /
(float) (UsrFigures.NumDays + 1)); (float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day); fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day);
@ -580,9 +582,10 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat)
UsrFigures.NumMsgSnt, UsrFigures.NumMsgSnt,
(UsrFigures.NumMsgSnt == 1) ? Txt_message : (UsrFigures.NumMsgSnt == 1) ? Txt_message :
Txt_messages); Txt_messages);
Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumMsgSnt"),
Prf_GetNumUsrsWithFigure ("NumMsgSnt"));
if (UsrFigures.NumDays >= 0) if (UsrFigures.NumDays >= 0)
{ {
fprintf (Gbl.F.Out,"<br />");
Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt / Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt /
(float) (UsrFigures.NumDays + 1)); (float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day); fprintf (Gbl.F.Out,"&nbsp;/&nbsp;%s",Txt_day);
@ -669,31 +672,32 @@ static void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures)
/********** Get ranking of a user according to the number of clicks **********/ /********** Get ranking of a user according to the number of clicks **********/
/*****************************************************************************/ /*****************************************************************************/
static unsigned long Prf_GetRankingNumClicks (long UsrCod) static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName)
{ {
char Query[128]; char Query[128];
/***** Select number of rows with number of clicks /***** Select number of rows with figure
greater than the clicks of this user *****/ greater than the figure of this user *****/
sprintf (Query,"SELECT COUNT(*)+1 FROM usr_figures" sprintf (Query,"SELECT COUNT(*)+1 FROM usr_figures"
" WHERE UsrCod<>'%ld'" // Really not necessary here " WHERE UsrCod<>'%ld'" // Really not necessary here
" AND NumClicks>" " AND %s>"
"(SELECT NumClicks FROM usr_figures WHERE UsrCod='%ld')", "(SELECT %s FROM usr_figures WHERE UsrCod='%ld')",
UsrCod,UsrCod); UsrCod,FieldName,FieldName,UsrCod);
return DB_QueryCOUNT (Query,"can not get ranking using number of clicks"); return DB_QueryCOUNT (Query,"can not get ranking using a figure");
} }
/*****************************************************************************/ /*****************************************************************************/
/******************* Get number of users with number of clicks ***************/ /********************* Get number of users with a figure *********************/
/*****************************************************************************/ /*****************************************************************************/
static unsigned long Prf_GetNumUsrsWithNumClicks (void) static unsigned long Prf_GetNumUsrsWithFigure (const char *FieldName)
{ {
char Query[128]; char Query[128];
/***** Select number of rows with values already calculated *****/ /***** Select number of rows with values already calculated *****/
sprintf (Query,"SELECT COUNT(*) FROM usr_figures WHERE NumClicks>='0'"); sprintf (Query,"SELECT COUNT(*) FROM usr_figures WHERE %s>='0'",
return DB_QueryCOUNT (Query,"can not get number of users with number of clicks"); FieldName);
return DB_QueryCOUNT (Query,"can not get number of users with a figure");
} }
/*****************************************************************************/ /*****************************************************************************/