mirror of
https://github.com/acanas/swad-core.git
synced 2024-06-30 04:15:54 +02:00
Version 23.12: Sep 20, 2023 Code refactoring in hierarchy and cache.
This commit is contained in:
parent
9accc808f5
commit
39477a6e48
|
@ -367,14 +367,14 @@ static void Ctr_ListOneCenterForSeeing (struct Hie_Node *Ctr,unsigned NumCtr)
|
||||||
/***** Number of degrees *****/
|
/***** Number of degrees *****/
|
||||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_CTR,Ctr->HieCod));
|
HieLvl_CTR,Ctr->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Number of courses *****/
|
/***** Number of courses *****/
|
||||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_CTR,Ctr->HieCod));
|
HieLvl_CTR,Ctr->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -757,7 +757,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places)
|
||||||
Ctr = &Gbl.Hierarchy.List[HieLvl_INS].Lst[NumCtr];
|
Ctr = &Gbl.Hierarchy.List[HieLvl_INS].Lst[NumCtr];
|
||||||
|
|
||||||
ICanEdit = Ctr_CheckIfICanEditACenter (Ctr);
|
ICanEdit = Ctr_CheckIfICanEditACenter (Ctr);
|
||||||
NumDegs = Deg_GetNumDegsInCtr (Ctr->HieCod);
|
NumDegs = Hie_GetFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR,Ctr->HieCod);
|
||||||
NumUsrsCtr = Ctr_GetNumUsrsWhoClaimToBelongToCtr (Ctr);
|
NumUsrsCtr = Ctr_GetNumUsrsWhoClaimToBelongToCtr (Ctr);
|
||||||
NumUsrsInCrssOfCtr = Enr_GetNumUsrsInCrss (HieLvl_CTR,Ctr->HieCod,
|
NumUsrsInCrssOfCtr = Enr_GetNumUsrsInCrss (HieLvl_CTR,Ctr->HieCod,
|
||||||
1 << Rol_STD |
|
1 << Rol_STD |
|
||||||
|
@ -958,7 +958,7 @@ void Ctr_RemoveCenter (void)
|
||||||
Ctr_GetCenterDataByCod (Ctr_EditingCtr);
|
Ctr_GetCenterDataByCod (Ctr_EditingCtr);
|
||||||
|
|
||||||
/***** Check if this center has teachers *****/
|
/***** Check if this center has teachers *****/
|
||||||
if (Deg_GetNumDegsInCtr (Ctr_EditingCtr->HieCod)) // Center has degrees
|
if (Hie_GetFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR,Ctr_EditingCtr->HieCod)) // Center has degrees
|
||||||
Ale_ShowAlert (Ale_WARNING,
|
Ale_ShowAlert (Ale_WARNING,
|
||||||
Txt_To_remove_a_center_you_must_first_remove_all_degrees_and_teachers_in_the_center);
|
Txt_To_remove_a_center_you_must_first_remove_all_degrees_and_teachers_in_the_center);
|
||||||
else if (Ctr_GetNumUsrsWhoClaimToBelongToCtr (Ctr_EditingCtr)) // Center has users who claim to belong to it
|
else if (Ctr_GetNumUsrsWhoClaimToBelongToCtr (Ctr_EditingCtr)) // Center has users who claim to belong to it
|
||||||
|
@ -998,8 +998,8 @@ void Ctr_RemoveCenter (void)
|
||||||
Ctr_DB_RemoveCenter (Ctr_EditingCtr->HieCod);
|
Ctr_DB_RemoveCenter (Ctr_EditingCtr->HieCod);
|
||||||
|
|
||||||
/***** Flush caches *****/
|
/***** Flush caches *****/
|
||||||
Deg_FlushCacheNumDegsInCtr ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR);
|
||||||
Crs_FlushCacheNumCrssInCtr ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTR);
|
||||||
Ctr_FlushCacheNumUsrsWhoClaimToBelongToCtr ();
|
Ctr_FlushCacheNumUsrsWhoClaimToBelongToCtr ();
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
@ -1554,62 +1554,6 @@ static void Ctr_ReceiveFormRequestOrCreateCtr (Hie_Status_t Status)
|
||||||
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
|
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************* Get number of centers in a country **********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Ctr_FlushCacheNumCtrsInCty (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumCtrsInCty.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumCtrsInCty.NumCtrs = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Ctr_GetNumCtrsInCty (long CtyCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (CtyCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (CtyCod == Gbl.Cache.NumCtrsInCty.HieCod)
|
|
||||||
return Gbl.Cache.NumCtrsInCty.NumCtrs;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of centers in a country from database *****/
|
|
||||||
Gbl.Cache.NumCtrsInCty.HieCod = CtyCod;
|
|
||||||
Gbl.Cache.NumCtrsInCty.NumCtrs = Ctr_DB_GetNumCtrsInCty (CtyCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_CTY,Gbl.Cache.NumCtrsInCty.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInCty.NumCtrs);
|
|
||||||
return Gbl.Cache.NumCtrsInCty.NumCtrs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/**************** Get number of centers in an institution ********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Ctr_FlushCacheNumCtrsInIns (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumCtrsInIns.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumCtrsInIns.NumCtrs = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Ctr_GetNumCtrsInIns (long InsCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (InsCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (InsCod == Gbl.Cache.NumCtrsInIns.HieCod)
|
|
||||||
return Gbl.Cache.NumCtrsInIns.NumCtrs;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of centers in an institution from database *****/
|
|
||||||
Gbl.Cache.NumCtrsInIns.HieCod = InsCod;
|
|
||||||
Gbl.Cache.NumCtrsInIns.NumCtrs = Ctr_DB_GetNumCtrsInIns (InsCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Cache.NumCtrsInIns.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInIns.NumCtrs);
|
|
||||||
return Gbl.Cache.NumCtrsInIns.NumCtrs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************** Get number of centers with map ***********************/
|
/********************** Get number of centers with map ***********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -71,12 +71,6 @@ void Ctr_ContEditAfterChgCtr (void);
|
||||||
void Ctr_ReceiveFormReqCtr (void);
|
void Ctr_ReceiveFormReqCtr (void);
|
||||||
void Ctr_ReceiveFormNewCtr (void);
|
void Ctr_ReceiveFormNewCtr (void);
|
||||||
|
|
||||||
void Ctr_FlushCacheNumCtrsInCty (void);
|
|
||||||
unsigned Ctr_GetNumCtrsInCty (long CtyCod);
|
|
||||||
|
|
||||||
void Ctr_FlushCacheNumCtrsInIns (void);
|
|
||||||
unsigned Ctr_GetNumCtrsInIns (long InsCod);
|
|
||||||
|
|
||||||
unsigned Ctr_GetCachedNumCtrsWithMapInSys (void);
|
unsigned Ctr_GetCachedNumCtrsWithMapInSys (void);
|
||||||
unsigned Ctr_GetCachedNumCtrsWithMapInCty (long CtyCod);
|
unsigned Ctr_GetCachedNumCtrsWithMapInCty (long CtyCod);
|
||||||
unsigned Ctr_GetCachedNumCtrsWithMapInIns (long InsCod);
|
unsigned Ctr_GetCachedNumCtrsWithMapInIns (long InsCod);
|
||||||
|
|
|
@ -775,7 +775,7 @@ static void CtrCfg_NumDegs (void)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
HTM_BUTTON_Submit_Begin (Title,"class=\"LB BT_LINK\"");
|
HTM_BUTTON_Submit_Begin (Title,"class=\"LB BT_LINK\"");
|
||||||
free (Title);
|
free (Title);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
|
@ -800,7 +800,7 @@ static void CtrCfg_NumCrss (void)
|
||||||
|
|
||||||
/* Data */
|
/* Data */
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
|
|
@ -632,10 +632,11 @@ TODO: Francisco Javier Fern
|
||||||
Me sale este error, no sé si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así?
|
Me sale este error, no sé si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así?
|
||||||
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
||||||
*/
|
*/
|
||||||
#define Log_PLATFORM_VERSION "SWAD 23.11 (2023-09-20)"
|
#define Log_PLATFORM_VERSION "SWAD 23.12 (2023-09-20)"
|
||||||
#define CSS_FILE "swad22.120.4.css"
|
#define CSS_FILE "swad22.120.4.css"
|
||||||
#define JS_FILE "swad22.49.js"
|
#define JS_FILE "swad22.49.js"
|
||||||
/*
|
/*
|
||||||
|
Version 23.12: Sep 20, 2023 Code refactoring in hierarchy and cache. (336919 lines)
|
||||||
Version 23.11: Sep 20, 2023 Code refactoring in hierarchy. (337184 lines)
|
Version 23.11: Sep 20, 2023 Code refactoring in hierarchy. (337184 lines)
|
||||||
Version 23.10: Sep 20, 2023 Code refactoring in hierarchy. (337298 lines)
|
Version 23.10: Sep 20, 2023 Code refactoring in hierarchy. (337298 lines)
|
||||||
Version 23.9.7: Sep 19, 2023 Code refactoring in hierarchy. (337352 lines)
|
Version 23.9.7: Sep 19, 2023 Code refactoring in hierarchy. (337352 lines)
|
||||||
|
|
|
@ -255,25 +255,25 @@ void Cty_ListCountries2 (void)
|
||||||
|
|
||||||
/* Number of institutions in other countries */
|
/* Number of institutions in other countries */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_INSS,
|
||||||
HieLvl_CTY,0));
|
HieLvl_CTY,0));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of centers in other countries */
|
/* Number of centers in other countries */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,
|
||||||
HieLvl_CTY,0));
|
HieLvl_CTY,0));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of degrees in other countries */
|
/* Number of degrees in other countries */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_CTY,0));
|
HieLvl_CTY,0));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of courses in other countries */
|
/* Number of courses in other countries */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_CTY,0));
|
HieLvl_CTY,0));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -304,25 +304,25 @@ void Cty_ListCountries2 (void)
|
||||||
|
|
||||||
/* Number of institutions with unknown country */
|
/* Number of institutions with unknown country */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_INSS,
|
||||||
HieLvl_CTY,-1L));
|
HieLvl_CTY,-1L));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of centers with unknown country */
|
/* Number of centers with unknown country */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,
|
||||||
HieLvl_CTY,-1L));
|
HieLvl_CTY,-1L));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of degrees with unknown country */
|
/* Number of degrees with unknown country */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_CTY,-1L));
|
HieLvl_CTY,-1L));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of courses with unknown country */
|
/* Number of courses with unknown country */
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_CTY,-1L));
|
HieLvl_CTY,-1L));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -442,28 +442,28 @@ static void Cty_ListOneCountryForSeeing (struct Hie_Node *Cty,unsigned NumCty)
|
||||||
/***** Number of institutions *****/
|
/***** Number of institutions *****/
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||||
The_GetSuffix (),BgColor);
|
The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_INSS,
|
||||||
HieLvl_CTY,Cty->HieCod));
|
HieLvl_CTY,Cty->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Number of centers *****/
|
/***** Number of centers *****/
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||||
The_GetSuffix (),BgColor);
|
The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,
|
||||||
HieLvl_CTY,Cty->HieCod));
|
HieLvl_CTY,Cty->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Number of degrees *****/
|
/***** Number of degrees *****/
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||||
The_GetSuffix (),BgColor);
|
The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_CTY,Cty->HieCod));
|
HieLvl_CTY,Cty->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/***** Number of courses *****/
|
/***** Number of courses *****/
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||||
The_GetSuffix (),BgColor);
|
The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_CTY,Cty->HieCod));
|
HieLvl_CTY,Cty->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -635,7 +635,7 @@ void Cty_WriteScriptGoogleGeochart (void)
|
||||||
NumUsrsCty = Cty_GetCachedNumUsrsWhoClaimToBelongToCty (&Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty]);
|
NumUsrsCty = Cty_GetCachedNumUsrsWhoClaimToBelongToCty (&Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty]);
|
||||||
if (NumUsrsCty)
|
if (NumUsrsCty)
|
||||||
{
|
{
|
||||||
NumInss = Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
NumInss = Hie_GetCachedFigureInHieLvl (FigCch_NUM_INSS,
|
||||||
HieLvl_CTY,Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty].HieCod);
|
HieLvl_CTY,Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty].HieCod);
|
||||||
|
|
||||||
/* Write data of this country */
|
/* Write data of this country */
|
||||||
|
@ -1068,7 +1068,7 @@ static void Cty_ListCountriesForEdition (void)
|
||||||
NumCty++)
|
NumCty++)
|
||||||
{
|
{
|
||||||
Cty = &Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty];
|
Cty = &Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty];
|
||||||
NumInss = Ins_GetNumInssInCty (Cty->HieCod);
|
NumInss = Hie_GetFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Cty->HieCod);
|
||||||
NumUsrsCty = Cty_GetNumUsrsWhoClaimToBelongToCty (Cty);
|
NumUsrsCty = Cty_GetNumUsrsWhoClaimToBelongToCty (Cty);
|
||||||
|
|
||||||
HTM_TR_Begin (NULL);
|
HTM_TR_Begin (NULL);
|
||||||
|
@ -1194,7 +1194,7 @@ void Cty_RemoveCountry (void)
|
||||||
Cty_GetBasicCountryDataByCod (Cty_EditingCty);
|
Cty_GetBasicCountryDataByCod (Cty_EditingCty);
|
||||||
|
|
||||||
/***** Check if this country has users *****/
|
/***** Check if this country has users *****/
|
||||||
if (Ins_GetNumInssInCty (Cty_EditingCty->HieCod)) // Country has institutions ==> don't remove
|
if (Hie_GetFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Cty_EditingCty->HieCod)) // Country has institutions ==> don't remove
|
||||||
Ale_CreateAlert (Ale_WARNING,NULL,
|
Ale_CreateAlert (Ale_WARNING,NULL,
|
||||||
Txt_You_can_not_remove_a_country_with_institutions_or_users);
|
Txt_You_can_not_remove_a_country_with_institutions_or_users);
|
||||||
else if (Cty_GetNumUsrsWhoClaimToBelongToCty (Cty_EditingCty)) // Country has users ==> don't remove
|
else if (Cty_GetNumUsrsWhoClaimToBelongToCty (Cty_EditingCty)) // Country has users ==> don't remove
|
||||||
|
@ -1216,10 +1216,10 @@ void Cty_RemoveCountry (void)
|
||||||
|
|
||||||
/***** Flush cache *****/
|
/***** Flush cache *****/
|
||||||
Cty_FlushCacheCountryName ();
|
Cty_FlushCacheCountryName ();
|
||||||
Ins_FlushCacheNumInssInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY);
|
||||||
Ctr_FlushCacheNumCtrsInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_CTY);
|
||||||
Deg_FlushCacheNumDegsInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTY);
|
||||||
Crs_FlushCacheNumCrssInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTY);
|
||||||
Cty_FlushCacheNumUsrsWhoClaimToBelongToCty ();
|
Cty_FlushCacheNumUsrsWhoClaimToBelongToCty ();
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
|
|
@ -149,7 +149,7 @@ static void CtyCfg_Configuration (bool PrintView)
|
||||||
CtyCfg_QR ();
|
CtyCfg_QR ();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NumCtrs = Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
NumCtrs = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,
|
||||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||||
|
|
||||||
/* Number of users who claim to belong to this country,
|
/* Number of users who claim to belong to this country,
|
||||||
|
@ -490,7 +490,7 @@ static void CtyCfg_NumInss (void)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
HTM_BUTTON_Submit_Begin (Title,"class=\"LT BT_LINK\"");
|
HTM_BUTTON_Submit_Begin (Title,"class=\"LT BT_LINK\"");
|
||||||
free (Title);
|
free (Title);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_INSS,
|
||||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
|
@ -515,7 +515,7 @@ static void CtyCfg_NumDegs (void)
|
||||||
|
|
||||||
/* Data */
|
/* Data */
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -538,7 +538,7 @@ static void CtyCfg_NumCrss (void)
|
||||||
|
|
||||||
/* Data */
|
/* Data */
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
|
112
swad_course.c
112
swad_course.c
|
@ -407,118 +407,6 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
||||||
Box_BoxEnd ();
|
Box_BoxEnd ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/****************** Get number of courses in a country ***********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInCty (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumCrssInCty.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumCrssInCty.NumCrss = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Crs_GetNumCrssInCty (long CtyCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (CtyCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (CtyCod == Gbl.Cache.NumCrssInCty.HieCod)
|
|
||||||
return Gbl.Cache.NumCrssInCty.NumCrss;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of courses in a country from database *****/
|
|
||||||
Gbl.Cache.NumCrssInCty.HieCod = CtyCod;
|
|
||||||
Gbl.Cache.NumCrssInCty.NumCrss = Crs_DB_GetNumCrssInCty (CtyCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_CTY,Gbl.Cache.NumCrssInCty.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInCty.NumCrss);
|
|
||||||
return Gbl.Cache.NumCrssInCty.NumCrss;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/**************** Get number of courses in an institution ********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInIns (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumCrssInIns.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumCrssInIns.NumCrss = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Crs_GetNumCrssInIns (long InsCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (InsCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (InsCod == Gbl.Cache.NumCrssInIns.HieCod)
|
|
||||||
return Gbl.Cache.NumCrssInIns.NumCrss;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of courses in an institution from database *****/
|
|
||||||
Gbl.Cache.NumCrssInIns.HieCod = InsCod;
|
|
||||||
Gbl.Cache.NumCrssInIns.NumCrss = Crs_DB_GetNumCrssInIns (InsCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Cache.NumCrssInIns.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInIns.NumCrss);
|
|
||||||
return Gbl.Cache.NumCrssInIns.NumCrss;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************** Get number of courses in a center **********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInCtr (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumCrssInCtr.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumCrssInCtr.NumCrss = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Crs_GetNumCrssInCtr (long CtrCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (CtrCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (CtrCod == Gbl.Cache.NumCrssInCtr.HieCod)
|
|
||||||
return Gbl.Cache.NumCrssInCtr.NumCrss;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of courses in a center from database *****/
|
|
||||||
Gbl.Cache.NumCrssInCtr.HieCod = CtrCod;
|
|
||||||
Gbl.Cache.NumCrssInCtr.NumCrss = Crs_DB_GetNumCrssInCtr (CtrCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_CTR,Gbl.Cache.NumCrssInCtr.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInCtr.NumCrss);
|
|
||||||
return Gbl.Cache.NumCrssInCtr.NumCrss;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************** Get number of courses in a degree **********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInDeg (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumCrssInDeg.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumCrssInDeg.NumCrss = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Crs_GetNumCrssInDeg (long DegCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (DegCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (DegCod == Gbl.Cache.NumCrssInDeg.HieCod)
|
|
||||||
return Gbl.Cache.NumCrssInDeg.NumCrss;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of courses in a degree from database *****/
|
|
||||||
Gbl.Cache.NumCrssInDeg.HieCod = DegCod;
|
|
||||||
Gbl.Cache.NumCrssInDeg.NumCrss = Crs_DB_GetNumCrssInDeg (DegCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Cache.NumCrssInDeg.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInDeg.NumCrss);
|
|
||||||
return Gbl.Cache.NumCrssInDeg.NumCrss;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Get number of courses with users **********************/
|
/********************* Get number of courses with users **********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -52,18 +52,6 @@
|
||||||
|
|
||||||
void Crs_ShowIntroduction (void);
|
void Crs_ShowIntroduction (void);
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInCty (void);
|
|
||||||
unsigned Crs_GetNumCrssInCty (long CtyCod);
|
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInIns (void);
|
|
||||||
unsigned Crs_GetNumCrssInIns (long InsCod);
|
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInCtr (void);
|
|
||||||
unsigned Crs_GetNumCrssInCtr (long CtrCod);
|
|
||||||
|
|
||||||
void Crs_FlushCacheNumCrssInDeg (void);
|
|
||||||
unsigned Crs_GetNumCrssInDeg (long DegCod);
|
|
||||||
|
|
||||||
unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role);
|
unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role);
|
||||||
|
|
||||||
void Crs_WriteSelectorOfCourse (void);
|
void Crs_WriteSelectorOfCourse (void);
|
||||||
|
|
|
@ -344,7 +344,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes)
|
||||||
DegInLst = &(Gbl.Hierarchy.List[HieLvl_CTR].Lst[NumDeg]);
|
DegInLst = &(Gbl.Hierarchy.List[HieLvl_CTR].Lst[NumDeg]);
|
||||||
|
|
||||||
ICanEdit = Deg_CheckIfICanEditADegree (DegInLst);
|
ICanEdit = Deg_CheckIfICanEditADegree (DegInLst);
|
||||||
NumCrss = Crs_GetNumCrssInDeg (DegInLst->HieCod);
|
NumCrss = Hie_GetFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG,DegInLst->HieCod);
|
||||||
NumUsrsInCrssOfDeg = Enr_GetNumUsrsInCrss (HieLvl_DEG,DegInLst->HieCod,
|
NumUsrsInCrssOfDeg = Enr_GetNumUsrsInCrss (HieLvl_DEG,DegInLst->HieCod,
|
||||||
1 << Rol_STD |
|
1 << Rol_STD |
|
||||||
1 << Rol_NET |
|
1 << Rol_NET |
|
||||||
|
@ -796,7 +796,7 @@ static void Deg_ListOneDegreeForSeeing (struct Hie_Node *Deg,unsigned NumDeg)
|
||||||
const char *TxtClassNormal;
|
const char *TxtClassNormal;
|
||||||
const char *TxtClassStrong;
|
const char *TxtClassStrong;
|
||||||
const char *BgColor;
|
const char *BgColor;
|
||||||
unsigned NumCrss = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
unsigned NumCrss = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_DEG,Deg->HieCod);
|
HieLvl_DEG,Deg->HieCod);
|
||||||
|
|
||||||
/***** Get data of type of degree of this degree *****/
|
/***** Get data of type of degree of this degree *****/
|
||||||
|
@ -1137,7 +1137,7 @@ void Deg_RemoveDegree (void)
|
||||||
Deg_GetDegreeDataByCod (Deg_EditingDeg);
|
Deg_GetDegreeDataByCod (Deg_EditingDeg);
|
||||||
|
|
||||||
/***** Check if this degree has courses *****/
|
/***** Check if this degree has courses *****/
|
||||||
if (Crs_GetNumCrssInDeg (Deg_EditingDeg->HieCod)) // Degree has courses ==> don't remove
|
if (Hie_GetFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG,Deg_EditingDeg->HieCod)) // Degree has courses ==> don't remove
|
||||||
Ale_CreateAlert (Ale_WARNING,NULL,
|
Ale_CreateAlert (Ale_WARNING,NULL,
|
||||||
Txt_To_remove_a_degree_you_must_first_remove_all_courses_in_the_degree);
|
Txt_To_remove_a_degree_you_must_first_remove_all_courses_in_the_degree);
|
||||||
else // Degree has no courses ==> remove it
|
else // Degree has no courses ==> remove it
|
||||||
|
@ -1278,7 +1278,7 @@ void Deg_RemoveDegreeCompletely (long DegCod)
|
||||||
Deg_DB_RemoveDeg (DegCod);
|
Deg_DB_RemoveDeg (DegCod);
|
||||||
|
|
||||||
/***** Flush caches *****/
|
/***** Flush caches *****/
|
||||||
Crs_FlushCacheNumCrssInDeg ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG);
|
||||||
|
|
||||||
/***** Delete all degrees in stats table not present in degrees table *****/
|
/***** Delete all degrees in stats table not present in degrees table *****/
|
||||||
Pho_DB_RemoveObsoleteStatDegrees ();
|
Pho_DB_RemoveObsoleteStatDegrees ();
|
||||||
|
@ -1524,90 +1524,6 @@ static void Deg_ShowAlertAndButtonToGoToDeg (void)
|
||||||
Ale_ShowAlerts (NULL);
|
Ale_ShowAlerts (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/********************* Get number of degrees in a country ********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Deg_FlushCacheNumDegsInCty (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumDegsInCty.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumDegsInCty.NumDegs = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Deg_GetNumDegsInCty (long CtyCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (CtyCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (CtyCod == Gbl.Cache.NumDegsInCty.HieCod)
|
|
||||||
return Gbl.Cache.NumDegsInCty.NumDegs;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of degrees in a country from database *****/
|
|
||||||
Gbl.Cache.NumDegsInCty.HieCod = CtyCod;
|
|
||||||
Gbl.Cache.NumDegsInCty.NumDegs = Deg_DB_GetNumDegsInCty (CtyCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTY,Gbl.Cache.NumDegsInCty.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumDegsInCty.NumDegs);
|
|
||||||
return Gbl.Cache.NumDegsInCty.NumDegs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/****************** Get number of degrees in an institution ******************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Deg_FlushCacheNumDegsInIns (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumDegsInIns.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumDegsInIns.NumDegs = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Deg_GetNumDegsInIns (long InsCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (InsCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (InsCod == Gbl.Cache.NumDegsInIns.HieCod)
|
|
||||||
return Gbl.Cache.NumDegsInIns.NumDegs;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of degrees in an institution from database *****/
|
|
||||||
Gbl.Cache.NumDegsInIns.HieCod = InsCod;
|
|
||||||
Gbl.Cache.NumDegsInIns.NumDegs = Deg_DB_GetNumDegsInIns (InsCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_INS,Gbl.Cache.NumDegsInIns.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumDegsInIns.NumDegs);
|
|
||||||
return Gbl.Cache.NumDegsInIns.NumDegs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/******************** Get number of degrees in a center **********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Deg_FlushCacheNumDegsInCtr (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumDegsInCtr.HieCod = -1L;
|
|
||||||
Gbl.Cache.NumDegsInCtr.NumDegs = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Deg_GetNumDegsInCtr (long CtrCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: Trivial case *****/
|
|
||||||
if (CtrCod <= 0)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/***** 2. Fast check: If cached... *****/
|
|
||||||
if (CtrCod == Gbl.Cache.NumDegsInCtr.HieCod)
|
|
||||||
return Gbl.Cache.NumDegsInCtr.NumDegs;
|
|
||||||
|
|
||||||
/***** 3. Slow: number of degrees in a center from database *****/
|
|
||||||
Gbl.Cache.NumDegsInCtr.HieCod = CtrCod;
|
|
||||||
Gbl.Cache.NumDegsInCtr.NumDegs = Deg_DB_GetNumDegsInCtr (CtrCod);
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTR,Gbl.Cache.NumDegsInCtr.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumDegsInCtr.NumDegs);
|
|
||||||
return Gbl.Cache.NumDegsInCtr.NumDegs;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/********************* Get number of centers with courses ********************/
|
/********************* Get number of centers with courses ********************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -81,15 +81,6 @@ void Deg_ChangeDegWWW (void);
|
||||||
void Deg_ChangeDegStatus (void);
|
void Deg_ChangeDegStatus (void);
|
||||||
void Deg_ContEditAfterChgDeg (void);
|
void Deg_ContEditAfterChgDeg (void);
|
||||||
|
|
||||||
void Deg_FlushCacheNumDegsInCty (void);
|
|
||||||
unsigned Deg_GetNumDegsInCty (long CtyCod);
|
|
||||||
|
|
||||||
void Deg_FlushCacheNumDegsInIns (void);
|
|
||||||
unsigned Deg_GetNumDegsInIns (long InsCod);
|
|
||||||
|
|
||||||
void Deg_FlushCacheNumDegsInCtr (void);
|
|
||||||
unsigned Deg_GetNumDegsInCtr (long CtrCod);
|
|
||||||
|
|
||||||
unsigned Deg_GetCachedNumDegsWithCrss (void);
|
unsigned Deg_GetCachedNumDegsWithCrss (void);
|
||||||
unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role);
|
unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role);
|
||||||
|
|
||||||
|
|
|
@ -335,7 +335,7 @@ static void DegCfg_NumCrss (void)
|
||||||
Err_NotEnoughMemoryExit ();
|
Err_NotEnoughMemoryExit ();
|
||||||
HTM_BUTTON_Submit_Begin (Title,"class=\"LB BT_LINK\"");
|
HTM_BUTTON_Submit_Begin (Title,"class=\"LB BT_LINK\"");
|
||||||
free (Title);
|
free (Title);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod));
|
HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod));
|
||||||
HTM_BUTTON_End ();
|
HTM_BUTTON_End ();
|
||||||
Frm_EndForm ();
|
Frm_EndForm ();
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
// If numbers change, clean database table figures: "DELETE FROM figures;"
|
// If numbers change, clean database table figures: "DELETE FROM figures;"
|
||||||
|
#define FigCch_NUM_FIGURES 2
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
FigCch_UNKNOWN = 0, // Unknown figure (do not change this constant to any value other than 0)
|
FigCch_UNKNOWN = 0, // Unknown figure (do not change this constant to any value other than 0)
|
||||||
|
|
|
@ -220,20 +220,20 @@ void Gbl_InitializeGlobals (void)
|
||||||
Cty_FlushCacheCountryName ();
|
Cty_FlushCacheCountryName ();
|
||||||
Ins_FlushCacheFullNameAndCtyOfInstitution ();
|
Ins_FlushCacheFullNameAndCtyOfInstitution ();
|
||||||
|
|
||||||
Ins_FlushCacheNumInssInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY);
|
||||||
Ctr_FlushCacheNumCtrsInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_CTY);
|
||||||
Deg_FlushCacheNumDegsInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTY);
|
||||||
Crs_FlushCacheNumCrssInCty ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTY);
|
||||||
|
|
||||||
Dpt_FlushCacheNumDptsInIns ();
|
Dpt_FlushCacheNumDptsInIns ();
|
||||||
Ctr_FlushCacheNumCtrsInIns ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS);
|
||||||
Deg_FlushCacheNumDegsInIns ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_INS);
|
||||||
Crs_FlushCacheNumCrssInIns ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_INS);
|
||||||
|
|
||||||
Deg_FlushCacheNumDegsInCtr ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR);
|
||||||
Crs_FlushCacheNumCrssInCtr ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTR);
|
||||||
|
|
||||||
Crs_FlushCacheNumCrssInDeg ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG);
|
||||||
|
|
||||||
Cty_FlushCacheNumUsrsWhoDontClaimToBelongToAnyCty ();
|
Cty_FlushCacheNumUsrsWhoDontClaimToBelongToAnyCty ();
|
||||||
Cty_FlushCacheNumUsrsWhoClaimToBelongToAnotherCty ();
|
Cty_FlushCacheNumUsrsWhoClaimToBelongToAnotherCty ();
|
||||||
|
|
|
@ -310,53 +310,8 @@ struct Globals
|
||||||
{
|
{
|
||||||
bool Valid;
|
bool Valid;
|
||||||
long HieCod;
|
long HieCod;
|
||||||
unsigned NumInss;
|
unsigned Num;
|
||||||
} NumInssInCty;
|
} FigureInHieLvl[FigCch_NUM_FIGURES][HieLvl_NUM_LEVELS];
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumCtrs;
|
|
||||||
} NumCtrsInCty;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumCtrs;
|
|
||||||
} NumCtrsInIns;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumDegs;
|
|
||||||
} NumDegsInCty;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumDegs;
|
|
||||||
} NumDegsInIns;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumDegs;
|
|
||||||
} NumDegsInCtr;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumCrss;
|
|
||||||
} NumCrssInCty;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumCrss;
|
|
||||||
} NumCrssInIns;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumCrss;
|
|
||||||
} NumCrssInCtr;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
long HieCod;
|
|
||||||
unsigned NumCrss;
|
|
||||||
} NumCrssInDeg;
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
bool Valid;
|
bool Valid;
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "swad_alert.h"
|
#include "swad_alert.h"
|
||||||
#include "swad_box.h"
|
#include "swad_box.h"
|
||||||
#include "swad_center_database.h"
|
#include "swad_center_database.h"
|
||||||
|
#include "swad_course_database.h"
|
||||||
#include "swad_database.h"
|
#include "swad_database.h"
|
||||||
#include "swad_degree_database.h"
|
#include "swad_degree_database.h"
|
||||||
#include "swad_enrolment_database.h"
|
#include "swad_enrolment_database.h"
|
||||||
|
@ -1303,22 +1304,22 @@ static void Hie_GetAndShowHierarchyTotal (void)
|
||||||
NumCrssTotal = Hie_GetCachedNumNodesInSys (FigCch_NUM_CRSS,"crs_courses");
|
NumCrssTotal = Hie_GetCachedNumNodesInSys (FigCch_NUM_CRSS,"crs_courses");
|
||||||
break;
|
break;
|
||||||
case HieLvl_CTY:
|
case HieLvl_CTY:
|
||||||
NumInssTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
NumInssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||||
NumCtrsTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
NumCtrsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||||
NumDegsTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
NumDegsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||||
NumCrssTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||||
break;
|
break;
|
||||||
case HieLvl_INS:
|
case HieLvl_INS:
|
||||||
NumCtrsTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
NumCtrsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||||
NumDegsTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
NumDegsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||||
NumCrssTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||||
break;
|
break;
|
||||||
case HieLvl_CTR:
|
case HieLvl_CTR:
|
||||||
NumDegsTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
|
NumDegsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
|
||||||
NumCrssTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
|
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
|
||||||
break;
|
break;
|
||||||
case HieLvl_DEG:
|
case HieLvl_DEG:
|
||||||
NumCrssTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod);
|
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod);
|
||||||
break;
|
break;
|
||||||
case HieLvl_CRS:
|
case HieLvl_CRS:
|
||||||
break;
|
break;
|
||||||
|
@ -1364,37 +1365,62 @@ unsigned Hie_GetCachedNumNodesInSys (FigCch_FigureCached_t Figure,
|
||||||
/**** Get total number of courses/degrees/centers/institutions in country ****/
|
/**** Get total number of courses/degrees/centers/institutions in country ****/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
unsigned Hie_GetCachedNumNodesIn (FigCch_FigureCached_t Figure,
|
void Hie_FlushCachedFigureInHieLvl (FigCch_FigureCached_t Figure,
|
||||||
HieLvl_Level_t Level,long HieCod)
|
HieLvl_Level_t Level)
|
||||||
|
{
|
||||||
|
Gbl.Cache.FigureInHieLvl[Figure][Level].Valid = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned Hie_GetCachedFigureInHieLvl (FigCch_FigureCached_t Figure,
|
||||||
|
HieLvl_Level_t Level,long HieCod)
|
||||||
{
|
{
|
||||||
static unsigned (*FunctionGetNumNodes[][HieLvl_NUM_LEVELS]) (long HieCod) =
|
|
||||||
{
|
|
||||||
/* Number of nodes in country */
|
|
||||||
[FigCch_NUM_INSS][HieLvl_CTY] = Ins_GetNumInssInCty,
|
|
||||||
[FigCch_NUM_CTRS][HieLvl_CTY] = Ctr_GetNumCtrsInCty,
|
|
||||||
[FigCch_NUM_DEGS][HieLvl_CTY] = Deg_GetNumDegsInCty,
|
|
||||||
[FigCch_NUM_CRSS][HieLvl_CTY] = Crs_GetNumCrssInCty,
|
|
||||||
/* Number of nodes in institution */
|
|
||||||
[FigCch_NUM_CTRS][HieLvl_INS] = Ctr_GetNumCtrsInIns,
|
|
||||||
[FigCch_NUM_DEGS][HieLvl_INS] = Deg_GetNumDegsInIns,
|
|
||||||
[FigCch_NUM_CRSS][HieLvl_INS] = Crs_GetNumCrssInIns,
|
|
||||||
/* Number of nodes in center */
|
|
||||||
[FigCch_NUM_DEGS][HieLvl_CTR] = Deg_GetNumDegsInCtr,
|
|
||||||
[FigCch_NUM_CRSS][HieLvl_CTR] = Crs_GetNumCrssInCtr,
|
|
||||||
/* Number of nodes in degree */
|
|
||||||
[FigCch_NUM_CRSS][HieLvl_DEG] = Crs_GetNumCrssInDeg,
|
|
||||||
};
|
|
||||||
unsigned NumNodes;
|
unsigned NumNodes;
|
||||||
|
|
||||||
/***** Get number of nodes from cache *****/
|
/***** Get number of nodes from cache *****/
|
||||||
if (!FigCch_GetFigureFromCache (Figure,Level,HieCod,
|
if (!FigCch_GetFigureFromCache (Figure,Level,HieCod,
|
||||||
FigCch_UNSIGNED,&NumNodes))
|
FigCch_UNSIGNED,&NumNodes))
|
||||||
/***** Get current number of nodes from database and update cache *****/
|
/***** Get current number of nodes from database and update cache *****/
|
||||||
NumNodes = FunctionGetNumNodes[Figure][Level] (HieCod);
|
NumNodes = Hie_GetFigureInHieLvl (Figure,Level,HieCod);
|
||||||
|
|
||||||
return NumNodes;
|
return NumNodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned Hie_GetFigureInHieLvl (FigCch_FigureCached_t Figure,
|
||||||
|
HieLvl_Level_t Level,long HieCod)
|
||||||
|
{
|
||||||
|
static unsigned (*FunctionGetFigure[][HieLvl_NUM_LEVELS]) (long HieCod) =
|
||||||
|
{
|
||||||
|
/* Number of nodes in country */
|
||||||
|
[FigCch_NUM_INSS][HieLvl_CTY] = Ins_DB_GetNumInssInCty,
|
||||||
|
[FigCch_NUM_CTRS][HieLvl_CTY] = Ctr_DB_GetNumCtrsInCty,
|
||||||
|
[FigCch_NUM_DEGS][HieLvl_CTY] = Deg_DB_GetNumDegsInCty,
|
||||||
|
[FigCch_NUM_CRSS][HieLvl_CTY] = Crs_DB_GetNumCrssInCty,
|
||||||
|
/* Number of nodes in institution */
|
||||||
|
[FigCch_NUM_CTRS][HieLvl_INS] = Ctr_DB_GetNumCtrsInIns,
|
||||||
|
[FigCch_NUM_DEGS][HieLvl_INS] = Deg_DB_GetNumDegsInIns,
|
||||||
|
[FigCch_NUM_CRSS][HieLvl_INS] = Crs_DB_GetNumCrssInIns,
|
||||||
|
/* Number of nodes in center */
|
||||||
|
[FigCch_NUM_DEGS][HieLvl_CTR] = Deg_DB_GetNumDegsInCtr,
|
||||||
|
[FigCch_NUM_CRSS][HieLvl_CTR] = Crs_DB_GetNumCrssInCtr,
|
||||||
|
/* Number of nodes in degree */
|
||||||
|
[FigCch_NUM_CRSS][HieLvl_DEG] = Crs_DB_GetNumCrssInDeg,
|
||||||
|
};
|
||||||
|
|
||||||
|
/***** 1. Fast check: If cached... *****/
|
||||||
|
if (Gbl.Cache.FigureInHieLvl[Figure][Level].Valid &&
|
||||||
|
HieCod == Gbl.Cache.FigureInHieLvl[Figure][Level].HieCod)
|
||||||
|
return Gbl.Cache.FigureInHieLvl[Figure][Level].Num;
|
||||||
|
|
||||||
|
/***** 2. Slow: number of institutions in a country from database *****/
|
||||||
|
Gbl.Cache.FigureInHieLvl[Figure][Level].HieCod = HieCod;
|
||||||
|
Gbl.Cache.FigureInHieLvl[Figure][Level].Num = FunctionGetFigure[Figure][Level] (HieCod);
|
||||||
|
Gbl.Cache.FigureInHieLvl[Figure][Level].Valid = true;
|
||||||
|
FigCch_UpdateFigureIntoCache (Figure,Level,
|
||||||
|
Gbl.Cache.FigureInHieLvl[Figure][Level].HieCod,
|
||||||
|
FigCch_UNSIGNED,&Gbl.Cache.FigureInHieLvl[Figure][Level].Num);
|
||||||
|
return Gbl.Cache.FigureInHieLvl[Figure][Level].Num;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************** Show row with number of elements in hierarchy ****************/
|
/************** Show row with number of elements in hierarchy ****************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -73,7 +73,12 @@ void Hie_GetAndShowHierarchyStats (void);
|
||||||
|
|
||||||
unsigned Hie_GetCachedNumNodesInSys (FigCch_FigureCached_t Figure,
|
unsigned Hie_GetCachedNumNodesInSys (FigCch_FigureCached_t Figure,
|
||||||
const char *Table);
|
const char *Table);
|
||||||
unsigned Hie_GetCachedNumNodesIn (FigCch_FigureCached_t Figure,
|
|
||||||
HieLvl_Level_t Level,long HieCod);
|
void Hie_FlushCachedFigureInHieLvl (FigCch_FigureCached_t Figure,
|
||||||
|
HieLvl_Level_t Level);
|
||||||
|
unsigned Hie_GetCachedFigureInHieLvl (FigCch_FigureCached_t Figure,
|
||||||
|
HieLvl_Level_t Level,long HieCod);
|
||||||
|
unsigned Hie_GetFigureInHieLvl (FigCch_FigureCached_t Figure,
|
||||||
|
HieLvl_Level_t Level,long HieCod);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -398,21 +398,21 @@ static void Ins_ListOneInstitutionForSeeing (struct Hie_Node *Ins,unsigned NumIn
|
||||||
/* Number of centers in this institution */
|
/* Number of centers in this institution */
|
||||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,
|
||||||
HieLvl_INS,Ins->HieCod));
|
HieLvl_INS,Ins->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of degrees in this institution */
|
/* Number of degrees in this institution */
|
||||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_INS,Ins->HieCod));
|
HieLvl_INS,Ins->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
/* Number of courses in this institution */
|
/* Number of courses in this institution */
|
||||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_INS,Ins->HieCod));
|
HieLvl_INS,Ins->HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -900,7 +900,7 @@ static void Ins_ListInstitutionsForEdition (void)
|
||||||
Ins = &Gbl.Hierarchy.List[HieLvl_CTY].Lst[NumIns];
|
Ins = &Gbl.Hierarchy.List[HieLvl_CTY].Lst[NumIns];
|
||||||
|
|
||||||
ICanEdit = Ins_CheckIfICanEdit (Ins);
|
ICanEdit = Ins_CheckIfICanEdit (Ins);
|
||||||
NumCtrs = Ctr_GetNumCtrsInIns (Ins->HieCod);
|
NumCtrs = Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Ins->HieCod);
|
||||||
NumUsrsIns = Ins_GetNumUsrsWhoClaimToBelongToIns (Ins);
|
NumUsrsIns = Ins_GetNumUsrsWhoClaimToBelongToIns (Ins);
|
||||||
NumUsrsInCrssOfIns = Enr_GetNumUsrsInCrss (HieLvl_INS,Ins->HieCod,
|
NumUsrsInCrssOfIns = Enr_GetNumUsrsInCrss (HieLvl_INS,Ins->HieCod,
|
||||||
1 << Rol_STD |
|
1 << Rol_STD |
|
||||||
|
@ -1067,7 +1067,7 @@ void Ins_RemoveInstitution (void)
|
||||||
/***** Check if this institution has users *****/
|
/***** Check if this institution has users *****/
|
||||||
if (!Ins_CheckIfICanEdit (Ins_EditingIns))
|
if (!Ins_CheckIfICanEdit (Ins_EditingIns))
|
||||||
Err_NoPermissionExit ();
|
Err_NoPermissionExit ();
|
||||||
else if (Ctr_GetNumCtrsInIns (Ins_EditingIns->HieCod))
|
else if (Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Ins_EditingIns->HieCod))
|
||||||
// Institution has centers ==> don't remove
|
// Institution has centers ==> don't remove
|
||||||
Ale_CreateAlert (Ale_WARNING,NULL,
|
Ale_CreateAlert (Ale_WARNING,NULL,
|
||||||
Txt_To_remove_an_institution_you_must_first_remove_all_centers_and_users_in_the_institution);
|
Txt_To_remove_an_institution_you_must_first_remove_all_centers_and_users_in_the_institution);
|
||||||
|
@ -1109,9 +1109,9 @@ void Ins_RemoveInstitution (void)
|
||||||
/***** Flush caches *****/
|
/***** Flush caches *****/
|
||||||
Ins_FlushCacheFullNameAndCtyOfInstitution ();
|
Ins_FlushCacheFullNameAndCtyOfInstitution ();
|
||||||
Dpt_FlushCacheNumDptsInIns ();
|
Dpt_FlushCacheNumDptsInIns ();
|
||||||
Ctr_FlushCacheNumCtrsInIns ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS);
|
||||||
Deg_FlushCacheNumDegsInIns ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_INS);
|
||||||
Crs_FlushCacheNumCrssInIns ();
|
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_INS);
|
||||||
Ins_FlushCacheNumUsrsWhoClaimToBelongToIns ();
|
Ins_FlushCacheNumUsrsWhoClaimToBelongToIns ();
|
||||||
|
|
||||||
/***** Write message to show the change made *****/
|
/***** Write message to show the change made *****/
|
||||||
|
@ -1551,31 +1551,6 @@ static void Ins_ReceiveFormRequestOrCreateIns (Hie_Status_t Status)
|
||||||
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
|
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
|
||||||
/**************** Get number of institutions in a country ********************/
|
|
||||||
/*****************************************************************************/
|
|
||||||
|
|
||||||
void Ins_FlushCacheNumInssInCty (void)
|
|
||||||
{
|
|
||||||
Gbl.Cache.NumInssInCty.Valid = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned Ins_GetNumInssInCty (long CtyCod)
|
|
||||||
{
|
|
||||||
/***** 1. Fast check: If cached... *****/
|
|
||||||
if (Gbl.Cache.NumInssInCty.Valid &&
|
|
||||||
CtyCod == Gbl.Cache.NumInssInCty.HieCod)
|
|
||||||
return Gbl.Cache.NumInssInCty.NumInss;
|
|
||||||
|
|
||||||
/***** 2. Slow: number of institutions in a country from database *****/
|
|
||||||
Gbl.Cache.NumInssInCty.HieCod = CtyCod;
|
|
||||||
Gbl.Cache.NumInssInCty.NumInss = Ins_DB_GetNumInssInCty (CtyCod);
|
|
||||||
Gbl.Cache.NumInssInCty.Valid = true;
|
|
||||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Cache.NumInssInCty.HieCod,
|
|
||||||
FigCch_UNSIGNED,&Gbl.Cache.NumInssInCty.NumInss);
|
|
||||||
return Gbl.Cache.NumInssInCty.NumInss;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/***************** Get number of institutions with centers *******************/
|
/***************** Get number of institutions with centers *******************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -72,9 +72,6 @@ void Ins_ContEditAfterChgIns (void);
|
||||||
void Ins_ReceiveFormReqIns (void);
|
void Ins_ReceiveFormReqIns (void);
|
||||||
void Ins_ReceiveFormNewIns (void);
|
void Ins_ReceiveFormNewIns (void);
|
||||||
|
|
||||||
void Ins_FlushCacheNumInssInCty (void);
|
|
||||||
unsigned Ins_GetNumInssInCty (long CtyCod);
|
|
||||||
|
|
||||||
unsigned Ins_GetCachedNumInssWithCtrs (void);
|
unsigned Ins_GetCachedNumInssWithCtrs (void);
|
||||||
unsigned Ins_GetCachedNumInssWithDegs (void);
|
unsigned Ins_GetCachedNumInssWithDegs (void);
|
||||||
unsigned Ins_GetCachedNumInssWithCrss (void);
|
unsigned Ins_GetCachedNumInssWithCrss (void);
|
||||||
|
|
|
@ -160,7 +160,7 @@ static void InsCfg_Configuration (bool PrintView)
|
||||||
InsCfg_QR ();
|
InsCfg_QR ();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
NumCtrs = Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
NumCtrs = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,
|
||||||
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||||
|
|
||||||
/***** Number of users who claim to belong to this institution,
|
/***** Number of users who claim to belong to this institution,
|
||||||
|
@ -449,7 +449,7 @@ static void InsCfg_NumDegs (void)
|
||||||
|
|
||||||
/* Data */
|
/* Data */
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,
|
||||||
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
@ -472,7 +472,7 @@ static void InsCfg_NumCrss (void)
|
||||||
|
|
||||||
/* Data */
|
/* Data */
|
||||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
HTM_Unsigned (Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,
|
||||||
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,7 @@ void Plc_SeeAllPlaces (void)
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||||
HTM_Unsigned (Ctr_GetNumCtrsInIns (Gbl.Hierarchy.Node[HieLvl_INS].HieCod) -
|
HTM_Unsigned (Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod) -
|
||||||
NumCtrsWithPlc);
|
NumCtrsWithPlc);
|
||||||
HTM_TD_End ();
|
HTM_TD_End ();
|
||||||
|
|
||||||
|
|
|
@ -4036,7 +4036,7 @@ void Rec_ChgCountryOfMyInstitution (void)
|
||||||
Gbl.Usrs.Me.UsrDat.InsCtyCod = ParCod_GetAndCheckPar (ParCod_OthCty);
|
Gbl.Usrs.Me.UsrDat.InsCtyCod = ParCod_GetAndCheckPar (ParCod_OthCty);
|
||||||
|
|
||||||
/***** When country changes, the institution, center and department must be reset *****/
|
/***** When country changes, the institution, center and department must be reset *****/
|
||||||
NumInss = Ins_GetNumInssInCty (Gbl.Usrs.Me.UsrDat.InsCtyCod);
|
NumInss = Hie_GetFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Usrs.Me.UsrDat.InsCtyCod);
|
||||||
if (NumInss)
|
if (NumInss)
|
||||||
{
|
{
|
||||||
Gbl.Usrs.Me.UsrDat.InsCod = -1L;
|
Gbl.Usrs.Me.UsrDat.InsCod = -1L;
|
||||||
|
@ -4083,7 +4083,7 @@ void Rec_UpdateMyInstitution (void)
|
||||||
Gbl.Usrs.Me.UsrDat.InsCod = Ins.HieCod;
|
Gbl.Usrs.Me.UsrDat.InsCod = Ins.HieCod;
|
||||||
|
|
||||||
/***** When institution changes, the center and department must be reset *****/
|
/***** When institution changes, the center and department must be reset *****/
|
||||||
NumCtrs = Ctr_GetNumCtrsInIns (Gbl.Usrs.Me.UsrDat.InsCod);
|
NumCtrs = Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Usrs.Me.UsrDat.InsCod);
|
||||||
NumDpts = Dpt_GetNumDptsInIns (Gbl.Usrs.Me.UsrDat.InsCod);
|
NumDpts = Dpt_GetNumDptsInIns (Gbl.Usrs.Me.UsrDat.InsCod);
|
||||||
Gbl.Usrs.Me.UsrDat.Tch.CtrCod = (NumCtrs ? -1L : 0);
|
Gbl.Usrs.Me.UsrDat.Tch.CtrCod = (NumCtrs ? -1L : 0);
|
||||||
Gbl.Usrs.Me.UsrDat.Tch.DptCod = (NumDpts ? -1L : 0);
|
Gbl.Usrs.Me.UsrDat.Tch.DptCod = (NumDpts ? -1L : 0);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user