mirror of https://github.com/acanas/swad-core.git
Version 14.93
This commit is contained in:
parent
bdadb43888
commit
9ae8f37e7a
|
@ -300,7 +300,7 @@ hr.YELLOW_SEPARA {height:0; border-top:0; border-bottom:#BD4815 dotted 1px;}
|
||||||
}
|
}
|
||||||
.TIT_TBL_10
|
.TIT_TBL_10
|
||||||
{
|
{
|
||||||
margin:0 10px 10px 10px;
|
margin:10px;
|
||||||
color:#808080;
|
color:#808080;
|
||||||
font-size:16pt;
|
font-size:16pt;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
|
|
|
@ -264,7 +264,7 @@ p {margin:0;}
|
||||||
}
|
}
|
||||||
.TIT_TBL_10
|
.TIT_TBL_10
|
||||||
{
|
{
|
||||||
margin:0 10px 10px 10px;
|
margin:10px;
|
||||||
color:#808080;
|
color:#808080;
|
||||||
font-size:20pt;
|
font-size:20pt;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
|
|
|
@ -10518,5 +10518,29 @@ CREATE TABLE IF NOT EXISTS usr_figures (UsrCod INT NOT NULL,FirstClickTime DATET
|
||||||
|
|
||||||
SELECT * FROM usr_figures WHERE NumClicks>='0' AND FirstClickTime>'0';
|
SELECT * FROM usr_figures WHERE NumClicks>='0' AND FirstClickTime>'0';
|
||||||
|
|
||||||
SELECT COUNT(*)+1 FROM (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay FROM usr_figures WHERE NumClicks>='0' AND UNIX_TIMESTAMP(FirstClickTime)>'0') AS TableNumClicksPerDay WHERE NumClicksPerDay>(SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) FROM usr_figures WHERE UsrCod='1' AND NumClicks>='0' AND UNIX_TIMESTAMP(FirstClickTime)>'0');
|
SELECT COUNT(*)+1 FROM (SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay FROM (SELECT UsrCod,COUNT(*) AS N FROM msg_snt_deleted GROUP BY UsrCod) UNION (SELECT UsrCod,'0' FROM usr_figures WHERE UsrCod NOT IN (SELECT UsrCod FROM msg_snt_deleted))usr_figures WHERE NumClicks>='0' AND UNIX_TIMESTAMP(FirstClickTime)>'0') AS TableNumClicksPerDay WHERE NumClicksPerDay>(SELECT NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) FROM usr_figures WHERE UsrCod='1' AND NumClicks>='0' AND UNIX_TIMESTAMP(FirstClickTime)>'0');
|
||||||
|
|
||||||
|
|
||||||
|
----- 2015-03-15, swad14.92.2
|
||||||
|
|
||||||
|
INSERT INTO usr_figures (UsrCod,FirstClickTime,NumClicks,NumFileViews,NumForPst,NumMsgSnt) SELECT UsrCod,0,-1,-1,-1,-1 FROM usr_data WHERE UsrCod>0 AND UsrCod NOT IN (SELECT UsrCod FROM usr_figures);
|
||||||
|
|
||||||
|
|
||||||
|
Hecho:
|
||||||
|
UPDATE usr_figures,((SELECT UsrCod,COUNT(*) AS N FROM forum_post WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX GROUP BY UsrCod) UNION (SELECT UsrCod,'0' AS N FROM usr_figures WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX AND UsrCod NOT IN (SELECT UsrCod FROM forum_post))) AS FP SET usr_figures.NumForPst=FP.N WHERE usr_figures.UsrCod>=@USRCODMIN AND usr_figures.UsrCod<=@USRCODMAX AND usr_figures.NumForPst<0 AND usr_figures.UsrCod=FP.UsrCod;
|
||||||
|
UPDATE usr_figures,((SELECT UsrCod,COUNT(*) AS N FROM log WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX GROUP BY UsrCod) UNION (SELECT UsrCod,'0' AS N FROM usr_figures WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX AND UsrCod NOT IN (SELECT UsrCod FROM log))) AS NC SET usr_figures.NumClicks=NC.N WHERE usr_figures.UsrCod>=@USRCODMIN AND usr_figures.UsrCod<=@USRCODMAX AND usr_figures.NumClicks<0 AND usr_figures.UsrCod=NC.UsrCod;
|
||||||
|
UPDATE usr_figures,((SELECT UsrCod,COUNT(*) AS N FROM msg_snt WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX GROUP BY UsrCod) UNION (SELECT UsrCod,'0' AS N FROM usr_figures WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX AND UsrCod NOT IN (SELECT UsrCod FROM msg_snt))) AS MS,((SELECT UsrCod,COUNT(*) AS N FROM msg_snt_deleted WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX GROUP BY UsrCod) UNION (SELECT UsrCod,'0' AS N FROM usr_figures WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX AND UsrCod NOT IN (SELECT UsrCod FROM msg_snt_deleted))) AS MSD SET usr_figures.NumMsgSnt=MS.N+MSD.N WHERE usr_figures.UsrCod>=@USRCODMIN AND usr_figures.UsrCod<=@USRCODMAX AND usr_figures.NumMsgSnt<0 AND usr_figures.UsrCod=MS.UsrCod AND usr_figures.UsrCod=MSD.UsrCod;
|
||||||
|
|
||||||
|
Haciendo:
|
||||||
|
SET @USRCODMIN=0;
|
||||||
|
SET @USRCODMAX=1000;
|
||||||
|
UPDATE usr_figures,((SELECT UsrCod,MIN(ClickTime) AS FCT FROM log WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX GROUP BY UsrCod) UNION (SELECT UsrCod,0 AS FCT FROM usr_figures WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX AND UsrCod NOT IN (SELECT UsrCod FROM log))) AS CT SET usr_figures.FirstClickTime=CT.FCT WHERE usr_figures.UsrCod>=@USRCODMIN AND usr_figures.UsrCod<=@USRCODMAX AND usr_figures.FirstClickTime=0 AND usr_figures.UsrCod=CT.UsrCod;
|
||||||
|
|
||||||
|
|
||||||
|
SET @USRCODMIN=0;
|
||||||
|
SET @USRCODMAX=1000;
|
||||||
|
UPDATE usr_figures,((SELECT UsrCod,SUM(NumViews) AS N FROM file_view WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX GROUP BY UsrCod) UNION (SELECT UsrCod,'0' AS N FROM usr_figures WHERE UsrCod>=@USRCODMIN AND UsrCod<=@USRCODMAX AND UsrCod NOT IN (SELECT UsrCod FROM file_view))) AS FV SET usr_figures.NumFileViews=FV.N WHERE usr_figures.UsrCod>=@USRCODMIN AND usr_figures.UsrCod<=@USRCODMAX AND usr_figures.NumFileViews<0 AND usr_figures.UsrCod=FV.UsrCod;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -103,12 +103,13 @@
|
||||||
/****************************** Public constants *****************************/
|
/****************************** Public constants *****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 14.92.2 (2015/03/15)"
|
#define Log_PLATFORM_VERSION "SWAD 14.93 (2015/03/16)"
|
||||||
|
|
||||||
// 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.92.2: Mar 14, 2015 Fixed minor bug in photo edition. (182208 lines)
|
Version 14.93: Mar 16, 2015 Users' ranking. (182527 lines)
|
||||||
|
Version 14.92.2: Mar 15, 2015 Fixed minor bug in photo edition. (182208 lines)
|
||||||
Version 14.92.1: Mar 14, 2015 Changes on request of a nickname to view user's profile. (182205 lines)
|
Version 14.92.1: Mar 14, 2015 Changes on request of a nickname to view user's profile. (182205 lines)
|
||||||
Version 14.92: Mar 14, 2015 New module swad_profile for public user's profile. (182202 lines)
|
Version 14.92: Mar 14, 2015 New module swad_profile for public user's profile. (182202 lines)
|
||||||
1 change necessary in Makefile:
|
1 change necessary in Makefile:
|
||||||
|
|
|
@ -1268,7 +1268,7 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
/***** Free structure that stores the query result *****/
|
||||||
mysql_free_result (mysql_res);
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -10004,10 +10004,6 @@ unsigned long Brw_GetNumFileViewsUsr (long UsrCod)
|
||||||
MYSQL_ROW row;
|
MYSQL_ROW row;
|
||||||
unsigned long FileViews;
|
unsigned long FileViews;
|
||||||
|
|
||||||
/***** Get number of posts from a user from database *****/
|
|
||||||
sprintf (Query,"SELECT SUM(FileViews) FROM file_views WHERE UsrCod='%ld'",
|
|
||||||
UsrCod);
|
|
||||||
|
|
||||||
/***** Get number of filw views *****/
|
/***** Get number of filw views *****/
|
||||||
sprintf (Query,"SELECT SUM(NumViews) FROM file_view WHERE UsrCod='%ld'",
|
sprintf (Query,"SELECT SUM(NumViews) FROM file_view WHERE UsrCod='%ld'",
|
||||||
UsrCod);
|
UsrCod);
|
||||||
|
|
262
swad_profile.c
262
swad_profile.c
|
@ -1117,3 +1117,265 @@ void Prf_IncrementNumMsgSntUsr (long UsrCod)
|
||||||
UsrCod);
|
UsrCod);
|
||||||
DB_QueryINSERT (Query,"can not increment user's messages sent");
|
DB_QueryINSERT (Query,"can not increment user's messages sent");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/******** Get and show ranking of users attending to number of clicks ********/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Prf_GetAndShowRankingClicks (void)
|
||||||
|
{
|
||||||
|
char Query[512];
|
||||||
|
MYSQL_RES *mysql_res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
unsigned NumUsrs;
|
||||||
|
unsigned NumUsr;
|
||||||
|
struct UsrData UsrDat;
|
||||||
|
unsigned long NumClicks;
|
||||||
|
|
||||||
|
/***** Get ranking from database *****/
|
||||||
|
switch (Gbl.Scope.Current)
|
||||||
|
{
|
||||||
|
case Sco_SCOPE_SYS:
|
||||||
|
sprintf (Query,"SELECT UsrCod,NumClicks"
|
||||||
|
" FROM usr_figures"
|
||||||
|
" WHERE NumClicks>='0'"
|
||||||
|
" ORDER BY NumClicks DESC LIMIT 10");
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_CTY:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.NumClicks"
|
||||||
|
" FROM institutions,centres,degrees,courses,crs_usr,usr_figures"
|
||||||
|
" WHERE institutions.CtyCod='%ld'"
|
||||||
|
" AND institutions.InsCod=centres.InsCod"
|
||||||
|
" AND centres.CtrCod=degrees.CtrCod"
|
||||||
|
" AND degrees.DegCod=courses.DegCod"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.NumClicks>='0'"
|
||||||
|
" ORDER BY usr_figures.NumClicks DESC LIMIT 10",
|
||||||
|
Gbl.CurrentCty.Cty.CtyCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_INS:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.NumClicks"
|
||||||
|
" FROM centres,degrees,courses,crs_usr,usr_figures"
|
||||||
|
" WHERE centres.InsCod='%ld'"
|
||||||
|
" AND centres.CtrCod=degrees.CtrCod"
|
||||||
|
" AND degrees.DegCod=courses.DegCod"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.NumClicks>='0'"
|
||||||
|
" ORDER BY usr_figures.NumClicks DESC LIMIT 10",
|
||||||
|
Gbl.CurrentIns.Ins.InsCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_CTR:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.NumClicks"
|
||||||
|
" FROM degrees,courses,crs_usr,usr_figures"
|
||||||
|
" WHERE degrees.CtrCod='%ld'"
|
||||||
|
" AND degrees.DegCod=courses.DegCod"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.NumClicks>='0'"
|
||||||
|
" ORDER BY usr_figures.NumClicks DESC LIMIT 10",
|
||||||
|
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_DEG:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.NumClicks"
|
||||||
|
" FROM courses,crs_usr,usr_figures"
|
||||||
|
" WHERE courses.DegCod='%ld'"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.NumClicks>='0'"
|
||||||
|
" ORDER BY usr_figures.NumClicks DESC LIMIT 10",
|
||||||
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_CRS:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,usr_figures.NumClicks"
|
||||||
|
" FROM crs_usr,usr_figures"
|
||||||
|
" WHERE crs_usr.CrsCod='%ld'"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.NumClicks>='0'"
|
||||||
|
" ORDER BY usr_figures.NumClicks DESC LIMIT 10",
|
||||||
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get ranking");
|
||||||
|
if (NumUsrs)
|
||||||
|
{
|
||||||
|
/***** Initialize structure with user's data *****/
|
||||||
|
Usr_UsrDataConstructor (&UsrDat);
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<table>");
|
||||||
|
|
||||||
|
for (NumUsr = 1;
|
||||||
|
NumUsr <= NumUsrs;
|
||||||
|
NumUsr++)
|
||||||
|
{
|
||||||
|
/***** Get user and number of clicks *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
/* Get user's code (row[0]) */
|
||||||
|
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
Usr_GetAllUsrDataFromUsrCod (&UsrDat);
|
||||||
|
|
||||||
|
/* Get number of clicks (row[1]) */
|
||||||
|
if (sscanf (row[1],"%ld",&NumClicks) != 1)
|
||||||
|
NumClicks = -1L;
|
||||||
|
|
||||||
|
/***** Show row *****/
|
||||||
|
if (UsrDat.Nickname[0])
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td style=\"text-align:right;\">#%u</td>"
|
||||||
|
"<td style=\"text-align:left;\">@%s</td>"
|
||||||
|
"<td style=\"text-align:right;\">%ld</td>"
|
||||||
|
"</tr>",
|
||||||
|
NumUsr,
|
||||||
|
UsrDat.Nickname,
|
||||||
|
NumClicks);
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
|
/***** Free memory used for user's data *****/
|
||||||
|
Usr_UsrDataDestructor (&UsrDat);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Free structure that stores the query result *****/
|
||||||
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/**** Get and show ranking of users attending to number of clicks per day ****/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void Prf_GetAndShowRankingClicksPerDay (void)
|
||||||
|
{
|
||||||
|
char Query[512];
|
||||||
|
MYSQL_RES *mysql_res;
|
||||||
|
MYSQL_ROW row;
|
||||||
|
unsigned NumUsrs;
|
||||||
|
unsigned NumUsr;
|
||||||
|
struct UsrData UsrDat;
|
||||||
|
float NumClicksPerDay;
|
||||||
|
|
||||||
|
/***** Get ranking from database *****/
|
||||||
|
switch (Gbl.Scope.Current)
|
||||||
|
{
|
||||||
|
case Sco_SCOPE_SYS:
|
||||||
|
sprintf (Query,"SELECT UsrCod,"
|
||||||
|
"NumClicks/(DATEDIFF(NOW(),FirstClickTime)+1) AS NumClicksPerDay"
|
||||||
|
" FROM usr_figures"
|
||||||
|
" WHERE FirstClickTime>0"
|
||||||
|
" ORDER BY NumClicksPerDay DESC LIMIT 10");
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_CTY:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||||
|
"usr_figures.NumClicks/(DATEDIFF(NOW(),usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||||
|
" FROM institutions,centres,degrees,courses,crs_usr,usr_figures"
|
||||||
|
" WHERE institutions.CtyCod='%ld'"
|
||||||
|
" AND institutions.InsCod=centres.InsCod"
|
||||||
|
" AND centres.CtrCod=degrees.CtrCod"
|
||||||
|
" AND degrees.DegCod=courses.DegCod"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.FirstClickTime>0"
|
||||||
|
" ORDER BY NumClicksPerDay DESC LIMIT 10",
|
||||||
|
Gbl.CurrentCty.Cty.CtyCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_INS:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||||
|
"usr_figures.NumClicks/(DATEDIFF(NOW(),usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||||
|
" FROM centres,degrees,courses,crs_usr,usr_figures"
|
||||||
|
" WHERE centres.InsCod='%ld'"
|
||||||
|
" AND centres.CtrCod=degrees.CtrCod"
|
||||||
|
" AND degrees.DegCod=courses.DegCod"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.FirstClickTime>0"
|
||||||
|
" ORDER BY NumClicksPerDay DESC LIMIT 10",
|
||||||
|
Gbl.CurrentIns.Ins.InsCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_CTR:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||||
|
"usr_figures.NumClicks/(DATEDIFF(NOW(),usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||||
|
" FROM degrees,courses,crs_usr,usr_figures"
|
||||||
|
" WHERE degrees.CtrCod='%ld'"
|
||||||
|
" AND degrees.DegCod=courses.DegCod"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.FirstClickTime>0'"
|
||||||
|
" ORDER BY NumClicksPerDay DESC LIMIT 10",
|
||||||
|
Gbl.CurrentCtr.Ctr.CtrCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_DEG:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||||
|
"usr_figures.NumClicks/(DATEDIFF(NOW(),usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||||
|
" FROM courses,crs_usr,usr_figures"
|
||||||
|
" WHERE courses.DegCod='%ld'"
|
||||||
|
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.FirstClickTime>0"
|
||||||
|
" ORDER BY NumClicksPerDay DESC LIMIT 10",
|
||||||
|
Gbl.CurrentDeg.Deg.DegCod);
|
||||||
|
break;
|
||||||
|
case Sco_SCOPE_CRS:
|
||||||
|
sprintf (Query,"SELECT DISTINCTROW usr_figures.UsrCod,"
|
||||||
|
"usr_figures.NumClicks/(DATEDIFF(NOW(),usr_figures.FirstClickTime)+1) AS NumClicksPerDay"
|
||||||
|
" FROM crs_usr,usr_figures"
|
||||||
|
" WHERE crs_usr.CrsCod='%ld'"
|
||||||
|
" AND crs_usr.UsrCod=usr_figures.UsrCod"
|
||||||
|
" AND usr_figures.FirstClickTime>0"
|
||||||
|
" ORDER BY NumClicksPerDay DESC LIMIT 10",
|
||||||
|
Gbl.CurrentCrs.Crs.CrsCod);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
NumUsrs = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get ranking");
|
||||||
|
if (NumUsrs)
|
||||||
|
{
|
||||||
|
/***** Initialize structure with user's data *****/
|
||||||
|
Usr_UsrDataConstructor (&UsrDat);
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"<table>");
|
||||||
|
|
||||||
|
for (NumUsr = 1;
|
||||||
|
NumUsr <= NumUsrs;
|
||||||
|
NumUsr++)
|
||||||
|
{
|
||||||
|
/***** Get user and number of clicks *****/
|
||||||
|
row = mysql_fetch_row (mysql_res);
|
||||||
|
|
||||||
|
/* Get user's code (row[0]) */
|
||||||
|
UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
Usr_GetAllUsrDataFromUsrCod (&UsrDat);
|
||||||
|
|
||||||
|
/* Get number of clicks per day (row[1]) */
|
||||||
|
NumClicksPerDay = Str_GetFloatNumFromStr (row[1]);
|
||||||
|
|
||||||
|
/***** Show row *****/
|
||||||
|
if (UsrDat.Nickname[0])
|
||||||
|
{
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td style=\"text-align:right;\">#%u</td>"
|
||||||
|
"<td style=\"text-align:left;\">@%s</td>"
|
||||||
|
"<td style=\"text-align:right;\">",
|
||||||
|
NumUsr,
|
||||||
|
UsrDat.Nickname);
|
||||||
|
Str_WriteFloatNum (NumClicksPerDay);
|
||||||
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
|
"</tr>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf (Gbl.F.Out,"</table>");
|
||||||
|
|
||||||
|
/***** Free memory used for user's data *****/
|
||||||
|
Usr_UsrDataDestructor (&UsrDat);
|
||||||
|
}
|
||||||
|
|
||||||
|
/***** Free structure that stores the query result *****/
|
||||||
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
}
|
||||||
|
|
|
@ -54,4 +54,7 @@ void Prf_IncrementNumFileViewsUsr (long UsrCod);
|
||||||
void Prf_IncrementNumForPstUsr (long UsrCod);
|
void Prf_IncrementNumForPstUsr (long UsrCod);
|
||||||
void Prf_IncrementNumMsgSntUsr (long UsrCod);
|
void Prf_IncrementNumMsgSntUsr (long UsrCod);
|
||||||
|
|
||||||
|
void Prf_GetAndShowRankingClicks (void);
|
||||||
|
void Prf_GetAndShowRankingClicksPerDay (void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -132,6 +132,7 @@ static void Sta_GetAndShowNumDegsInSWAD (void);
|
||||||
static void Sta_GetAndShowNumCrssInSWAD (void);
|
static void Sta_GetAndShowNumCrssInSWAD (void);
|
||||||
|
|
||||||
static void Sta_GetAndShowUsersStats (void);
|
static void Sta_GetAndShowUsersStats (void);
|
||||||
|
static void Sta_GetAndShowUsersRanking (void);
|
||||||
|
|
||||||
static void Sta_GetAndShowFileBrowsersStats (void);
|
static void Sta_GetAndShowFileBrowsersStats (void);
|
||||||
static void Sta_WriteStatsExpTreesTableHead (void);
|
static void Sta_WriteStatsExpTreesTableHead (void);
|
||||||
|
@ -3676,6 +3677,10 @@ void Sta_ShowUseOfPlatform (void)
|
||||||
/***** Number of users *****/
|
/***** Number of users *****/
|
||||||
Sta_GetAndShowUsersStats ();
|
Sta_GetAndShowUsersStats ();
|
||||||
break;
|
break;
|
||||||
|
case Sta_USRS_RANKING:
|
||||||
|
/***** Users ranking *****/
|
||||||
|
Sta_GetAndShowUsersRanking ();
|
||||||
|
break;
|
||||||
case Sta_DEGREES_AND_COURSES:
|
case Sta_DEGREES_AND_COURSES:
|
||||||
/***** Number of degrees and courses *****/
|
/***** Number of degrees and courses *****/
|
||||||
Sta_GetAndShowDegCrsStats ();
|
Sta_GetAndShowDegCrsStats ();
|
||||||
|
@ -3792,6 +3797,45 @@ static void Sta_GetAndShowUsersStats (void)
|
||||||
Lay_EndRoundFrameTable10 ();
|
Lay_EndRoundFrameTable10 ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/****************************** Show users' ranking **************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
static void Sta_GetAndShowUsersRanking (void)
|
||||||
|
{
|
||||||
|
extern const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS];
|
||||||
|
extern const char *Txt_Clicks;
|
||||||
|
extern const char *Txt_Clicks_per_day;
|
||||||
|
|
||||||
|
Lay_StartRoundFrameTable10 (NULL,2,Txt_STAT_USE_STAT_TYPES[Sta_USRS_RANKING]);
|
||||||
|
|
||||||
|
/***** Header *****/
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<th class=\"TIT_TBL\" style=\"text-align:center;\">"
|
||||||
|
"%s"
|
||||||
|
"</th>"
|
||||||
|
"<th class=\"TIT_TBL\" style=\"text-align:center;\">"
|
||||||
|
"%s"
|
||||||
|
"</th>"
|
||||||
|
"</tr>",
|
||||||
|
Txt_Clicks,
|
||||||
|
Txt_Clicks_per_day);
|
||||||
|
|
||||||
|
/***** Rankings *****/
|
||||||
|
fprintf (Gbl.F.Out,"<tr>"
|
||||||
|
"<td class=\"DAT\" style=\"text-align:left;"
|
||||||
|
" vertical-align:top;\">");
|
||||||
|
Prf_GetAndShowRankingClicks ();
|
||||||
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
|
"<td class=\"DAT\" style=\"text-align:left;"
|
||||||
|
" vertical-align:top;\">");
|
||||||
|
Prf_GetAndShowRankingClicksPerDay ();
|
||||||
|
fprintf (Gbl.F.Out,"</td>"
|
||||||
|
"</tr>");
|
||||||
|
|
||||||
|
Lay_EndRoundFrameTable10 ();
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************** Get and show stats about degrees and courses ****************/
|
/*************** Get and show stats about degrees and courses ****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -86,10 +86,11 @@ typedef enum
|
||||||
Sta_ACC_GBL_PER_COURSE = 20,
|
Sta_ACC_GBL_PER_COURSE = 20,
|
||||||
} Sta_ClicksStatType_t;
|
} Sta_ClicksStatType_t;
|
||||||
|
|
||||||
#define Sta_NUM_TYPES_USE_STATS 19
|
#define Sta_NUM_TYPES_USE_STATS 20
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
Sta_USERS, // Number of users
|
Sta_USERS, // Number of users
|
||||||
|
Sta_USRS_RANKING, // Users' ranking
|
||||||
Sta_DEGREES_AND_COURSES, // Number of degrees and courses
|
Sta_DEGREES_AND_COURSES, // Number of degrees and courses
|
||||||
Sta_SOCIAL_NETWORKS, // Number of users in social networks
|
Sta_SOCIAL_NETWORKS, // Number of users in social networks
|
||||||
Sta_FOLDERS_AND_FILES, // Number of folders and files
|
Sta_FOLDERS_AND_FILES, // Number of folders and files
|
||||||
|
@ -101,7 +102,7 @@ typedef enum
|
||||||
Sta_MSGS_BETWEEN_USERS, // Number of users' (sent and received) messages
|
Sta_MSGS_BETWEEN_USERS, // Number of users' (sent and received) messages
|
||||||
Sta_FORUMS, // Number of forums, threads and posts
|
Sta_FORUMS, // Number of forums, threads and posts
|
||||||
Sta_SURVEYS, // Number of surveys
|
Sta_SURVEYS, // Number of surveys
|
||||||
Sta_PRIVACY, // Number of users per privacity
|
Sta_PRIVACY, // Number of users per privacity
|
||||||
Sta_LANGUAGES, // Number of users per language
|
Sta_LANGUAGES, // Number of users per language
|
||||||
Sta_LAYOUTS, // Number of users per layout
|
Sta_LAYOUTS, // Number of users per layout
|
||||||
Sta_THEMES, // Number of users per theme
|
Sta_THEMES, // Number of users per theme
|
||||||
|
|
41
swad_text.c
41
swad_text.c
|
@ -4563,6 +4563,27 @@ const char *Txt_clicks =
|
||||||
"cliques";
|
"cliques";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_Clicks_per_day =
|
||||||
|
#if L==0
|
||||||
|
"Clics per dia";
|
||||||
|
#elif L==1
|
||||||
|
"Klicks pro Tag";
|
||||||
|
#elif L==2
|
||||||
|
"Clicks per day";
|
||||||
|
#elif L==3
|
||||||
|
"Clics por día";
|
||||||
|
#elif L==4
|
||||||
|
"Clics par jour";
|
||||||
|
#elif L==5
|
||||||
|
"Clics por día"; // Okoteve traducción
|
||||||
|
#elif L==6
|
||||||
|
"Clic al giorno";
|
||||||
|
#elif L==7
|
||||||
|
"Kliknięć dziennie";
|
||||||
|
#elif L==8
|
||||||
|
"Cliques por dia";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_Clicks_without_degree_selected =
|
const char *Txt_Clicks_without_degree_selected =
|
||||||
#if L==0
|
#if L==0
|
||||||
"Clics sense seleccionar titulació";
|
"Clics sense seleccionar titulació";
|
||||||
|
@ -35932,6 +35953,26 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
||||||
"Utilizadores"
|
"Utilizadores"
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
|
#if L==0
|
||||||
|
"Rànquing"
|
||||||
|
#elif L==1
|
||||||
|
"Rang"
|
||||||
|
#elif L==2
|
||||||
|
"Ranking"
|
||||||
|
#elif L==3
|
||||||
|
"Ranking"
|
||||||
|
#elif L==4
|
||||||
|
"Classement"
|
||||||
|
#elif L==5
|
||||||
|
"Ranking" // Okoteve traducción
|
||||||
|
#elif L==6
|
||||||
|
"Posto"
|
||||||
|
#elif L==7
|
||||||
|
"Ranking"
|
||||||
|
#elif L==8
|
||||||
|
"Posição"
|
||||||
|
#endif
|
||||||
|
,
|
||||||
#if L==0
|
#if L==0
|
||||||
"Titulaciones y asignaturas" // Necessita traducció
|
"Titulaciones y asignaturas" // Necessita traducció
|
||||||
#elif L==1
|
#elif L==1
|
||||||
|
|
|
@ -3393,11 +3393,11 @@ long Usr_GetRamdomStdFromCrs (long CrsCod)
|
||||||
/***** Get user code *****/
|
/***** Get user code *****/
|
||||||
row = mysql_fetch_row (mysql_res);
|
row = mysql_fetch_row (mysql_res);
|
||||||
UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
UsrCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||||
|
|
||||||
/***** Free structure that stores the query result *****/
|
|
||||||
DB_FreeMySQLResult (&mysql_res);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***** Free structure that stores the query result *****/
|
||||||
|
DB_FreeMySQLResult (&mysql_res);
|
||||||
|
|
||||||
return UsrCod;
|
return UsrCod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue