Version 14.87

This commit is contained in:
Antonio Cañas Vargas 2015-03-11 21:31:00 +01:00
parent d3da2d9825
commit dc6935c1d2
3 changed files with 106 additions and 7 deletions

View File

@ -103,11 +103,12 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 14.86 (2015/03/11)"
#define Log_PLATFORM_VERSION "SWAD 14.87 (2015/03/11)"
// 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.87: Mar 11, 2015 Ranking according to the number of clicks. (181611 lines)
Version 14.86: Mar 11, 2015 Show user's figures per days. (181525 lines)
Version 14.85.2: Mar 11, 2015 Refactoring in user's figures. (181478 lines)
Version 14.85.1: Mar 11, 2015 Remove user's figures when removing user's account. (181472 lines)

View File

@ -4542,6 +4542,27 @@ const char *Txt_Clicks =
"Cliques";
#endif
const char *Txt_clicks =
#if L==0
"clics";
#elif L==1
"Klicks";
#elif L==2
"clicks";
#elif L==3
"clics";
#elif L==4
"clics";
#elif L==5
"clics"; // Okoteve traducción
#elif L==6
"clic";
#elif L==7
"kliknięcia";
#elif L==8
"cliques";
#endif
const char *Txt_Clicks_without_degree_selected =
#if L==0
"Clics sense seleccionar titulació";

View File

@ -185,6 +185,10 @@ static float Usr_GetNumUsrsPerCrs (Rol_Role_t Role);
static void Usr_ShowUserProfile (void);
static void Usr_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures);
static unsigned long Usr_GetRankingNumClicks (long UsrCod);
static unsigned long Usr_GetNumUsrsWithNumClicks (void);
static unsigned long Usr_GetRankingNumClicksPerDay (long UsrCod);
static unsigned long Usr_GetNumUsrsWithNumClicksPerDay (void);
static void Usr_GetFirstClickFromLogAndStoreAsUsrFigure (long UsrCod);
static void Usr_GetNumClicksAndStoreAsUsrFigure (long UsrCod);
static void Usr_GetNumForPstAndStoreAsUsrFigure (long UsrCod);
@ -7589,6 +7593,8 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
extern const char *Txt_days;
extern const char *Txt_Calculate;
extern const char *Txt_Clicks;
extern const char *Txt_of_PART_OF_A_TOTAL;
extern const char *Txt_clicks;
extern const char *Txt_Courses_as_a_ROLE;
extern const char *Txt_ROLES_SINGULAR_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_ROLES_PLURAL_abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
@ -7605,7 +7611,7 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/***** Start table *****/
Lay_StartRoundFrameTable10 (NULL,2,Txt_Figures);
/***** First click time and number of clicks *****/
/***** Get figures *****/
Usr_GetUsrFigures (UsrDat->UsrCod,&UsrFigures);
/* First click time */
@ -7644,22 +7650,30 @@ void Usr_ShowDetailsUserProfile (const struct UsrData *UsrDat)
/* Number of clicks */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s\""
" style=\"text-align:right; vertical-align:middle;\">"
" style=\"text-align:right; vertical-align:top;\">"
"%s:"
"</td>"
"<td class=\"DAT\""
" style=\"text-align:left; vertical-align:middle;\">",
" style=\"text-align:left; vertical-align:top;\">",
The_ClassFormul[Gbl.Prefs.Theme],
Txt_Clicks);
if (UsrFigures.NumClicks >= 0)
{
fprintf (Gbl.F.Out,"%ld",UsrFigures.NumClicks);
fprintf (Gbl.F.Out,"%ld, #%ld %s %ld",
UsrFigures.NumClicks,
Usr_GetRankingNumClicks (UsrDat->UsrCod),
Txt_of_PART_OF_A_TOTAL,
Usr_GetNumUsrsWithNumClicks ());
if (UsrFigures.NumDays >= 0)
{
fprintf (Gbl.F.Out," (");
fprintf (Gbl.F.Out,"<br />");
Str_WriteFloatNum ((float) UsrFigures.NumClicks /
(float) (UsrFigures.NumDays + 1));
fprintf (Gbl.F.Out,"/%s)",Txt_day);
fprintf (Gbl.F.Out," %s / %s, #%ld %s %ld",
Txt_clicks,Txt_day,
Usr_GetRankingNumClicksPerDay (UsrDat->UsrCod),
Txt_of_PART_OF_A_TOTAL,
Usr_GetNumUsrsWithNumClicksPerDay ());
}
}
else // Number of clicks is unknown
@ -7861,6 +7875,69 @@ static void Usr_GetUsrFigures (long UsrCod,struct UsrFigures *UsrFigures)
DB_FreeMySQLResult (&mysql_res);
}
/*****************************************************************************/
/********** Get ranking of a user according to the number of clicks **********/
/*****************************************************************************/
static unsigned long Usr_GetRankingNumClicks (long UsrCod)
{
char Query[128];
sprintf (Query,"SELECT COUNT(*)+1 FROM usr_figures"
" WHERE NumClicks>"
"(SELECT NumClicks FROM usr_figures WHERE UsrCod='%ld')",
UsrCod);
return DB_QueryCOUNT (Query,"can not get ranking using number of clicks");
}
/*****************************************************************************/
/******************* Get number of users with number of clicks ***************/
/*****************************************************************************/
static unsigned long Usr_GetNumUsrsWithNumClicks (void)
{
char Query[128];
sprintf (Query,"SELECT COUNT(*) FROM usr_figures WHERE NumClicks>='0'");
return DB_QueryCOUNT (Query,"can not get number of users with number of clicks");
}
/*****************************************************************************/
/****** Get ranking of a user according to the number of clicks per day ******/
/*****************************************************************************/
static unsigned long Usr_GetRankingNumClicksPerDay (long UsrCod)
{
char Query[512];
sprintf (Query,"SELECT COUNT(*)+1 FROM"
" (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)"
" AS NumClicksPerDay"
" FROM usr_figures"
" WHERE NumClicks>='0' AND FirstClickTime>'0')"
" AS TableNumClicksPerDay"
" WHERE NumClicksPerDay>"
"(SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1)"
" FROM usr_figures"
" WHERE UsrCod='%ld'"
" AND NumClicks>='0' AND FirstClickTime>'0');",
UsrCod);
return DB_QueryCOUNT (Query,"can not get ranking using number of clicks per day");
}
/*****************************************************************************/
/************** Get number of users with number of clicks per day ************/
/*****************************************************************************/
static unsigned long Usr_GetNumUsrsWithNumClicksPerDay (void)
{
char Query[128];
sprintf (Query,"SELECT COUNT(*) FROM usr_figures"
" WHERE NumClicks>='0' AND FirstClickTime>'0'");
return DB_QueryCOUNT (Query,"can not get number of users with number of clicks per day");
}
/*****************************************************************************/
/********* Calculate first click time and show user's profile again **********/
/*****************************************************************************/