diff --git a/swad_changelog.h b/swad_changelog.h
index 886c185ed..7309cfebd 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -103,11 +103,12 @@
/****************************** 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:
// 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.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)
diff --git a/swad_profile.c b/swad_profile.c
index daf5f6835..649758a46 100644
--- a/swad_profile.c
+++ b/swad_profile.c
@@ -82,8 +82,8 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat);
static void Prf_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures);
-static unsigned long Prf_GetRankingNumClicks (long UsrCod);
-static unsigned long Prf_GetNumUsrsWithNumClicks (void);
+static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName);
+static unsigned long Prf_GetNumUsrsWithFigure (const char *FieldName);
static unsigned long Prf_GetRankingNumClicksPerDay (long UsrCod);
static unsigned long Prf_GetNumUsrsWithNumClicksPerDay (void);
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",
UsrFigures.NumClicks,Txt_clicks);
- Prf_ShowRanking (Prf_GetRankingNumClicks (UsrDat->UsrCod),
- Prf_GetNumUsrsWithNumClicks ());
+ Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumClicks"),
+ Prf_GetNumUsrsWithFigure ("NumClicks"));
if (UsrFigures.NumDays >= 0)
{
Str_WriteFloatNum ((float) UsrFigures.NumClicks /
@@ -504,9 +504,10 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat)
UsrFigures.NumFileViews,
(UsrFigures.NumFileViews == 1) ? Txt_download :
Txt_downloads);
+ Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumFileViews"),
+ Prf_GetNumUsrsWithFigure ("NumFileViews"));
if (UsrFigures.NumDays >= 0)
{
- fprintf (Gbl.F.Out,"
");
Str_WriteFloatNum ((float) UsrFigures.NumFileViews /
(float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out," / %s",Txt_day);
@@ -542,9 +543,10 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat)
UsrFigures.NumForPst,
(UsrFigures.NumForPst == 1) ? Txt_post :
Txt_posts);
+ Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumForPst"),
+ Prf_GetNumUsrsWithFigure ("NumForPst"));
if (UsrFigures.NumDays >= 0)
{
- fprintf (Gbl.F.Out,"
");
Str_WriteFloatNum ((float) UsrFigures.NumForPst /
(float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out," / %s",Txt_day);
@@ -580,9 +582,10 @@ static void Prf_ShowHistoricUserProfile (const struct UsrData *UsrDat)
UsrFigures.NumMsgSnt,
(UsrFigures.NumMsgSnt == 1) ? Txt_message :
Txt_messages);
+ Prf_ShowRanking (Prf_GetRankingFigure (UsrDat->UsrCod,"NumMsgSnt"),
+ Prf_GetNumUsrsWithFigure ("NumMsgSnt"));
if (UsrFigures.NumDays >= 0)
{
- fprintf (Gbl.F.Out,"
");
Str_WriteFloatNum ((float) UsrFigures.NumMsgSnt /
(float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out," / %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 **********/
/*****************************************************************************/
-static unsigned long Prf_GetRankingNumClicks (long UsrCod)
+static unsigned long Prf_GetRankingFigure (long UsrCod,const char *FieldName)
{
char Query[128];
- /***** Select number of rows with number of clicks
- greater than the clicks of this user *****/
+ /***** Select number of rows with figure
+ greater than the figure of this user *****/
sprintf (Query,"SELECT COUNT(*)+1 FROM usr_figures"
" WHERE UsrCod<>'%ld'" // Really not necessary here
- " AND NumClicks>"
- "(SELECT NumClicks FROM usr_figures WHERE UsrCod='%ld')",
- UsrCod,UsrCod);
- return DB_QueryCOUNT (Query,"can not get ranking using number of clicks");
+ " AND %s>"
+ "(SELECT %s FROM usr_figures WHERE UsrCod='%ld')",
+ UsrCod,FieldName,FieldName,UsrCod);
+ 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];
/***** Select number of rows with values already calculated *****/
- sprintf (Query,"SELECT COUNT(*) FROM usr_figures WHERE NumClicks>='0'");
- return DB_QueryCOUNT (Query,"can not get number of users with number of clicks");
+ sprintf (Query,"SELECT COUNT(*) FROM usr_figures WHERE %s>='0'",
+ FieldName);
+ return DB_QueryCOUNT (Query,"can not get number of users with a figure");
}
/*****************************************************************************/