mirror of
https://github.com/acanas/swad-core.git
synced 2024-09-22 00:00:40 +02:00
Version 14.108
This commit is contained in:
parent
415ca04a74
commit
308a722d85
|
@ -103,11 +103,12 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.107.8 (2015/04/03)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 14.108 (2015/04/03)"
|
||||
|
||||
// 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.108: Apr 03, 2015 New statistic (figure) about institutions. (184136 lines)
|
||||
Version 14.107.8: Apr 03, 2015 Changes in statistics (figures about hierarchy). (183774 lines)
|
||||
Version 14.107.7: Apr 03, 2015 Changes in layout of sent / received messages. (183753 lines)
|
||||
Version 14.107.6: Apr 03, 2015 Changes in layout of form to change password. (183748 lines)
|
||||
|
|
|
@ -1066,6 +1066,16 @@ void Lay_WriteTitle (const char *Title)
|
|||
// CellPadding must be 0, 1, 2, 4 or 8
|
||||
|
||||
void Lay_StartRoundFrameTable10 (const char *Width,unsigned CellPadding,const char *Title)
|
||||
{
|
||||
Lay_StartRoundFrame10 (Width,Title);
|
||||
|
||||
fprintf (Gbl.F.Out,"<table class=\"TABLE10");
|
||||
if (CellPadding)
|
||||
fprintf (Gbl.F.Out," CELLS_PAD_%u",CellPadding); // CellPadding must be 0, 1, 2, 4 or 8
|
||||
fprintf (Gbl.F.Out,"\">");
|
||||
}
|
||||
|
||||
void Lay_StartRoundFrame10 (const char *Width,const char *Title)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<div style=\"text-align:center;\">"
|
||||
"<div class=\"FRAME10\"");
|
||||
|
@ -1079,11 +1089,6 @@ void Lay_StartRoundFrameTable10 (const char *Width,unsigned CellPadding,const ch
|
|||
"%s"
|
||||
"</div>",
|
||||
Title);
|
||||
|
||||
fprintf (Gbl.F.Out,"<table class=\"TABLE10");
|
||||
if (CellPadding)
|
||||
fprintf (Gbl.F.Out," CELLS_PAD_%u",CellPadding); // CellPadding must be 0, 1, 2, 4 or 8
|
||||
fprintf (Gbl.F.Out,"\">");
|
||||
}
|
||||
|
||||
// CellPadding must be 0, 1, 2, 4 or 8
|
||||
|
@ -1104,8 +1109,13 @@ void Lay_StartRoundFrameTable10Shadow (const char *Width,unsigned CellPadding)
|
|||
|
||||
void Lay_EndRoundFrameTable10 (void)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"</table>"
|
||||
"</div>"
|
||||
fprintf (Gbl.F.Out,"</table>");
|
||||
Lay_EndRoundFrame10 ();
|
||||
}
|
||||
|
||||
void Lay_EndRoundFrame10 (void)
|
||||
{
|
||||
fprintf (Gbl.F.Out,"</div>"
|
||||
"</div>");
|
||||
}
|
||||
|
||||
|
|
|
@ -98,8 +98,11 @@ void Lay_PutConfirmButtonInline (const char *Text);
|
|||
void Lay_PutRemoveButton (const char *Text);
|
||||
|
||||
void Lay_StartRoundFrameTable10 (const char *Width,unsigned CellPadding,const char *Title);
|
||||
void Lay_StartRoundFrame10 (const char *Width,const char *Title);
|
||||
void Lay_StartRoundFrameTable10Shadow (const char *Width,unsigned CellPadding);
|
||||
void Lay_EndRoundFrameTable10 (void);
|
||||
void Lay_EndRoundFrame10 (void);
|
||||
|
||||
void Lay_ShowErrorAndExit (const char *Message);
|
||||
void Lay_ShowAlert (Lay_AlertType_t MsgType,const char *Message);
|
||||
void Lay_RefreshNotifsAndConnected (void);
|
||||
|
|
378
swad_statistic.c
378
swad_statistic.c
|
@ -123,7 +123,7 @@ static void Sta_WriteDegree (long DegCod);
|
|||
static void Sta_DrawBarNumClicks (char Color,float NumPagesGenerated,float MaxPagesGenerated,float TotalPagesGenerated,unsigned MaxBarWidth);
|
||||
static void Sta_WriteSelectedRangeOfDates (unsigned NumDays);
|
||||
|
||||
static void Sta_GetAndShowDegCrsStats (void);
|
||||
static void Sta_GetAndShowHierarchyStats (void);
|
||||
static void Sta_WriteHeadDegsCrssInSWAD (void);
|
||||
static void Sta_GetAndShowNumCtysInSWAD (void);
|
||||
static void Sta_GetAndShowNumInssInSWAD (void);
|
||||
|
@ -131,6 +131,14 @@ static void Sta_GetAndShowNumCtrsInSWAD (void);
|
|||
static void Sta_GetAndShowNumDegsInSWAD (void);
|
||||
static void Sta_GetAndShowNumCrssInSWAD (void);
|
||||
|
||||
static void Sta_GetAndShowInstitutionsStats (void);
|
||||
static void Sta_GetAndShowInssOrderedByNumCtrs (void);
|
||||
static void Sta_GetAndShowInssOrderedByNumDegs (void);
|
||||
static void Sta_GetAndShowInssOrderedByNumCrss (void);
|
||||
static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void);
|
||||
static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void);
|
||||
static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure);
|
||||
|
||||
static void Sta_GetAndShowUsersStats (void);
|
||||
static void Sta_GetAndShowUsersRanking (void);
|
||||
|
||||
|
@ -3670,7 +3678,11 @@ void Sta_ShowUseOfPlatform (void)
|
|||
break;
|
||||
case Sta_HIERARCHY:
|
||||
/***** Number of degrees and courses *****/
|
||||
Sta_GetAndShowDegCrsStats ();
|
||||
Sta_GetAndShowHierarchyStats ();
|
||||
break;
|
||||
case Sta_INSTITUTIONS:
|
||||
/***** Number of institutions with users *****/
|
||||
Sta_GetAndShowInstitutionsStats ();
|
||||
break;
|
||||
case Sta_SOCIAL_NETWORKS:
|
||||
/***** Number of users in social networks *****/
|
||||
|
@ -3860,10 +3872,11 @@ static void Sta_GetAndShowUsersRanking (void)
|
|||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*************** Get and show stats about degrees and courses ****************/
|
||||
/********* Get and show stats about hierarchy ***********/
|
||||
/********* (countries, institutions, centres, degrees and courses) ***********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowDegCrsStats (void)
|
||||
static void Sta_GetAndShowHierarchyStats (void)
|
||||
{
|
||||
extern const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS];
|
||||
|
||||
|
@ -4474,6 +4487,363 @@ static void Sta_GetAndShowNumCrssInSWAD (void)
|
|||
NumCrssWithStds);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Get and show stats about institutions ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowInstitutionsStats (void)
|
||||
{
|
||||
/****** Institutions ordered by number of centres ******/
|
||||
Sta_GetAndShowInssOrderedByNumCtrs ();
|
||||
|
||||
/****** Institutions ordered by number of degrees ******/
|
||||
Sta_GetAndShowInssOrderedByNumDegs ();
|
||||
|
||||
/****** Institutions ordered by number of courses ******/
|
||||
Sta_GetAndShowInssOrderedByNumCrss ();
|
||||
|
||||
/****** Institutions ordered by number of users in courses ******/
|
||||
Sta_GetAndShowInssOrderedByNumUsrsInCrss ();
|
||||
|
||||
/****** Institutions ordered by number of users who claim to belong to them ******/
|
||||
Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**** Get and show stats about institutions ordered by number of centres *****/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowInssOrderedByNumCtrs (void)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Centres;
|
||||
char Query[1024];
|
||||
|
||||
/****** Institutions ordered by number of centres ******/
|
||||
Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de centros"); // Need translation
|
||||
|
||||
/***** Get institutions ordered by number of centres *****/
|
||||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
sprintf (Query,"SELECT InsCod,COUNT(*) AS N"
|
||||
" FROM centres"
|
||||
" GROUP BY InsCod"
|
||||
" ORDER BY N DESC");
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM institutions,centres"
|
||||
" WHERE institutions.CtyCod='%ld'"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" GROUP BY centres.InsCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
case Sco_SCOPE_CTR:
|
||||
case Sco_SCOPE_DEG:
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT InsCod,COUNT(*) AS N"
|
||||
" FROM centres"
|
||||
" WHERE InsCod='%ld'"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
break;
|
||||
}
|
||||
Sta_GetAndShowInss (Query,Txt_Centres);
|
||||
|
||||
Lay_EndRoundFrameTable10 ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**** Get and show stats about institutions ordered by number of degrees *****/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowInssOrderedByNumDegs (void)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Degrees;
|
||||
char Query[1024];
|
||||
|
||||
/****** Institutions ordered by number of centres ******/
|
||||
Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de titulaciones"); // Need translation
|
||||
|
||||
/***** Get institutions ordered by number of degrees *****/
|
||||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM centres,degrees"
|
||||
" WHERE centres.CtrCod=degrees.CtrCod"
|
||||
" GROUP BY InsCod"
|
||||
" ORDER BY N DESC");
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM institutions,centres,degrees"
|
||||
" WHERE institutions.CtyCod='%ld'"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" GROUP BY centres.InsCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
case Sco_SCOPE_CTR:
|
||||
case Sco_SCOPE_DEG:
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM centres,degrees"
|
||||
" WHERE centres.InsCod='%ld'"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
break;
|
||||
}
|
||||
Sta_GetAndShowInss (Query,Txt_Degrees);
|
||||
|
||||
Lay_EndRoundFrameTable10 ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**** Get and show stats about institutions ordered by number of courses *****/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowInssOrderedByNumCrss (void)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Courses;
|
||||
char Query[1024];
|
||||
|
||||
/****** Institutions ordered by number of centres ******/
|
||||
Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de asignaturas"); // Need translation
|
||||
|
||||
/***** Get institutions ordered by number of courses *****/
|
||||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM centres,degrees,courses"
|
||||
" WHERE centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" GROUP BY InsCod"
|
||||
" ORDER BY N DESC");
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM institutions,centres,degrees,courses"
|
||||
" WHERE institutions.CtyCod='%ld'"
|
||||
" AND institutions.InsCod=centres.InsCod"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" GROUP BY centres.InsCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
case Sco_SCOPE_CTR:
|
||||
case Sco_SCOPE_DEG:
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM centres,degrees,courses"
|
||||
" WHERE centres.InsCod='%ld'"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
break;
|
||||
}
|
||||
Sta_GetAndShowInss (Query,Txt_Courses);
|
||||
|
||||
Lay_EndRoundFrameTable10 ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***** Get and show stats about institutions ordered by users in courses *****/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowInssOrderedByNumUsrsInCrss (void)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Users;
|
||||
char Query[1024];
|
||||
|
||||
/****** Institutions ordered by number of centres ******/
|
||||
Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de usuarios en asignaturas"); // Need translation
|
||||
|
||||
/***** Get institutions ordered by number of users in courses *****/
|
||||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM centres,degrees,courses,crs_usr"
|
||||
" WHERE centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" GROUP BY InsCod"
|
||||
" ORDER BY N DESC");
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM institutions,centres,degrees,courses,crs_usr"
|
||||
" 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"
|
||||
" GROUP BY centres.InsCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
case Sco_SCOPE_CTR:
|
||||
case Sco_SCOPE_DEG:
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT centres.InsCod,COUNT(*) AS N"
|
||||
" FROM centres,degrees,courses,crs_usr"
|
||||
" WHERE centres.InsCod='%ld'"
|
||||
" AND centres.CtrCod=degrees.CtrCod"
|
||||
" AND degrees.DegCod=courses.DegCod"
|
||||
" AND courses.CrsCod=crs_usr.CrsCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
break;
|
||||
}
|
||||
Sta_GetAndShowInss (Query,Txt_Users);
|
||||
|
||||
Lay_EndRoundFrameTable10 ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************* Get and show stats about institutions ordered by **************/
|
||||
/************* number of users who claim to belong to them **************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Users;
|
||||
char Query[1024];
|
||||
|
||||
/****** Institutions ordered by number of centres ******/
|
||||
Lay_StartRoundFrameTable10 ("100%",2,"Instituciones según número de usuarios que dicen pertenecer a ellas"); // Need translation
|
||||
|
||||
/***** Get institutions ordered by number of users who claim to belong to them *****/
|
||||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Sco_SCOPE_SYS:
|
||||
sprintf (Query,"SELECT InsCod,COUNT(*) AS N"
|
||||
" FROM usr_data"
|
||||
" WHERE InsCod>'0'"
|
||||
" GROUP BY InsCod"
|
||||
" ORDER BY N DESC");
|
||||
break;
|
||||
case Sco_SCOPE_CTY:
|
||||
sprintf (Query,"SELECT usr_data.InsCod,COUNT(*) AS N"
|
||||
" FROM institutions,usr_data"
|
||||
" WHERE institutions.CtyCod='%ld'"
|
||||
" AND institutions.InsCod=usr_data.InsCod"
|
||||
" GROUP BY usr_data.InsCod"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentCty.Cty.CtyCod);
|
||||
break;
|
||||
case Sco_SCOPE_INS:
|
||||
case Sco_SCOPE_CTR:
|
||||
case Sco_SCOPE_DEG:
|
||||
case Sco_SCOPE_CRS:
|
||||
sprintf (Query,"SELECT InsCod,COUNT(*) AS N"
|
||||
" FROM usr_data"
|
||||
" WHERE InsCod='%ld'"
|
||||
" ORDER BY N DESC",
|
||||
Gbl.CurrentIns.Ins.InsCod);
|
||||
break;
|
||||
default:
|
||||
Lay_ShowErrorAndExit ("Wrong scope.");
|
||||
break;
|
||||
}
|
||||
Sta_GetAndShowInss (Query,Txt_Users);
|
||||
|
||||
Lay_EndRoundFrameTable10 ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Get and show stats about institutions ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Sta_GetAndShowInss (const char *Query,const char *TxtFigure)
|
||||
{
|
||||
extern const char *The_ClassFormul[The_NUM_THEMES];
|
||||
extern const char *Txt_Institution;
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumInss;
|
||||
unsigned NumIns;
|
||||
struct Institution Ins;
|
||||
|
||||
/***** Query database *****/
|
||||
if ((NumInss = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get institutions")))
|
||||
{
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<th class=\"TIT_TBL\" style=\"text-align:left;\">"
|
||||
"%s"
|
||||
"</th>"
|
||||
"<th class=\"TIT_TBL\" style=\"text-align:right;\">"
|
||||
"%s"
|
||||
"</th>"
|
||||
"</tr>",
|
||||
Txt_Institution,
|
||||
TxtFigure);
|
||||
|
||||
for (NumIns = 0;
|
||||
NumIns < NumInss;
|
||||
NumIns++)
|
||||
{
|
||||
/***** Get next institution *****/
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
||||
/***** Get data of this institution (row[0]) *****/
|
||||
Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]);
|
||||
if (!Ins_GetDataOfInstitutionByCod (&Ins,Ins_GET_MINIMAL_DATA))
|
||||
Lay_ShowErrorAndExit ("Institution not found.");
|
||||
|
||||
/***** Write link to institution *****/
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<td class=\"%s\" style=\"text-align:left;\">",
|
||||
The_ClassFormul[Gbl.Prefs.Theme]);
|
||||
Act_FormStart (ActSeeInsInf);
|
||||
Ins_PutParamInsCod (Ins.InsCod);
|
||||
Act_LinkFormSubmit (Ins.ShortName,The_ClassFormul[Gbl.Prefs.Theme]);
|
||||
Log_DrawLogo (Sco_SCOPE_INS,Ins.InsCod,Ins.ShortName,
|
||||
32,NULL,true);
|
||||
fprintf (Gbl.F.Out," %s</a>",Ins.FullName);
|
||||
Act_FormEnd ();
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
|
||||
/***** Write number of centres (row[1]) *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"DAT\" style=\"text-align:right;\">"
|
||||
"%s"
|
||||
"</td></tr>",
|
||||
row[1]);
|
||||
}
|
||||
}
|
||||
|
||||
/* Free structure that stores the query result */
|
||||
DB_FreeMySQLResult (&mysql_res);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************* Get total number of users *************************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -86,12 +86,13 @@ typedef enum
|
|||
Sta_ACC_GBL_PER_COURSE = 20,
|
||||
} Sta_ClicksStatType_t;
|
||||
|
||||
#define Sta_NUM_TYPES_USE_STATS 20
|
||||
#define Sta_NUM_TYPES_USE_STATS 21
|
||||
typedef enum
|
||||
{
|
||||
Sta_USERS, // Number of users
|
||||
Sta_USERS_RANKING, // Users' ranking
|
||||
Sta_HIERARCHY, // Number of countries, institutions, centres, degrees and courses
|
||||
Sta_INSTITUTIONS, // Number of users in each institution
|
||||
Sta_SOCIAL_NETWORKS, // Number of users in social networks
|
||||
Sta_FOLDERS_AND_FILES, // Number of folders and files
|
||||
Sta_OER, // Number of OERs (Open Educational Resources)
|
||||
|
|
60
swad_text.c
60
swad_text.c
|
@ -36045,7 +36045,7 @@ const char *Txt_STAT_TYPE_COUNT_SMALL[Sta_NUM_STAT_COUNT_TYPES] =
|
|||
|
||||
const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
||||
{
|
||||
#if L==0
|
||||
#if L==0 // Sta_USERS
|
||||
"Usuaris"
|
||||
#elif L==1
|
||||
"Benutzer"
|
||||
|
@ -36065,7 +36065,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Utilizadores"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_USERS_RANKING
|
||||
"Rànquing"
|
||||
#elif L==1
|
||||
"Rang"
|
||||
|
@ -36085,7 +36085,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Posição"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_HIERARCHY
|
||||
"Jerarquia"
|
||||
#elif L==1
|
||||
"Hierarchie"
|
||||
|
@ -36105,7 +36105,27 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Hierarquia"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_INSTITUTIONS
|
||||
"Institucions"
|
||||
#elif L==1
|
||||
"Hochschulen"
|
||||
#elif L==2
|
||||
"Institutions"
|
||||
#elif L==3
|
||||
"Instituciones"
|
||||
#elif L==4
|
||||
"Établissements"
|
||||
#elif L==5
|
||||
"Mbo'ehao"
|
||||
#elif L==6
|
||||
"Istituzioni"
|
||||
#elif L==7
|
||||
"Instytucje"
|
||||
#elif L==8
|
||||
"Instituções"
|
||||
#endif
|
||||
,
|
||||
#if L==0 // Sta_SOCIAL_NETWORKS
|
||||
"Webs / xarxes socials"
|
||||
#elif L==1
|
||||
"Webs / Social Networks"
|
||||
|
@ -36125,7 +36145,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Webs / redes sociais"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_FOLDERS_AND_FILES
|
||||
"Carpetes i fitxers"
|
||||
#elif L==1
|
||||
"Verzeichnisse und Dateien"
|
||||
|
@ -36145,7 +36165,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Diretórios e arquivos"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_OER
|
||||
"Recursos Educatius Oberts (OER)"
|
||||
#elif L==1
|
||||
"Open Educational Resources (OER)"
|
||||
|
@ -36165,7 +36185,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Recursos Educacionais Abertos (OER)"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_ASSIGNMENTS
|
||||
"Activitats"
|
||||
#elif L==1
|
||||
"Aufgaben"
|
||||
|
@ -36185,7 +36205,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Atividades"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_TESTS
|
||||
"Tests"
|
||||
#elif L==1
|
||||
"Tests"
|
||||
|
@ -36205,7 +36225,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Testes"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_NOTIFY_EVENTS
|
||||
"Notificacions"
|
||||
#elif L==1
|
||||
"Anmeldungen"
|
||||
|
@ -36225,7 +36245,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Notificações"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_NOTICES
|
||||
"Avisos"
|
||||
#elif L==1
|
||||
"Ankündigungen"
|
||||
|
@ -36245,7 +36265,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Avisos"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_MESSAGES
|
||||
"Missatges"
|
||||
#elif L==1
|
||||
"Nachrichten"
|
||||
|
@ -36265,7 +36285,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Mensagens"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_FORUMS
|
||||
"Fòrums"
|
||||
#elif L==1
|
||||
"Foren"
|
||||
|
@ -36285,7 +36305,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Fóruns"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_SURVEYS
|
||||
"Enquestes"
|
||||
#elif L==1
|
||||
"Umfragen"
|
||||
|
@ -36305,7 +36325,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Inquéritos"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_PRIVACY
|
||||
"Privacitat"
|
||||
#elif L==1
|
||||
"Geheimhaltung"
|
||||
|
@ -36325,7 +36345,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Privacidade"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_LANGUAGES
|
||||
"Idioma"
|
||||
#elif L==1
|
||||
"Sprache"
|
||||
|
@ -36345,7 +36365,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Lingua"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_LAYOUTS
|
||||
"Disseny"
|
||||
#elif L==1
|
||||
"layout"
|
||||
|
@ -36365,7 +36385,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Layout"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_THEMES
|
||||
"Tema (colors)"
|
||||
#elif L==1
|
||||
"Skin"
|
||||
|
@ -36385,7 +36405,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Skin"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_ICON_SETS
|
||||
"Icones"
|
||||
#elif L==1
|
||||
"Symbole"
|
||||
|
@ -36405,7 +36425,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Ícones"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_MENUS
|
||||
"Menú"
|
||||
#elif L==1
|
||||
"Menü"
|
||||
|
@ -36425,7 +36445,7 @@ const char *Txt_STAT_USE_STAT_TYPES[Sta_NUM_TYPES_USE_STATS] =
|
|||
"Menu"
|
||||
#endif
|
||||
,
|
||||
#if L==0
|
||||
#if L==0 // Sta_SIDE_COLUMNS
|
||||
"Columnes"
|
||||
#elif L==1
|
||||
"Spalten"
|
||||
|
|
Loading…
Reference in New Issue
Block a user