Version19.209.4

This commit is contained in:
acanas 2020-05-02 10:53:40 +02:00
parent d6206198ba
commit cf8c716568
9 changed files with 80 additions and 223 deletions

View File

@ -96,7 +96,6 @@ static void CtrCfg_QR (void);
static void CtrCfg_NumUsrs (void);
static void CtrCfg_NumDegs (void);
static void CtrCfg_NumCrss (void);
static void CtrCfg_NumUsrsInCrssOfCtr (Rol_Role_t Role);
static void CtrCfg_UpdateCtrInsDB (long CtrCod,long InsCod);
static void CtrCfg_UpdateCtrCoordinateDB (long CtrCod,
@ -210,10 +209,10 @@ static void CtrCfg_Configuration (bool PrintView)
CtrCfg_NumCrss ();
/***** Number of users in courses of this centre *****/
CtrCfg_NumUsrsInCrssOfCtr (Rol_TCH);
CtrCfg_NumUsrsInCrssOfCtr (Rol_NET);
CtrCfg_NumUsrsInCrssOfCtr (Rol_STD);
CtrCfg_NumUsrsInCrssOfCtr (Rol_UNK);
HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_UNK);
}
/***** End table *****/
@ -804,35 +803,6 @@ static void CtrCfg_NumCrss (void)
HTM_TR_End ();
}
/*****************************************************************************/
/**************** Number of users in courses of this centre ******************/
/*****************************************************************************/
static void CtrCfg_NumUsrsInCrssOfCtr (Rol_Role_t Role)
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
/***** Number of users in courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,
Role == Rol_UNK ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,
Role == Rol_UNK ? 1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH : // Any user
1 << Role));
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/*********** Show a form for sending a logo of the current centre ************/
/*****************************************************************************/

View File

@ -544,10 +544,12 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.209.3 (2020-05-01)"
#define Log_PLATFORM_VERSION "SWAD 19.209.4 (2020-05-02)"
#define CSS_FILE "swad19.193.1.css"
#define JS_FILE "swad19.193.1.js"
/*
Version 19.209.4: May 02, 2020 More figures cached.
Code refactoring in hierarchy configuration. (300637 lines)
Version 19.209.3: May 01, 2020 More figures cached. (300750 lines)
1 change necessary in database:
DELETE FROM figures;

View File

@ -75,7 +75,6 @@ static void CtyCfg_NumUsrs (void);
static void CtyCfg_NumInss (void);
static void CtyCfg_NumDegs (void);
static void CtyCfg_NumCrss (void);
static void CtyCfg_NumUsrsInCrssOfCty (Rol_Role_t Role);
static void CtyCfg_GetMapAttr (long CtyCod,char **MapAttribution);
static void CtyCfg_FreeMapAttr (char **MapAttribution);
@ -170,10 +169,10 @@ static void CtyCfg_Configuration (bool PrintView)
CtyCfg_NumCrss ();
/***** Number of users in courses of this country *****/
CtyCfg_NumUsrsInCrssOfCty (Rol_TCH);
CtyCfg_NumUsrsInCrssOfCty (Rol_NET);
CtyCfg_NumUsrsInCrssOfCty (Rol_STD);
CtyCfg_NumUsrsInCrssOfCty (Rol_UNK);
HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_UNK);
}
/***** End table *****/
@ -565,35 +564,6 @@ static void CtyCfg_NumCrss (void)
HTM_TR_End ();
}
/*****************************************************************************/
/**************** Number of users in courses of this country *****************/
/*****************************************************************************/
static void CtyCfg_NumUsrsInCrssOfCty (Rol_Role_t Role)
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
/***** Number of users in courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,
Role == Rol_UNK ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,
Role == Rol_UNK ? 1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH : // Any user
1 << Role));
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/******************** Get map attribution from database **********************/
/*****************************************************************************/

View File

@ -73,7 +73,6 @@ static void CrsCfg_InstitutionalCode (bool PutForm);
static void CrsCfg_InternalCode (void);
static void CrsCfg_Shortcut (bool PrintView);
static void CrsCfg_QR (void);
static void CrsCfg_NumUsrsInCrs (Rol_Role_t Role);
static void CrsCfg_Indicators (void);
static void CrsCfg_UpdateCrsDegDB (long CrsCod,long DegCod);
@ -159,9 +158,10 @@ void CrsCfg_Configuration (bool PrintView)
else
{
/***** Number of users *****/
CrsCfg_NumUsrsInCrs (Rol_TCH);
CrsCfg_NumUsrsInCrs (Rol_NET);
CrsCfg_NumUsrsInCrs (Rol_STD);
HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_UNK);
/***** Indicators *****/
CrsCfg_Indicators ();
@ -416,32 +416,6 @@ static void CrsCfg_QR (void)
HieCfg_QR ("crs",Gbl.Hierarchy.Crs.CrsCod);
}
/*****************************************************************************/
/*********************** Number of users in this course **********************/
/*****************************************************************************/
static void CrsCfg_NumUsrsInCrs (Rol_Role_t Role)
{
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
/***** Number of users in course *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,
Role == Rol_UNK ? 1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH : // Any user
1 << Role));
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/****************** Show indicators in course configuration ******************/
/*****************************************************************************/

View File

@ -68,7 +68,6 @@ static void DegCfg_WWW (bool PrintView,bool PutForm);
static void DegCfg_Shortcut (bool PrintView);
static void DegCfg_QR (void);
static void DegCfg_NumCrss (void);
static void DegCfg_NumUsrsInCrssOfDeg (Rol_Role_t Role);
static void DegCfg_UpdateDegCtrDB (long DegCod,long CtrCod);
@ -156,10 +155,10 @@ static void DegCfg_Configuration (bool PrintView)
DegCfg_NumCrss ();
/***** Number of users *****/
DegCfg_NumUsrsInCrssOfDeg (Rol_TCH);
DegCfg_NumUsrsInCrssOfDeg (Rol_NET);
DegCfg_NumUsrsInCrssOfDeg (Rol_STD);
DegCfg_NumUsrsInCrssOfDeg (Rol_UNK);
HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_UNK);
}
/***** End table *****/
@ -349,35 +348,6 @@ static void DegCfg_NumCrss (void)
HTM_TR_End ();
}
/*****************************************************************************/
/***************** Number of users in courses of this degree *****************/
/*****************************************************************************/
static void DegCfg_NumUsrsInCrssOfDeg (Rol_Role_t Role)
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
/***** Number of users in courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,
Role == Rol_UNK ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,
Role == Rol_UNK ? 1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH : // Any user
1 << Role));
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/************************ Change the centre of a degree **********************/
/*****************************************************************************/

View File

@ -25,6 +25,7 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
#include "swad_figure_cache.h"
#include "swad_form.h"
#include "swad_global.h"
#include "swad_HTML.h"
@ -314,3 +315,54 @@ void HieCfg_QR (const char *ParamName,long HieCod)
HTM_TR_End ();
}
/*****************************************************************************/
/************************ Number of users in courses *************************/
/*****************************************************************************/
void HieCfg_NumUsrsInCrss (Hie_Level_t Scope,long Cod,Rol_Role_t Role)
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
unsigned NumUsrsInCrss;
static FigCch_FigureCached_t Figure[Rol_NUM_ROLES] =
{
[Rol_UNK ] = FigCch_NUM_USRS_IN_CRSS, // Any users in courses
[Rol_GST ] = FigCch_UNKNOWN, // Not applicable
[Rol_USR ] = FigCch_UNKNOWN, // Not applicable
[Rol_STD ] = FigCch_NUM_STDS_IN_CRSS, // Students
[Rol_NET ] = FigCch_NUM_NETS_IN_CRSS, // Non-editing teachers
[Rol_TCH ] = FigCch_NUM_TCHS_IN_CRSS, // Teachers
[Rol_DEG_ADM] = FigCch_UNKNOWN, // Not applicable
[Rol_CTR_ADM] = FigCch_UNKNOWN, // Not applicable
[Rol_INS_ADM] = FigCch_UNKNOWN, // Not applicable
[Rol_SYS_ADM] = FigCch_UNKNOWN, // Not applicable
};
/***** Number of users in courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,
Role == Rol_UNK ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
if (!FigCch_GetFigureFromCache (Figure[Role],Scope,Cod,
FigCch_Type_UNSIGNED,&NumUsrsInCrss))
{
// Not updated recently in cache ==> compute and update it in cache
NumUsrsInCrss = Usr_GetNumUsrsInCrss (Scope,Cod,
Role == Rol_UNK ? (1 << Rol_STD) |
(1 << Rol_NET) |
(1 << Rol_TCH) : // Any user
(1 << Role));
FigCch_UpdateFigureIntoCache (Figure[Role],Scope,Cod,
FigCch_Type_UNSIGNED,&NumUsrsInCrss);
}
HTM_Unsigned (NumUsrsInCrss);
HTM_TD_End ();
HTM_TR_End ();
}

View File

@ -56,5 +56,6 @@ void HieCfg_Shortcut (bool PrintView,const char *ParamName,long HieCod);
void HieCfg_NumCtrs (unsigned NumCtrs,bool PutForm);
void HieCfg_NumCtrsWithMap (unsigned NumCtrs,unsigned NumCtrsWithMap);
void HieCfg_QR (const char *ParamName,long HieCod);
void HieCfg_NumUsrsInCrss (Hie_Level_t Scope,long Cod,Rol_Role_t Role);
#endif

View File

@ -79,7 +79,6 @@ static void InsCfg_NumUsrs (void);
static void InsCfg_NumDegs (void);
static void InsCfg_NumCrss (void);
static void InsCfg_NumDpts (void);
static void InsCfg_NumUsrsInCrssOfIns (Rol_Role_t Role);
static void InsCfg_UpdateInsCtyDB (long InsCod,long CtyCod);
/*****************************************************************************/
@ -182,10 +181,10 @@ static void InsCfg_Configuration (bool PrintView)
InsCfg_NumDpts ();
/***** Number of users in courses of this institution *****/
InsCfg_NumUsrsInCrssOfIns (Rol_TCH);
InsCfg_NumUsrsInCrssOfIns (Rol_NET);
InsCfg_NumUsrsInCrssOfIns (Rol_STD);
InsCfg_NumUsrsInCrssOfIns (Rol_UNK);
HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_UNK);
}
/***** End table *****/
@ -543,35 +542,6 @@ static void InsCfg_NumDpts (void)
HTM_TR_End ();
}
/*****************************************************************************/
/************** Number of users in courses of this institution ***************/
/*****************************************************************************/
static void InsCfg_NumUsrsInCrssOfIns (Rol_Role_t Role)
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
/***** Number of users in courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,
Role == Rol_UNK ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
HTM_Unsigned (Usr_GetNumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,
Role == Rol_UNK ? 1 << Rol_STD |
1 << Rol_NET |
1 << Rol_TCH : // Any user
1 << Role));
HTM_TD_End ();
HTM_TR_End ();
}
/*****************************************************************************/
/******** Show a form for sending a logo of the current institution **********/
/*****************************************************************************/

View File

@ -76,7 +76,6 @@ static void SysCfg_NumCtys (void);
static void SysCfg_NumInss (void);
static void SysCfg_NumDegs (void);
static void SysCfg_NumCrss (void);
static void SysCfg_NumUsrsInCrss (Rol_Role_t Role);
/*****************************************************************************/
/***************** Show information of the current country *******************/
@ -170,10 +169,10 @@ static void SysCfg_Configuration (bool PrintView)
SysCfg_NumCrss ();
/***** Number of users in courses of this country *****/
SysCfg_NumUsrsInCrss (Rol_TCH);
SysCfg_NumUsrsInCrss (Rol_NET);
SysCfg_NumUsrsInCrss (Rol_STD);
SysCfg_NumUsrsInCrss (Rol_UNK);
HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_TCH);
HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_NET);
HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_UNK);
}
/***** End table *****/
@ -474,54 +473,3 @@ static void SysCfg_NumCrss (void)
HTM_TR_End ();
}
/*****************************************************************************/
/***************** Number of users in courses of the system ******************/
/*****************************************************************************/
static void SysCfg_NumUsrsInCrss (Rol_Role_t Role)
{
extern const char *Txt_Users_in_courses;
extern const char *Txt_ROLES_PLURAL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
unsigned NumUsrsInCrss;
static FigCch_FigureCached_t Figure[Rol_NUM_ROLES] =
{
[Rol_UNK ] = FigCch_NUM_USRS_IN_CRSS, // Any users in courses
[Rol_GST ] = FigCch_UNKNOWN, // Not applicable
[Rol_USR ] = FigCch_UNKNOWN, // Not applicable
[Rol_STD ] = FigCch_NUM_STDS_IN_CRSS, // Students
[Rol_NET ] = FigCch_NUM_NETS_IN_CRSS, // Non-editing teachers
[Rol_TCH ] = FigCch_NUM_TCHS_IN_CRSS, // Teachers
[Rol_DEG_ADM] = FigCch_UNKNOWN, // Not applicable
[Rol_CTR_ADM] = FigCch_UNKNOWN, // Not applicable
[Rol_INS_ADM] = FigCch_UNKNOWN, // Not applicable
[Rol_SYS_ADM] = FigCch_UNKNOWN, // Not applicable
};
/***** Number of users in courses *****/
HTM_TR_Begin (NULL);
/* Label */
Frm_LabelColumn ("RT",NULL,
Role == Rol_UNK ? Txt_Users_in_courses :
Txt_ROLES_PLURAL_Abc[Role][Usr_SEX_UNKNOWN]);
/* Data */
HTM_TD_Begin ("class=\"DAT LB\"");
if (!FigCch_GetFigureFromCache (Figure[Role],Hie_SYS,-1L,
FigCch_Type_UNSIGNED,&NumUsrsInCrss))
{
// Not updated recently in cache ==> compute and update it in cache
NumUsrsInCrss = Usr_GetNumUsrsInCrss (Hie_SYS,-1L,
Role == Rol_UNK ? (1 << Rol_STD) |
(1 << Rol_NET) |
(1 << Rol_TCH) : // Any user
(1 << Role));
FigCch_UpdateFigureIntoCache (Figure[Role],Hie_SYS,-1L,
FigCch_Type_UNSIGNED,&NumUsrsInCrss);
}
HTM_Unsigned (NumUsrsInCrss);
HTM_TD_End ();
HTM_TR_End ();
}