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_NumUsrs (void);
static void CtrCfg_NumDegs (void); static void CtrCfg_NumDegs (void);
static void CtrCfg_NumCrss (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_UpdateCtrInsDB (long CtrCod,long InsCod);
static void CtrCfg_UpdateCtrCoordinateDB (long CtrCod, static void CtrCfg_UpdateCtrCoordinateDB (long CtrCod,
@ -210,10 +209,10 @@ static void CtrCfg_Configuration (bool PrintView)
CtrCfg_NumCrss (); CtrCfg_NumCrss ();
/***** Number of users in courses of this centre *****/ /***** Number of users in courses of this centre *****/
CtrCfg_NumUsrsInCrssOfCtr (Rol_TCH); HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_TCH);
CtrCfg_NumUsrsInCrssOfCtr (Rol_NET); HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_NET);
CtrCfg_NumUsrsInCrssOfCtr (Rol_STD); HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_STD);
CtrCfg_NumUsrsInCrssOfCtr (Rol_UNK); HieCfg_NumUsrsInCrss (Hie_CTR,Gbl.Hierarchy.Ctr.CtrCod,Rol_UNK);
} }
/***** End table *****/ /***** End table *****/
@ -804,35 +803,6 @@ static void CtrCfg_NumCrss (void)
HTM_TR_End (); 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 ************/ /*********** 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: En OpenSWAD:
ps2pdf source.ps destination.pdf 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 CSS_FILE "swad19.193.1.css"
#define JS_FILE "swad19.193.1.js" #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) Version 19.209.3: May 01, 2020 More figures cached. (300750 lines)
1 change necessary in database: 1 change necessary in database:
DELETE FROM figures; DELETE FROM figures;

View File

@ -75,7 +75,6 @@ static void CtyCfg_NumUsrs (void);
static void CtyCfg_NumInss (void); static void CtyCfg_NumInss (void);
static void CtyCfg_NumDegs (void); static void CtyCfg_NumDegs (void);
static void CtyCfg_NumCrss (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_GetMapAttr (long CtyCod,char **MapAttribution);
static void CtyCfg_FreeMapAttr (char **MapAttribution); static void CtyCfg_FreeMapAttr (char **MapAttribution);
@ -170,10 +169,10 @@ static void CtyCfg_Configuration (bool PrintView)
CtyCfg_NumCrss (); CtyCfg_NumCrss ();
/***** Number of users in courses of this country *****/ /***** Number of users in courses of this country *****/
CtyCfg_NumUsrsInCrssOfCty (Rol_TCH); HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_TCH);
CtyCfg_NumUsrsInCrssOfCty (Rol_NET); HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_NET);
CtyCfg_NumUsrsInCrssOfCty (Rol_STD); HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_STD);
CtyCfg_NumUsrsInCrssOfCty (Rol_UNK); HieCfg_NumUsrsInCrss (Hie_CTY,Gbl.Hierarchy.Cty.CtyCod,Rol_UNK);
} }
/***** End table *****/ /***** End table *****/
@ -565,35 +564,6 @@ static void CtyCfg_NumCrss (void)
HTM_TR_End (); 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 **********************/ /******************** 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_InternalCode (void);
static void CrsCfg_Shortcut (bool PrintView); static void CrsCfg_Shortcut (bool PrintView);
static void CrsCfg_QR (void); static void CrsCfg_QR (void);
static void CrsCfg_NumUsrsInCrs (Rol_Role_t Role);
static void CrsCfg_Indicators (void); static void CrsCfg_Indicators (void);
static void CrsCfg_UpdateCrsDegDB (long CrsCod,long DegCod); static void CrsCfg_UpdateCrsDegDB (long CrsCod,long DegCod);
@ -159,9 +158,10 @@ void CrsCfg_Configuration (bool PrintView)
else else
{ {
/***** Number of users *****/ /***** Number of users *****/
CrsCfg_NumUsrsInCrs (Rol_TCH); HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_TCH);
CrsCfg_NumUsrsInCrs (Rol_NET); HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_NET);
CrsCfg_NumUsrsInCrs (Rol_STD); HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_STD);
HieCfg_NumUsrsInCrss (Hie_CRS,Gbl.Hierarchy.Crs.CrsCod,Rol_UNK);
/***** Indicators *****/ /***** Indicators *****/
CrsCfg_Indicators (); CrsCfg_Indicators ();
@ -416,32 +416,6 @@ static void CrsCfg_QR (void)
HieCfg_QR ("crs",Gbl.Hierarchy.Crs.CrsCod); 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 ******************/ /****************** 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_Shortcut (bool PrintView);
static void DegCfg_QR (void); static void DegCfg_QR (void);
static void DegCfg_NumCrss (void); static void DegCfg_NumCrss (void);
static void DegCfg_NumUsrsInCrssOfDeg (Rol_Role_t Role);
static void DegCfg_UpdateDegCtrDB (long DegCod,long CtrCod); static void DegCfg_UpdateDegCtrDB (long DegCod,long CtrCod);
@ -156,10 +155,10 @@ static void DegCfg_Configuration (bool PrintView)
DegCfg_NumCrss (); DegCfg_NumCrss ();
/***** Number of users *****/ /***** Number of users *****/
DegCfg_NumUsrsInCrssOfDeg (Rol_TCH); HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_TCH);
DegCfg_NumUsrsInCrssOfDeg (Rol_NET); HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_NET);
DegCfg_NumUsrsInCrssOfDeg (Rol_STD); HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_STD);
DegCfg_NumUsrsInCrssOfDeg (Rol_UNK); HieCfg_NumUsrsInCrss (Hie_DEG,Gbl.Hierarchy.Deg.DegCod,Rol_UNK);
} }
/***** End table *****/ /***** End table *****/
@ -349,35 +348,6 @@ static void DegCfg_NumCrss (void)
HTM_TR_End (); 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 **********************/ /************************ Change the centre of a degree **********************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -25,6 +25,7 @@
/********************************* Headers ***********************************/ /********************************* Headers ***********************************/
/*****************************************************************************/ /*****************************************************************************/
#include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -314,3 +315,54 @@ void HieCfg_QR (const char *ParamName,long HieCod)
HTM_TR_End (); 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_NumCtrs (unsigned NumCtrs,bool PutForm);
void HieCfg_NumCtrsWithMap (unsigned NumCtrs,unsigned NumCtrsWithMap); void HieCfg_NumCtrsWithMap (unsigned NumCtrs,unsigned NumCtrsWithMap);
void HieCfg_QR (const char *ParamName,long HieCod); void HieCfg_QR (const char *ParamName,long HieCod);
void HieCfg_NumUsrsInCrss (Hie_Level_t Scope,long Cod,Rol_Role_t Role);
#endif #endif

View File

@ -79,7 +79,6 @@ static void InsCfg_NumUsrs (void);
static void InsCfg_NumDegs (void); static void InsCfg_NumDegs (void);
static void InsCfg_NumCrss (void); static void InsCfg_NumCrss (void);
static void InsCfg_NumDpts (void); static void InsCfg_NumDpts (void);
static void InsCfg_NumUsrsInCrssOfIns (Rol_Role_t Role);
static void InsCfg_UpdateInsCtyDB (long InsCod,long CtyCod); static void InsCfg_UpdateInsCtyDB (long InsCod,long CtyCod);
/*****************************************************************************/ /*****************************************************************************/
@ -182,10 +181,10 @@ static void InsCfg_Configuration (bool PrintView)
InsCfg_NumDpts (); InsCfg_NumDpts ();
/***** Number of users in courses of this institution *****/ /***** Number of users in courses of this institution *****/
InsCfg_NumUsrsInCrssOfIns (Rol_TCH); HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_TCH);
InsCfg_NumUsrsInCrssOfIns (Rol_NET); HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_NET);
InsCfg_NumUsrsInCrssOfIns (Rol_STD); HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_STD);
InsCfg_NumUsrsInCrssOfIns (Rol_UNK); HieCfg_NumUsrsInCrss (Hie_INS,Gbl.Hierarchy.Ins.InsCod,Rol_UNK);
} }
/***** End table *****/ /***** End table *****/
@ -543,35 +542,6 @@ static void InsCfg_NumDpts (void)
HTM_TR_End (); 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 **********/ /******** 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_NumInss (void);
static void SysCfg_NumDegs (void); static void SysCfg_NumDegs (void);
static void SysCfg_NumCrss (void); static void SysCfg_NumCrss (void);
static void SysCfg_NumUsrsInCrss (Rol_Role_t Role);
/*****************************************************************************/ /*****************************************************************************/
/***************** Show information of the current country *******************/ /***************** Show information of the current country *******************/
@ -170,10 +169,10 @@ static void SysCfg_Configuration (bool PrintView)
SysCfg_NumCrss (); SysCfg_NumCrss ();
/***** Number of users in courses of this country *****/ /***** Number of users in courses of this country *****/
SysCfg_NumUsrsInCrss (Rol_TCH); HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_TCH);
SysCfg_NumUsrsInCrss (Rol_NET); HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_NET);
SysCfg_NumUsrsInCrss (Rol_STD); HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_STD);
SysCfg_NumUsrsInCrss (Rol_UNK); HieCfg_NumUsrsInCrss (Hie_SYS,-1L,Rol_UNK);
} }
/***** End table *****/ /***** End table *****/
@ -474,54 +473,3 @@ static void SysCfg_NumCrss (void)
HTM_TR_End (); 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 ();
}