mirror of https://github.com/acanas/swad-core.git
Version 14.87
This commit is contained in:
parent
d3da2d9825
commit
dc6935c1d2
|
@ -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)
|
||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -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ó";
|
||||
|
|
89
swad_user.c
89
swad_user.c
|
@ -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 **********/
|
||||
/*****************************************************************************/
|
||||
|
|
Loading…
Reference in New Issue