diff --git a/swad_changelog.h b/swad_changelog.h
index f9080b47b..e751c832c 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -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)
diff --git a/swad_layout.c b/swad_layout.c
index fa3e66555..3856f39a1 100644
--- a/swad_layout.c
+++ b/swad_layout.c
@@ -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,"
");
+ }
+
+void Lay_StartRoundFrame10 (const char *Width,const char *Title)
{
fprintf (Gbl.F.Out,""
"
",
Title);
-
- 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,"
"
- "
"
+ fprintf (Gbl.F.Out,"
");
+ Lay_EndRoundFrame10 ();
+ }
+
+void Lay_EndRoundFrame10 (void)
+ {
+ fprintf (Gbl.F.Out,""
"");
}
diff --git a/swad_layout.h b/swad_layout.h
index 5b7617f98..e8987330a 100644
--- a/swad_layout.h
+++ b/swad_layout.h
@@ -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);
diff --git a/swad_statistic.c b/swad_statistic.c
index 94b433323..811f352e7 100644
--- a/swad_statistic.c
+++ b/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,""
+ ""
+ "%s"
+ " | "
+ ""
+ "%s"
+ " | "
+ "
",
+ 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,""
+ "",
+ 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",Ins.FullName);
+ Act_FormEnd ();
+ fprintf (Gbl.F.Out," | ");
+
+ /***** Write number of centres (row[1]) *****/
+ fprintf (Gbl.F.Out,""
+ "%s"
+ " |
",
+ row[1]);
+ }
+ }
+
+ /* Free structure that stores the query result */
+ DB_FreeMySQLResult (&mysql_res);
+ }
+
/*****************************************************************************/
/************************* Get total number of users *************************/
/*****************************************************************************/
diff --git a/swad_statistic.h b/swad_statistic.h
index bdde3177e..8f25cd094 100644
--- a/swad_statistic.h
+++ b/swad_statistic.h
@@ -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)
diff --git a/swad_text.c b/swad_text.c
index 004271849..6e212a1e8 100644
--- a/swad_text.c
+++ b/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"