mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-30 04:15:54 +02:00
Version 20.54: Mar 30, 2021 Statistics about agendas.
This commit is contained in:
parent
ff125a81de
commit
fb564b58cf
|
@ -1870,7 +1870,7 @@ unsigned Agd_GetNumEventsFromUsr (long UsrCod)
|
|||
|
||||
unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
|
||||
{
|
||||
/***** Get number of courses with events from database *****/
|
||||
/***** Get number of users with events from database *****/
|
||||
switch (Scope)
|
||||
{
|
||||
case Hie_Lvl_SYS:
|
||||
|
@ -1893,7 +1893,6 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
|
|||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Cty.CtyCod);
|
||||
|
@ -1909,7 +1908,6 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
|
|||
" WHERE ctr_centers.InsCod=%ld"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
|
@ -1923,7 +1921,6 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
|
|||
"agd_agendas"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
|
@ -1935,7 +1932,6 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
|
|||
"crs_users,"
|
||||
"agd_agendas"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
|
@ -1974,57 +1970,61 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope)
|
|||
return (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of events",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM ins_instits,"
|
||||
"ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_users,"
|
||||
" FROM (SELECT DISTINCT crs_users.UsrCod"
|
||||
" FROM ins_instits,"
|
||||
"ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_users"
|
||||
" WHERE ins_instits.CtyCod=%ld"
|
||||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod) AS users,"
|
||||
"agd_agendas"
|
||||
" WHERE ins_instits.CtyCod=%ld"
|
||||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
" WHERE users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Cty.CtyCod);
|
||||
case Hie_Lvl_INS:
|
||||
return (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of events",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_users,"
|
||||
" FROM (SELECT DISTINCT crs_users.UsrCod"
|
||||
" FROM ctr_centers,"
|
||||
"deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_users"
|
||||
" WHERE ctr_centers.InsCod=%ld"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod) AS users,"
|
||||
"agd_agendas"
|
||||
" WHERE ctr_centers.InsCod=%ld"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
" WHERE users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
case Hie_Lvl_CTR:
|
||||
return (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of events",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_users,"
|
||||
" FROM (SELECT DISTINCT crs_users.UsrCod"
|
||||
" FROM deg_degrees,"
|
||||
"crs_courses,"
|
||||
"crs_users"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod) AS users,"
|
||||
"agd_agendas"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
" WHERE users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
case Hie_Lvl_DEG:
|
||||
return (unsigned)
|
||||
DB_QueryCOUNT ("can not get number of events",
|
||||
"SELECT COUNT(*)"
|
||||
" FROM crs_courses,"
|
||||
"crs_users,"
|
||||
" FROM (SELECT DISTINCT crs_users.UsrCod"
|
||||
" FROM crs_courses,"
|
||||
"crs_users"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod) AS users,"
|
||||
"agd_agendas"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.CrsCod=crs_users.CrsCod"
|
||||
" AND crs_users.UsrCod=agd_agendas.UsrCod",
|
||||
" WHERE users.UsrCod=agd_agendas.UsrCod",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
case Hie_Lvl_CRS:
|
||||
return (unsigned)
|
||||
|
|
|
@ -1896,7 +1896,6 @@ unsigned Asg_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
|
|||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
|
||||
Gbl.Hierarchy.Cty.CtyCod);
|
||||
case Hie_Lvl_INS:
|
||||
|
@ -1910,7 +1909,6 @@ unsigned Asg_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
|
|||
" WHERE ctr_centers.InsCod=%ld"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
case Hie_Lvl_CTR:
|
||||
|
@ -1922,7 +1920,6 @@ unsigned Asg_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
|
|||
"asg_assignments"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
case Hie_Lvl_DEG:
|
||||
|
@ -1932,7 +1929,6 @@ unsigned Asg_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
|
|||
" FROM crs_courses,"
|
||||
"asg_assignments"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=asg_assignments.CrsCod",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
case Hie_Lvl_CRS:
|
||||
|
|
|
@ -1743,7 +1743,6 @@ unsigned Att_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
|
|||
" WHERE ctr_centers.InsCod=%ld"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
break;
|
||||
|
@ -1755,7 +1754,6 @@ unsigned Att_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
|
|||
"att_events"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
break;
|
||||
|
@ -1765,7 +1763,6 @@ unsigned Att_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
|
|||
" FROM crs_courses,"
|
||||
"att_events"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=att_events.CrsCod",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
break;
|
||||
|
|
|
@ -600,13 +600,14 @@ TODO: Salvador Romero Cort
|
|||
|
||||
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 20.53.1 (2021-03-30)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 20.54 (2021-03-30)"
|
||||
#define CSS_FILE "swad20.45.css"
|
||||
#define JS_FILE "swad20.6.2.js"
|
||||
/*
|
||||
TODO: Rename CENTRE to CENTER in help wiki.
|
||||
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
|
||||
|
||||
Version 20.54: Mar 30, 2021 Statistics about agendas. (309539 lines)
|
||||
Version 20.53.1: Mar 30, 2021 Optimizations in database selects. (309459 lines)
|
||||
Version 20.53: Mar 29, 2021 Code refactoring in database selects. (309473 lines)
|
||||
Version 20.52: Mar 28, 2021 Code refactoring in database selects. (309103 lines)
|
||||
|
|
123
swad_figure.c
123
swad_figure.c
|
@ -31,6 +31,7 @@
|
|||
#include <string.h> // For string functions
|
||||
|
||||
#include "swad_action.h"
|
||||
#include "swad_agenda.h"
|
||||
#include "swad_box.h"
|
||||
#include "swad_database.h"
|
||||
#include "swad_figure.h"
|
||||
|
@ -183,6 +184,8 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void);
|
|||
static void Fig_GetAndShowNoticesStats (void);
|
||||
static void Fig_GetAndShowMsgsStats (void);
|
||||
|
||||
static void Fig_GetAndShowAgendasStats (void);
|
||||
|
||||
static void Fig_GetAndShowSurveysStats (void);
|
||||
static void Fig_GetAndShowNumUsrsPerPrivacy (void);
|
||||
static void Fig_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject,
|
||||
|
@ -347,6 +350,7 @@ void Fig_ShowFigures (void)
|
|||
[Fig_NOTIFY_EVENTS ] = Fig_GetAndShowNumUsrsPerNotifyEvent,
|
||||
[Fig_NOTICES ] = Fig_GetAndShowNoticesStats,
|
||||
[Fig_MESSAGES ] = Fig_GetAndShowMsgsStats,
|
||||
[Fig_AGENDAS ] = Fig_GetAndShowAgendasStats,
|
||||
[Fig_SOCIAL_NETWORKS ] = Net_ShowWebAndSocialNetworksStats,
|
||||
[Fig_LANGUAGES ] = Fig_GetAndShowNumUsrsPerLanguage,
|
||||
[Fig_FIRST_DAY_OF_WEEK] = Fig_GetAndShowNumUsrsPerFirstDayOfWeek,
|
||||
|
@ -431,7 +435,7 @@ static void Fig_GetAndShowNumUsrsInCrss (Rol_Role_t Role)
|
|||
(Gbl.Scope.Current == Hie_Lvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod :
|
||||
-1L)))));
|
||||
-1L)))));
|
||||
char *Class = (Role == Rol_UNK) ? "DAT_N LINE_TOP RB" :
|
||||
"DAT RB";
|
||||
unsigned Roles = (Role == Rol_UNK) ? ((1 << Rol_STD) |
|
||||
|
@ -3567,18 +3571,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
|
|||
HTM_TR_End ();
|
||||
|
||||
/***** Get total number of users *****/
|
||||
NumUsrsTotal =
|
||||
(Gbl.Scope.Current == Hie_Lvl_SYS) ? Usr_GetTotalNumberOfUsersInPlatform () :
|
||||
Usr_GetCachedNumUsrsInCrss (Gbl.Scope.Current,
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTY ? Gbl.Hierarchy.Cty.CtyCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_INS ? Gbl.Hierarchy.Ins.InsCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod :
|
||||
-1L))))),
|
||||
1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH);
|
||||
NumUsrsTotal = Usr_GetTotalNumberOfUsers ();
|
||||
|
||||
/***** Get total number of following/followers from database *****/
|
||||
for (NoteType = (Tml_Not_NoteType_t) 0;
|
||||
|
@ -3921,18 +3914,7 @@ static void Fig_GetAndShowFollowStats (void)
|
|||
HTM_TR_End ();
|
||||
|
||||
/***** Get total number of users *****/
|
||||
NumUsrsTotal =
|
||||
(Gbl.Scope.Current == Hie_Lvl_SYS) ? Usr_GetTotalNumberOfUsersInPlatform () :
|
||||
Usr_GetCachedNumUsrsInCrss (Gbl.Scope.Current,
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTY ? Gbl.Hierarchy.Cty.CtyCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_INS ? Gbl.Hierarchy.Ins.InsCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod :
|
||||
-1L))))),
|
||||
1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH);
|
||||
NumUsrsTotal = Usr_GetTotalNumberOfUsers ();
|
||||
|
||||
/***** Get total number of following/followers from database *****/
|
||||
for (Fol = 0;
|
||||
|
@ -4553,8 +4535,8 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
|
|||
extern const char *Txt_NOTIFY_EVENTS_PLURAL[Ntf_NUM_NOTIFY_EVENTS];
|
||||
extern const char *Txt_Number_of_users;
|
||||
extern const char *Txt_PERCENT_of_users;
|
||||
extern const char *Txt_Number_of_BR_events;
|
||||
extern const char *Txt_Number_of_BR_emails;
|
||||
extern const char *Txt_Number_of_events;
|
||||
extern const char *Txt_Number_of_emails;
|
||||
extern const char *Txt_Total;
|
||||
Ntf_NotifyEvent_t NotifyEvent;
|
||||
char *SubQuery;
|
||||
|
@ -4579,24 +4561,13 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
|
|||
HTM_TH (1,1,"LM",Txt_Event);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_users);
|
||||
HTM_TH (1,1,"RM",Txt_PERCENT_of_users);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_BR_events);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_BR_emails);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_events);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_emails);
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Get total number of users *****/
|
||||
NumUsrsTotal =
|
||||
(Gbl.Scope.Current == Hie_Lvl_SYS) ? Usr_GetTotalNumberOfUsersInPlatform () :
|
||||
Usr_GetCachedNumUsrsInCrss (Gbl.Scope.Current,
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTY ? Gbl.Hierarchy.Cty.CtyCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_INS ? Gbl.Hierarchy.Ins.InsCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod :
|
||||
-1L))))),
|
||||
1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH);
|
||||
NumUsrsTotal = Usr_GetTotalNumberOfUsers ();
|
||||
|
||||
/***** Get total number of users who want to be
|
||||
notified by email on some event, from database *****/
|
||||
|
@ -4964,6 +4935,76 @@ static void Fig_GetAndShowMsgsStats (void)
|
|||
Box_BoxTableEnd ();
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
/********* Get and show number of users who have chosen a language ***********/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Fig_GetAndShowAgendasStats (void)
|
||||
{
|
||||
extern const char *Hlp_ANALYTICS_Figures_agendas;
|
||||
extern const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES];
|
||||
extern const char *Txt_Number_of_events;
|
||||
extern const char *Txt_Number_of_users;
|
||||
extern const char *Txt_PERCENT_of_users;
|
||||
extern const char *Txt_Number_of_events_per_user;
|
||||
unsigned NumEvents;
|
||||
unsigned NumUsrs;
|
||||
unsigned NumUsrsTotal;
|
||||
|
||||
/***** Begin box and table *****/
|
||||
Box_BoxTableBegin (NULL,Txt_FIGURE_TYPES[Fig_AGENDAS],
|
||||
NULL,NULL,
|
||||
Hlp_ANALYTICS_Figures_agendas,Box_NOT_CLOSABLE,2);
|
||||
|
||||
/***** Heading row *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_events);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_users);
|
||||
HTM_TH (1,1,"RM",Txt_PERCENT_of_users);
|
||||
HTM_TH (1,1,"RM",Txt_Number_of_events_per_user);
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** Number of agenda events *****/
|
||||
NumEvents = Agd_GetNumEvents (Gbl.Scope.Current);
|
||||
|
||||
/***** Number of users with agenda events *****/
|
||||
NumUsrs = Agd_GetNumUsrsWithEvents (Gbl.Scope.Current);
|
||||
|
||||
/***** Get total number of users in current scope *****/
|
||||
NumUsrsTotal = Usr_GetTotalNumberOfUsers ();
|
||||
|
||||
/***** Write number of users who have chosen each language *****/
|
||||
HTM_TR_Begin (NULL);
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Unsigned (NumEvents);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Unsigned (NumUsrs);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Percentage (NumUsrsTotal ? (double) NumUsrs * 100.0 /
|
||||
(double) NumUsrsTotal :
|
||||
0);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"DAT RM\"");
|
||||
HTM_Double2Decimals (NumUsrs ? (double) NumEvents /
|
||||
(double) NumUsrs :
|
||||
0);
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
||||
/***** End table and box *****/
|
||||
Box_BoxTableEnd ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************************** Show stats of surveys *************************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
/************************** Public types and constants ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Fig_NUM_FIGURES 30
|
||||
#define Fig_NUM_FIGURES 31
|
||||
typedef enum
|
||||
{
|
||||
Fig_USERS, // Number of users
|
||||
|
@ -56,6 +56,7 @@ typedef enum
|
|||
Fig_NOTIFY_EVENTS, // Number of users per notify event
|
||||
Fig_NOTICES, // Number of notices
|
||||
Fig_MESSAGES, // Number of users' (sent and received) messages
|
||||
Fig_AGENDAS, // Number of agendas
|
||||
Fig_SOCIAL_NETWORKS, // Number of users in social networks
|
||||
Fig_LANGUAGES, // Number of users per language
|
||||
Fig_FIRST_DAY_OF_WEEK, // Number of users per first day of week
|
||||
|
|
|
@ -3288,6 +3288,27 @@ const char *Hlp_ANALYTICS_Figures_messages =
|
|||
"ANALYTICS.Figures.en#messages";
|
||||
#endif
|
||||
|
||||
const char *Hlp_ANALYTICS_Figures_agendas =
|
||||
#if L==1
|
||||
"ANALYTICS.Figures.es#agendas";
|
||||
#elif L==2
|
||||
"ANALYTICS.Figures.en#agendas";
|
||||
#elif L==3
|
||||
"ANALYTICS.Figures.en#agendas";
|
||||
#elif L==4
|
||||
"ANALYTICS.Figures.es#agendas";
|
||||
#elif L==5
|
||||
"ANALYTICS.Figures.en#agendas";
|
||||
#elif L==6
|
||||
"ANALYTICS.Figures.es#agendas";
|
||||
#elif L==7
|
||||
"ANALYTICS.Figures.en#agendas";
|
||||
#elif L==8
|
||||
"ANALYTICS.Figures.en#agendas";
|
||||
#elif L==9
|
||||
"ANALYTICS.Figures.en#agendas";
|
||||
#endif
|
||||
|
||||
const char *Hlp_ANALYTICS_Figures_webs_social_networks =
|
||||
#if L==1
|
||||
"ANALYTICS.Figures.es#webs--redes-sociales";
|
||||
|
|
|
@ -442,18 +442,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
|
|||
unsigned NumUsrs;
|
||||
|
||||
/***** Get total number of users in current scope *****/
|
||||
NumUsrsTotal =
|
||||
(Gbl.Scope.Current == Hie_Lvl_SYS) ? Usr_GetTotalNumberOfUsersInPlatform () :
|
||||
Usr_GetCachedNumUsrsInCrss (Gbl.Scope.Current,
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTY ? Gbl.Hierarchy.Cty.CtyCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_INS ? Gbl.Hierarchy.Ins.InsCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CRS ? Gbl.Hierarchy.Crs.CrsCod :
|
||||
-1L))))),
|
||||
1 << Rol_STD |
|
||||
1 << Rol_NET |
|
||||
1 << Rol_TCH); // Any user
|
||||
NumUsrsTotal = Usr_GetTotalNumberOfUsers ();
|
||||
|
||||
/***** Get number of users with a web / social network *****/
|
||||
switch (Gbl.Scope.Current)
|
||||
|
|
|
@ -2205,7 +2205,6 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
|
|||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prg_items.CrsCod",
|
||||
Gbl.Hierarchy.Cty.CtyCod);
|
||||
case Hie_Lvl_INS:
|
||||
|
@ -2219,7 +2218,6 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
|
|||
" WHERE ctr_centers.InsCod=%ld"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prg_items.CrsCod",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
case Hie_Lvl_CTR:
|
||||
|
@ -2231,7 +2229,6 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
|
|||
"prg_items"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prg_items.CrsCod",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
case Hie_Lvl_DEG:
|
||||
|
@ -2241,7 +2238,6 @@ unsigned Prg_GetNumCoursesWithItems (Hie_Lvl_Level_t Scope)
|
|||
" FROM crs_courses,"
|
||||
"prg_items"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prg_items.CrsCod",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
case Hie_Lvl_CRS:
|
||||
|
|
|
@ -4630,7 +4630,6 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
|
|||
" AND ins_instits.InsCod=ctr_centers.InsCod"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prj_projects.CrsCod",
|
||||
Gbl.Hierarchy.Cty.CtyCod);
|
||||
case Hie_Lvl_INS:
|
||||
|
@ -4644,7 +4643,6 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
|
|||
" WHERE ctr_centers.InsCod=%ld"
|
||||
" AND ctr_centers.CtrCod=deg_degrees.CtrCod"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prj_projects.CrsCod",
|
||||
Gbl.Hierarchy.Ins.InsCod);
|
||||
case Hie_Lvl_CTR:
|
||||
|
@ -4656,7 +4654,6 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
|
|||
"prj_projects"
|
||||
" WHERE deg_degrees.CtrCod=%ld"
|
||||
" AND deg_degrees.DegCod=crs_courses.DegCod"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prj_projects.CrsCod",
|
||||
Gbl.Hierarchy.Ctr.CtrCod);
|
||||
case Hie_Lvl_DEG:
|
||||
|
@ -4666,7 +4663,6 @@ unsigned Prj_GetNumCoursesWithProjects (Hie_Lvl_Level_t Scope)
|
|||
" FROM crs_courses,"
|
||||
"prj_projects"
|
||||
" WHERE crs_courses.DegCod=%ld"
|
||||
" AND crs_courses.Status=0"
|
||||
" AND crs_courses.CrsCod=prj_projects.CrsCod",
|
||||
Gbl.Hierarchy.Deg.DegCod);
|
||||
break;
|
||||
|
|
88
swad_text.c
88
swad_text.c
|
@ -21319,7 +21319,7 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
#if L==1 // ca
|
||||
"Agenda"
|
||||
#elif L==2 // de
|
||||
"Organizer"
|
||||
"Agenda"
|
||||
#elif L==3 // en
|
||||
"Agenda"
|
||||
#elif L==4 // es
|
||||
|
@ -23246,7 +23246,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
|
|||
#if L==1 // ca
|
||||
"Agenda"
|
||||
#elif L==2 // de
|
||||
"Organizer"
|
||||
"Agenda"
|
||||
#elif L==3 // en
|
||||
"Agenda (personal organizer)"
|
||||
#elif L==4 // es
|
||||
|
@ -29245,46 +29245,67 @@ const char *Txt_Number_of_BR_courses_with_BR_surveys =
|
|||
"N.º de<br />disciplinas<br />com inquéritos";
|
||||
#endif
|
||||
|
||||
const char *Txt_Number_of_BR_events =
|
||||
const char *Txt_Number_of_events =
|
||||
#if L==1 // ca
|
||||
"N.º d'<br />esdeveniments.";
|
||||
"N.º d'esdeveniments";
|
||||
#elif L==2 // de
|
||||
"Anzahl der<br />Ereignisse";
|
||||
"Anzahl der Ereignisse";
|
||||
#elif L==3 // en
|
||||
"Number of<br />events";
|
||||
"Number of events";
|
||||
#elif L==4 // es
|
||||
"N.º de<br />eventos";
|
||||
"N.º de eventos";
|
||||
#elif L==5 // fr
|
||||
"Nombre<br />d'événements";
|
||||
"Nombre d'événements";
|
||||
#elif L==6 // gn
|
||||
"N.º de<br />eventos"; // Okoteve traducción
|
||||
"N.º de eventos"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Numero di<br />eventi";
|
||||
"Numero di eventi";
|
||||
#elif L==8 // pl
|
||||
"Liczba of<br />zdarzenia";
|
||||
"Liczba of zdarzenia";
|
||||
#elif L==9 // pt
|
||||
"Número de<br />eventos";
|
||||
"Número de eventos";
|
||||
#endif
|
||||
|
||||
const char *Txt_Number_of_BR_emails =
|
||||
const char *Txt_Number_of_events_per_user =
|
||||
#if L==1 // ca
|
||||
"N.º de<br />correos"; // Necessita traduccio
|
||||
"N.º d'esdeveniments per usuari";
|
||||
#elif L==2 // de
|
||||
"Anzahl der<br />E-Mails";
|
||||
"Anzahl der Ereignisse pro Benutzer";
|
||||
#elif L==3 // en
|
||||
"Number of<br />emails";
|
||||
"Number of events per user";
|
||||
#elif L==4 // es
|
||||
"N.º de<br />correos";
|
||||
"N.º de eventos por usuario";
|
||||
#elif L==5 // fr
|
||||
"Nombre<br />d'emails";
|
||||
"Nombre d'événements par utilisateur";
|
||||
#elif L==6 // gn
|
||||
"N.º de<br />correos"; // Okoteve traducción
|
||||
"N.º de eventos por usuario"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Numero di<br />email";
|
||||
"Numero di eventi per utente";
|
||||
#elif L==8 // pl
|
||||
"Liczba<br />email";
|
||||
"Liczba zdarzeń na użytkownika";
|
||||
#elif L==9 // pt
|
||||
"Número de<br />emails";
|
||||
"Número de eventos por utilizador";
|
||||
#endif
|
||||
|
||||
const char *Txt_Number_of_emails =
|
||||
#if L==1 // ca
|
||||
"N.º de correos"; // Necessita traduccio
|
||||
#elif L==2 // de
|
||||
"Anzahl der E-Mails";
|
||||
#elif L==3 // en
|
||||
"Number of emails";
|
||||
#elif L==4 // es
|
||||
"N.º de correos";
|
||||
#elif L==5 // fr
|
||||
"Nombre d'emails";
|
||||
#elif L==6 // gn
|
||||
"N.º de correos"; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Numero di email";
|
||||
#elif L==8 // pl
|
||||
"Liczba email";
|
||||
#elif L==9 // pt
|
||||
"Número de emails";
|
||||
#endif
|
||||
|
||||
const char *Txt_Number_of_BR_exams =
|
||||
|
@ -32770,7 +32791,7 @@ const char *Txt_Public_agenda_USER = // Warning: it is very important to include
|
|||
#if L==1 // ca
|
||||
"Agenda pública de %s";
|
||||
#elif L==2 // de
|
||||
"Öffentliche Organizer von %s";
|
||||
"Öffentliche Agenda von %s";
|
||||
#elif L==3 // en
|
||||
"%s's public agenda";
|
||||
#elif L==4 // es
|
||||
|
@ -44378,6 +44399,27 @@ const char *Txt_FIGURE_TYPES[Fig_NUM_FIGURES] =
|
|||
"Wiadomości"
|
||||
#elif L==9 // pt
|
||||
"Mensagens"
|
||||
#endif
|
||||
,
|
||||
[Fig_AGENDAS] =
|
||||
#if L==1 // ca
|
||||
"Agendes"
|
||||
#elif L==2 // de
|
||||
"Agenden"
|
||||
#elif L==3 // en
|
||||
"Agendas"
|
||||
#elif L==4 // es
|
||||
"Agendas"
|
||||
#elif L==5 // fr
|
||||
"Agendas"
|
||||
#elif L==6 // gn
|
||||
"Aporyrã"
|
||||
#elif L==7 // it
|
||||
"Agende"
|
||||
#elif L==8 // pl
|
||||
"Pamiętnik"
|
||||
#elif L==9 // pt
|
||||
"Agendas"
|
||||
#endif
|
||||
,
|
||||
[Fig_SOCIAL_NETWORKS] =
|
||||
|
|
33
swad_user.c
33
swad_user.c
|
@ -9395,13 +9395,34 @@ void Usr_ShowWarningNoUsersFound (Rol_Role_t Role)
|
|||
/****************** Get total number of users in platform ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Usr_GetTotalNumberOfUsersInPlatform (void)
|
||||
unsigned Usr_GetTotalNumberOfUsers (void)
|
||||
{
|
||||
/***** Get number of users from database *****/
|
||||
return
|
||||
(unsigned) DB_QueryCOUNT ("can not get number of users",
|
||||
"SELECT COUNT(UsrCod)"
|
||||
" FROM usr_data");
|
||||
long Cod;
|
||||
unsigned Roles;
|
||||
|
||||
/***** Get number of users with events from database *****/
|
||||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case Hie_Lvl_SYS:
|
||||
return (unsigned) DB_GetNumRowsTable ("usr_data"); // All users in platform
|
||||
case Hie_Lvl_CTY:
|
||||
case Hie_Lvl_INS:
|
||||
case Hie_Lvl_CTR:
|
||||
case Hie_Lvl_DEG:
|
||||
case Hie_Lvl_CRS:
|
||||
Cod = (Gbl.Scope.Current == Hie_Lvl_CTY ? Gbl.Hierarchy.Cty.CtyCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_INS ? Gbl.Hierarchy.Ins.InsCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_CTR ? Gbl.Hierarchy.Ctr.CtrCod :
|
||||
(Gbl.Scope.Current == Hie_Lvl_DEG ? Gbl.Hierarchy.Deg.DegCod :
|
||||
Gbl.Hierarchy.Crs.CrsCod))));
|
||||
Roles = (1 << Rol_STD) |
|
||||
(1 << Rol_NET) |
|
||||
(1 << Rol_TCH);
|
||||
return Usr_GetCachedNumUsrsInCrss (Gbl.Scope.Current,Cod,Roles); // All users in courses
|
||||
default:
|
||||
Lay_WrongScopeExit ();
|
||||
return 0; // Not reached
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -516,7 +516,7 @@ bool Usr_ChkIfUsrCodExists (long UsrCod);
|
|||
|
||||
void Usr_ShowWarningNoUsersFound (Rol_Role_t Role);
|
||||
|
||||
unsigned Usr_GetTotalNumberOfUsersInPlatform (void);
|
||||
unsigned Usr_GetTotalNumberOfUsers (void);
|
||||
unsigned Usr_GetNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles);
|
||||
unsigned Usr_GetCachedNumUsrsInCrss (Hie_Lvl_Level_t Scope,long Cod,unsigned Roles);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user