Version 23.13: Sep 20, 2023 Code refactoring in hierarchy and cache.

This commit is contained in:
acanas 2023-09-20 22:49:32 +02:00
parent 39477a6e48
commit 59e359d5fe
15 changed files with 172 additions and 138 deletions

View File

@ -367,15 +367,17 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_CTR,Ctr->HieCod)); HieLvl_CTR, // ...in center
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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_CTR,Ctr->HieCod)); HieLvl_CTR, // ...in center
Ctr->HieCod));
HTM_TD_End (); HTM_TD_End ();
/***** Number of users in courses of this center *****/ /***** Number of users in courses of this center *****/
@ -757,7 +759,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 = Hie_GetFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR,Ctr->HieCod); NumDegs = Hie_GetNumNodesInHieLvl (HieLvl_DEG,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 +960,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 (Hie_GetFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR,Ctr_EditingCtr->HieCod)) // Center has degrees if (Hie_GetNumNodesInHieLvl (HieLvl_DEG,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 +1000,8 @@ void Ctr_RemoveCenter (void)
Ctr_DB_RemoveCenter (Ctr_EditingCtr->HieCod); Ctr_DB_RemoveCenter (Ctr_EditingCtr->HieCod);
/***** Flush caches *****/ /***** Flush caches *****/
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR); Hie_FlushCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_CTR); // Number of degrees in center
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTR); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_CTR); // Number of courses in center
Ctr_FlushCacheNumUsrsWhoClaimToBelongToCtr (); Ctr_FlushCacheNumUsrsWhoClaimToBelongToCtr ();
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/

View File

@ -775,8 +775,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod)); HieLvl_CTR, // ...in center
Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
@ -800,8 +801,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod)); HieLvl_CTR, // ...in center
Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();

View File

@ -632,10 +632,11 @@ TODO: Francisco Javier Fern
Me sale este error, no si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así? Me sale este error, no 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.12 (2023-09-20)" #define Log_PLATFORM_VERSION "SWAD 23.13 (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.13: Sep 20, 2023 Code refactoring in hierarchy and cache. (336951 lines)
Version 23.12: Sep 20, 2023 Code refactoring in hierarchy and cache. (336919 lines) 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)

View File

@ -255,26 +255,26 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_INSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_INS, // Number of institutions...
HieLvl_CTY,0)); HieLvl_CTY,0)); // ...in other countries
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_GetCachedFigureInHieLvl (FigCch_NUM_CTRS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR, // Number of centers...
HieLvl_CTY,0)); HieLvl_CTY,0)); // ...in other countries
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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_CTY,0)); HieLvl_CTY,0)); // ...in other countries
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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_CTY,0)); HieLvl_CTY,0)); // ...in other countries
HTM_TD_End (); HTM_TD_End ();
/* Number of users in courses of other countries */ /* Number of users in courses of other countries */
@ -304,26 +304,26 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_INSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_INS, // Number of institutions...
HieLvl_CTY,-1L)); HieLvl_CTY,-1L)); // ...with unknown country
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_GetCachedFigureInHieLvl (FigCch_NUM_CTRS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR, // Number of centers...
HieLvl_CTY,-1L)); HieLvl_CTY,-1L)); // ...with unknown country
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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_CTY,-1L)); HieLvl_CTY,-1L)); // ...with unknown country
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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_CTY,-1L)); HieLvl_CTY,-1L)); // ...with unknown country
HTM_TD_End (); HTM_TD_End ();
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ()); HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
@ -442,29 +442,33 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_INSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_INS, // Number of institutions...
HieLvl_CTY,Cty->HieCod)); HieLvl_CTY, // ...in country
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_GetCachedFigureInHieLvl (FigCch_NUM_CTRS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR, // Number of centers...
HieLvl_CTY,Cty->HieCod)); HieLvl_CTY, // ...in country
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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_CTY,Cty->HieCod)); HieLvl_CTY, // ...in country
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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_CTY,Cty->HieCod)); HieLvl_CTY, // ...in country
Cty->HieCod));
HTM_TD_End (); HTM_TD_End ();
/***** Number of users in courses *****/ /***** Number of users in courses *****/
@ -635,8 +639,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_INSS, NumInss = Hie_GetCachedNumNodesInHieLvl (HieLvl_INS, // Number of institutions...
HieLvl_CTY,Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty].HieCod); HieLvl_CTY, // ...in country
Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty].HieCod);
/* Write data of this country */ /* Write data of this country */
HTM_TxtF (" ['%s', %u, %u],\n", HTM_TxtF (" ['%s', %u, %u],\n",
@ -1068,7 +1073,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 = Hie_GetFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Cty->HieCod); NumInss = Hie_GetNumNodesInHieLvl (HieLvl_INS,HieLvl_CTY,Cty->HieCod);
NumUsrsCty = Cty_GetNumUsrsWhoClaimToBelongToCty (Cty); NumUsrsCty = Cty_GetNumUsrsWhoClaimToBelongToCty (Cty);
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1194,7 +1199,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 (Hie_GetFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Cty_EditingCty->HieCod)) // Country has institutions ==> don't remove if (Hie_GetNumNodesInHieLvl (HieLvl_INS,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 +1221,10 @@ void Cty_RemoveCountry (void)
/***** Flush cache *****/ /***** Flush cache *****/
Cty_FlushCacheCountryName (); Cty_FlushCacheCountryName ();
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_INS,HieLvl_CTY); // Number of institutions in country
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CTR,HieLvl_CTY); // Number of centers in country
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_CTY); // Number of degrees in country
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_CTY); // Number of courses in country
Cty_FlushCacheNumUsrsWhoClaimToBelongToCty (); Cty_FlushCacheNumUsrsWhoClaimToBelongToCty ();
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/

View File

@ -149,8 +149,9 @@ static void CtyCfg_Configuration (bool PrintView)
CtyCfg_QR (); CtyCfg_QR ();
else else
{ {
NumCtrs = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS, NumCtrs = Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR, // Number of centers...
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod); HieLvl_CTY, // ...in country
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,
number of institutions, number of institutions,
@ -490,8 +491,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_INSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_INS, // Number of institutions...
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod)); HieLvl_CTY, // ...in country
Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
@ -515,8 +517,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod)); HieLvl_CTY, // ...in country
Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();
@ -538,8 +541,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod)); HieLvl_CTY, // ...in country
Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();

View File

@ -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 = Hie_GetFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG,DegInLst->HieCod); NumCrss = Hie_GetNumNodesInHieLvl (HieLvl_CRS,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,8 +796,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, unsigned NumCrss = Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_DEG,Deg->HieCod); HieLvl_DEG, // ...in degree
Deg->HieCod);
/***** Get data of type of degree of this degree *****/ /***** Get data of type of degree of this degree *****/
DegTyp.DegTypCod = Deg->Specific.TypCod; DegTyp.DegTypCod = Deg->Specific.TypCod;
@ -1137,7 +1138,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 (Hie_GetFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG,Deg_EditingDeg->HieCod)) // Degree has courses ==> don't remove if (Hie_GetNumNodesInHieLvl (HieLvl_CRS,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 +1279,7 @@ void Deg_RemoveDegreeCompletely (long DegCod)
Deg_DB_RemoveDeg (DegCod); Deg_DB_RemoveDeg (DegCod);
/***** Flush caches *****/ /***** Flush caches *****/
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_DEG); // Number of courses in degree
/***** 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 ();

View File

@ -335,8 +335,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod)); HieLvl_DEG, // ...in degree
Gbl.Hierarchy.Node[HieLvl_DEG].HieCod));
HTM_BUTTON_End (); HTM_BUTTON_End ();
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();

View File

@ -220,20 +220,20 @@ void Gbl_InitializeGlobals (void)
Cty_FlushCacheCountryName (); Cty_FlushCacheCountryName ();
Ins_FlushCacheFullNameAndCtyOfInstitution (); Ins_FlushCacheFullNameAndCtyOfInstitution ();
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_INS,HieLvl_CTY); // Number of institutions in country
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CTR,HieLvl_CTY); // Number of centers in country
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_CTY); // Number of degrees in country
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTY); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_CTY); // Number of courses in country
Dpt_FlushCacheNumDptsInIns (); Dpt_FlushCacheNumDptsInIns (); // Number of departments in institution
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CTR,HieLvl_INS); // Number of centers in institution
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_INS); Hie_FlushCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_INS); // Number of degrees in institution
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_INS); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_INS); // Number of courses in institution
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR); Hie_FlushCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_CTR); // Number of degrees in center
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTR); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_CTR); // Number of courses in center
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_DEG); // Number of courses in degree
Cty_FlushCacheNumUsrsWhoDontClaimToBelongToAnyCty (); Cty_FlushCacheNumUsrsWhoDontClaimToBelongToAnyCty ();
Cty_FlushCacheNumUsrsWhoClaimToBelongToAnotherCty (); Cty_FlushCacheNumUsrsWhoClaimToBelongToAnotherCty ();

View File

@ -311,7 +311,7 @@ struct Globals
bool Valid; bool Valid;
long HieCod; long HieCod;
unsigned Num; unsigned Num;
} FigureInHieLvl[FigCch_NUM_FIGURES][HieLvl_NUM_LEVELS]; } NumNodesInHieLvl[HieLvl_NUM_LEVELS][HieLvl_NUM_LEVELS];
struct struct
{ {
bool Valid; bool Valid;

View File

@ -56,6 +56,18 @@
extern struct Globals Gbl; extern struct Globals Gbl;
/*****************************************************************************/
/**************************** Private constants ******************************/
/*****************************************************************************/
static FigCch_FigureCached_t Hie_FiguresCached[HieLvl_NUM_LEVELS] =
{
[HieLvl_INS] = FigCch_NUM_INSS,
[HieLvl_CTR] = FigCch_NUM_CTRS,
[HieLvl_DEG] = FigCch_NUM_DEGS,
[HieLvl_CRS] = FigCch_NUM_CRSS,
};
/*****************************************************************************/ /*****************************************************************************/
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
@ -1304,22 +1316,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_GetCachedFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod); NumInssTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_INS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
NumCtrsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod); NumCtrsTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
NumDegsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod); NumDegsTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod); NumCrssTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
break; break;
case HieLvl_INS: case HieLvl_INS:
NumCtrsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod); NumCtrsTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
NumDegsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod); NumDegsTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod); NumCrssTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
break; break;
case HieLvl_CTR: case HieLvl_CTR:
NumDegsTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod); NumDegsTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod); NumCrssTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
break; break;
case HieLvl_DEG: case HieLvl_DEG:
NumCrssTotal = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod); NumCrssTotal = Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod);
break; break;
case HieLvl_CRS: case HieLvl_CRS:
break; break;
@ -1365,60 +1377,60 @@ 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 ****/
/*****************************************************************************/ /*****************************************************************************/
void Hie_FlushCachedFigureInHieLvl (FigCch_FigureCached_t Figure, void Hie_FlushCachedNumNodesInHieLvl (HieLvl_Level_t LevelChildren,
HieLvl_Level_t Level) HieLvl_Level_t LevelParent)
{ {
Gbl.Cache.FigureInHieLvl[Figure][Level].Valid = false; Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].Valid = false;
} }
unsigned Hie_GetCachedFigureInHieLvl (FigCch_FigureCached_t Figure, unsigned Hie_GetCachedNumNodesInHieLvl (HieLvl_Level_t LevelChildren,
HieLvl_Level_t Level,long HieCod) HieLvl_Level_t LevelParent,long HieCod)
{ {
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 (Hie_FiguresCached[LevelChildren],LevelParent,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 = Hie_GetFigureInHieLvl (Figure,Level,HieCod); NumNodes = Hie_GetNumNodesInHieLvl (LevelChildren,LevelParent,HieCod);
return NumNodes; return NumNodes;
} }
unsigned Hie_GetFigureInHieLvl (FigCch_FigureCached_t Figure, unsigned Hie_GetNumNodesInHieLvl (HieLvl_Level_t LevelChildren,
HieLvl_Level_t Level,long HieCod) HieLvl_Level_t LevelParent,long HieCod)
{ {
static unsigned (*FunctionGetFigure[][HieLvl_NUM_LEVELS]) (long HieCod) = static unsigned (*FunctionGetFigure[HieLvl_NUM_LEVELS][HieLvl_NUM_LEVELS]) (long HieCod) =
{ {
/* Number of nodes in country */ /* Number of nodes in country */
[FigCch_NUM_INSS][HieLvl_CTY] = Ins_DB_GetNumInssInCty, [HieLvl_INS][HieLvl_CTY] = Ins_DB_GetNumInssInCty,
[FigCch_NUM_CTRS][HieLvl_CTY] = Ctr_DB_GetNumCtrsInCty, [HieLvl_CTR][HieLvl_CTY] = Ctr_DB_GetNumCtrsInCty,
[FigCch_NUM_DEGS][HieLvl_CTY] = Deg_DB_GetNumDegsInCty, [HieLvl_DEG][HieLvl_CTY] = Deg_DB_GetNumDegsInCty,
[FigCch_NUM_CRSS][HieLvl_CTY] = Crs_DB_GetNumCrssInCty, [HieLvl_CRS][HieLvl_CTY] = Crs_DB_GetNumCrssInCty,
/* Number of nodes in institution */ /* Number of nodes in institution */
[FigCch_NUM_CTRS][HieLvl_INS] = Ctr_DB_GetNumCtrsInIns, [HieLvl_CTR][HieLvl_INS] = Ctr_DB_GetNumCtrsInIns,
[FigCch_NUM_DEGS][HieLvl_INS] = Deg_DB_GetNumDegsInIns, [HieLvl_DEG][HieLvl_INS] = Deg_DB_GetNumDegsInIns,
[FigCch_NUM_CRSS][HieLvl_INS] = Crs_DB_GetNumCrssInIns, [HieLvl_CRS][HieLvl_INS] = Crs_DB_GetNumCrssInIns,
/* Number of nodes in center */ /* Number of nodes in center */
[FigCch_NUM_DEGS][HieLvl_CTR] = Deg_DB_GetNumDegsInCtr, [HieLvl_DEG][HieLvl_CTR] = Deg_DB_GetNumDegsInCtr,
[FigCch_NUM_CRSS][HieLvl_CTR] = Crs_DB_GetNumCrssInCtr, [HieLvl_CRS][HieLvl_CTR] = Crs_DB_GetNumCrssInCtr,
/* Number of nodes in degree */ /* Number of nodes in degree */
[FigCch_NUM_CRSS][HieLvl_DEG] = Crs_DB_GetNumCrssInDeg, [HieLvl_CRS][HieLvl_DEG] = Crs_DB_GetNumCrssInDeg,
}; };
/***** 1. Fast check: If cached... *****/ /***** 1. Fast check: If cached... *****/
if (Gbl.Cache.FigureInHieLvl[Figure][Level].Valid && if (Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].Valid &&
HieCod == Gbl.Cache.FigureInHieLvl[Figure][Level].HieCod) HieCod == Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].HieCod)
return Gbl.Cache.FigureInHieLvl[Figure][Level].Num; return Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].Num;
/***** 2. Slow: number of institutions in a country from database *****/ /***** 2. Slow: number of institutions in a country from database *****/
Gbl.Cache.FigureInHieLvl[Figure][Level].HieCod = HieCod; Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].HieCod = HieCod;
Gbl.Cache.FigureInHieLvl[Figure][Level].Num = FunctionGetFigure[Figure][Level] (HieCod); Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].Num = FunctionGetFigure[LevelChildren][LevelParent] (HieCod);
Gbl.Cache.FigureInHieLvl[Figure][Level].Valid = true; Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].Valid = true;
FigCch_UpdateFigureIntoCache (Figure,Level, FigCch_UpdateFigureIntoCache (Hie_FiguresCached[LevelChildren],LevelParent,
Gbl.Cache.FigureInHieLvl[Figure][Level].HieCod, Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].HieCod,
FigCch_UNSIGNED,&Gbl.Cache.FigureInHieLvl[Figure][Level].Num); FigCch_UNSIGNED,&Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].Num);
return Gbl.Cache.FigureInHieLvl[Figure][Level].Num; return Gbl.Cache.NumNodesInHieLvl[LevelChildren][LevelParent].Num;
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -74,11 +74,11 @@ void Hie_GetAndShowHierarchyStats (void);
unsigned Hie_GetCachedNumNodesInSys (FigCch_FigureCached_t Figure, unsigned Hie_GetCachedNumNodesInSys (FigCch_FigureCached_t Figure,
const char *Table); const char *Table);
void Hie_FlushCachedFigureInHieLvl (FigCch_FigureCached_t Figure, void Hie_FlushCachedNumNodesInHieLvl (HieLvl_Level_t LevelChildren,
HieLvl_Level_t Level); HieLvl_Level_t LevelParent);
unsigned Hie_GetCachedFigureInHieLvl (FigCch_FigureCached_t Figure, unsigned Hie_GetCachedNumNodesInHieLvl (HieLvl_Level_t LevelChildren,
HieLvl_Level_t Level,long HieCod); HieLvl_Level_t LevelParent,long HieCod);
unsigned Hie_GetFigureInHieLvl (FigCch_FigureCached_t Figure, unsigned Hie_GetNumNodesInHieLvl (HieLvl_Level_t LevelChildren,
HieLvl_Level_t Level,long HieCod); HieLvl_Level_t LevelParent,long HieCod);
#endif #endif

View File

@ -398,22 +398,25 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_CTRS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR, // Number of centers...
HieLvl_INS,Ins->HieCod)); HieLvl_INS, // ...in institution
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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_INS,Ins->HieCod)); HieLvl_INS, // ...in institution
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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_INS,Ins->HieCod)); HieLvl_INS, // ...in institution
Ins->HieCod));
HTM_TD_End (); HTM_TD_End ();
/* Number of departments in this institution */ /* Number of departments in this institution */
@ -900,7 +903,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 = Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Ins->HieCod); NumCtrs = Hie_GetNumNodesInHieLvl (HieLvl_CTR,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 +1070,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 (Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Ins_EditingIns->HieCod)) else if (Hie_GetNumNodesInHieLvl (HieLvl_CTR,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 +1112,9 @@ void Ins_RemoveInstitution (void)
/***** Flush caches *****/ /***** Flush caches *****/
Ins_FlushCacheFullNameAndCtyOfInstitution (); Ins_FlushCacheFullNameAndCtyOfInstitution ();
Dpt_FlushCacheNumDptsInIns (); Dpt_FlushCacheNumDptsInIns ();
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CTR,HieLvl_INS); // Number of centers in institution
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_DEGS,HieLvl_INS); Hie_FlushCachedNumNodesInHieLvl (HieLvl_DEG,HieLvl_INS); // Number of degrees in institution
Hie_FlushCachedFigureInHieLvl (FigCch_NUM_CRSS,HieLvl_INS); Hie_FlushCachedNumNodesInHieLvl (HieLvl_CRS,HieLvl_INS); // Number of courses in institution
Ins_FlushCacheNumUsrsWhoClaimToBelongToIns (); Ins_FlushCacheNumUsrsWhoClaimToBelongToIns ();
/***** Write message to show the change made *****/ /***** Write message to show the change made *****/

View File

@ -160,8 +160,9 @@ static void InsCfg_Configuration (bool PrintView)
InsCfg_QR (); InsCfg_QR ();
else else
{ {
NumCtrs = Hie_GetCachedFigureInHieLvl (FigCch_NUM_CTRS, NumCtrs = Hie_GetCachedNumNodesInHieLvl (HieLvl_CTR, // Number of centers...
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod); HieLvl_INS, // ...in institution
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,
number of centers, number of centers,
@ -449,8 +450,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_DEGS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_DEG, // Number of degrees...
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod)); HieLvl_INS, // ...in institution
Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();
@ -472,8 +474,9 @@ 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_GetCachedFigureInHieLvl (FigCch_NUM_CRSS, HTM_Unsigned (Hie_GetCachedNumNodesInHieLvl (HieLvl_CRS, // Number of courses...
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod)); HieLvl_INS, // ...in institution
Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
HTM_TD_End (); HTM_TD_End ();
HTM_TR_End (); HTM_TR_End ();

View File

@ -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 (Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod) - HTM_Unsigned (Hie_GetNumNodesInHieLvl (HieLvl_CTR,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod) -
NumCtrsWithPlc); NumCtrsWithPlc);
HTM_TD_End (); HTM_TD_End ();

View File

@ -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 = Hie_GetFigureInHieLvl (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Usrs.Me.UsrDat.InsCtyCod); NumInss = Hie_GetNumNodesInHieLvl (HieLvl_INS,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 = Hie_GetFigureInHieLvl (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Usrs.Me.UsrDat.InsCod); NumCtrs = Hie_GetNumNodesInHieLvl (HieLvl_CTR,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);