mirror of https://github.com/acanas/swad-core.git
Version 23.11: Sep 20, 2023 Code refactoring in hierarchy.
This commit is contained in:
parent
eb837d80a0
commit
9accc808f5
|
@ -98,8 +98,6 @@ static void Ctr_PutHeadCentersForSeeing (bool OrderSelectable);
|
|||
static void Ctr_PutHeadCentersForEdition (void);
|
||||
static void Ctr_ReceiveFormRequestOrCreateCtr (Hie_Status_t Status);
|
||||
|
||||
static unsigned Ctr_GetNumCtrsInCty (long CtyCod);
|
||||
|
||||
static void Ctr_EditingCenterConstructor (void);
|
||||
static void Ctr_EditingCenterDestructor (void);
|
||||
|
||||
|
@ -369,13 +367,15 @@ static void Ctr_ListOneCenterForSeeing (struct Hie_Node *Ctr,unsigned NumCtr)
|
|||
/***** Number of degrees *****/
|
||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInCtr (Ctr->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_CTR,Ctr->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of courses *****/
|
||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInCtr (Ctr->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_CTR,Ctr->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of users in courses of this center *****/
|
||||
|
@ -1554,75 +1554,41 @@ static void Ctr_ReceiveFormRequestOrCreateCtr (Hie_Status_t Status)
|
|||
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************************** Get number of centers ****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Ctr_GetCachedNumCtrsInSys (void)
|
||||
{
|
||||
unsigned NumCtrs;
|
||||
|
||||
/***** Get number of centers from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumCtrs))
|
||||
{
|
||||
/***** Get current number of centers from database and update cache *****/
|
||||
NumCtrs = (unsigned) DB_GetNumRowsTable ("ctr_centers");
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumCtrs);
|
||||
}
|
||||
|
||||
return NumCtrs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************* Get number of centers in a country **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Ctr_FlushCacheNumCtrsInCty (void)
|
||||
{
|
||||
Gbl.Cache.NumCtrsInCty.CtyCod = -1L;
|
||||
Gbl.Cache.NumCtrsInCty.HieCod = -1L;
|
||||
Gbl.Cache.NumCtrsInCty.NumCtrs = 0;
|
||||
}
|
||||
|
||||
static unsigned Ctr_GetNumCtrsInCty (long CtyCod)
|
||||
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.CtyCod)
|
||||
if (CtyCod == Gbl.Cache.NumCtrsInCty.HieCod)
|
||||
return Gbl.Cache.NumCtrsInCty.NumCtrs;
|
||||
|
||||
/***** 3. Slow: number of centers in a country from database *****/
|
||||
Gbl.Cache.NumCtrsInCty.CtyCod = CtyCod;
|
||||
Gbl.Cache.NumCtrsInCty.HieCod = CtyCod;
|
||||
Gbl.Cache.NumCtrsInCty.NumCtrs = Ctr_DB_GetNumCtrsInCty (CtyCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_CTY,Gbl.Cache.NumCtrsInCty.CtyCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_CTY,Gbl.Cache.NumCtrsInCty.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInCty.NumCtrs);
|
||||
return Gbl.Cache.NumCtrsInCty.NumCtrs;
|
||||
}
|
||||
|
||||
unsigned Ctr_GetCachedNumCtrsInCty (long CtyCod)
|
||||
{
|
||||
unsigned NumCtrs;
|
||||
|
||||
/***** Get number of centers from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,HieLvl_CTY,CtyCod,
|
||||
FigCch_UNSIGNED,&NumCtrs))
|
||||
/***** Get current number of centers from database and update cache *****/
|
||||
NumCtrs = Ctr_GetNumCtrsInCty (CtyCod);
|
||||
|
||||
return NumCtrs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Get number of centers in an institution ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Ctr_FlushCacheNumCtrsInIns (void)
|
||||
{
|
||||
Gbl.Cache.NumCtrsInIns.InsCod = -1L;
|
||||
Gbl.Cache.NumCtrsInIns.HieCod = -1L;
|
||||
Gbl.Cache.NumCtrsInIns.NumCtrs = 0;
|
||||
}
|
||||
|
||||
|
@ -1633,30 +1599,17 @@ unsigned Ctr_GetNumCtrsInIns (long InsCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (InsCod == Gbl.Cache.NumCtrsInIns.InsCod)
|
||||
if (InsCod == Gbl.Cache.NumCtrsInIns.HieCod)
|
||||
return Gbl.Cache.NumCtrsInIns.NumCtrs;
|
||||
|
||||
/***** 3. Slow: number of centers in an institution from database *****/
|
||||
Gbl.Cache.NumCtrsInIns.InsCod = InsCod;
|
||||
Gbl.Cache.NumCtrsInIns.HieCod = InsCod;
|
||||
Gbl.Cache.NumCtrsInIns.NumCtrs = Ctr_DB_GetNumCtrsInIns (InsCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Cache.NumCtrsInIns.InsCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTRS,HieLvl_INS,Gbl.Cache.NumCtrsInIns.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumCtrsInIns.NumCtrs);
|
||||
return Gbl.Cache.NumCtrsInIns.NumCtrs;
|
||||
}
|
||||
|
||||
unsigned Ctr_GetCachedNumCtrsInIns (long InsCod)
|
||||
{
|
||||
unsigned NumCtrs;
|
||||
|
||||
/***** Get number of centers from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTRS,HieLvl_INS,InsCod,
|
||||
FigCch_UNSIGNED,&NumCtrs))
|
||||
/***** Get current number of centers from database and update cache *****/
|
||||
NumCtrs = Ctr_GetNumCtrsInIns (InsCod);
|
||||
|
||||
return NumCtrs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************** Get number of centers with map ***********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1988,7 +1941,7 @@ bool Ctr_CheckIfIBelongToCtr (long CtrCod)
|
|||
|
||||
void Ctr_FlushCacheNumUsrsWhoClaimToBelongToCtr (void)
|
||||
{
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.CtrCod = -1L;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.HieCod = -1L;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.NumUsrs = 0;
|
||||
}
|
||||
|
||||
|
@ -2003,7 +1956,7 @@ unsigned Ctr_GetNumUsrsWhoClaimToBelongToCtr (struct Hie_Node *Ctr)
|
|||
return Ctr->NumUsrsWhoClaimToBelong.NumUsrs;
|
||||
|
||||
/***** 3. Fast check: If cached... *****/
|
||||
if (Ctr->HieCod == Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.CtrCod)
|
||||
if (Ctr->HieCod == Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.HieCod)
|
||||
{
|
||||
Ctr->NumUsrsWhoClaimToBelong.NumUsrs = Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.NumUsrs;
|
||||
Ctr->NumUsrsWhoClaimToBelong.Valid = true;
|
||||
|
@ -2012,10 +1965,10 @@ unsigned Ctr_GetNumUsrsWhoClaimToBelongToCtr (struct Hie_Node *Ctr)
|
|||
|
||||
/***** 4. Slow: number of users who claim to belong to a center
|
||||
from database *****/
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.CtrCod = Ctr->HieCod;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.HieCod = Ctr->HieCod;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.NumUsrs =
|
||||
Ctr->NumUsrsWhoClaimToBelong.NumUsrs = Ctr_DB_GetNumUsrsWhoClaimToBelongToCtr (Ctr->HieCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTR,HieLvl_CTR,Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.CtrCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTR,HieLvl_CTR,Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoClaimToBelongToCtr.NumUsrs);
|
||||
return Ctr->NumUsrsWhoClaimToBelong.NumUsrs;
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "swad_action.h"
|
||||
#include "swad_constant.h"
|
||||
#include "swad_degree.h"
|
||||
#include "swad_figure_cache.h"
|
||||
#include "swad_map.h"
|
||||
#include "swad_role_type.h"
|
||||
|
||||
|
@ -70,14 +71,11 @@ void Ctr_ContEditAfterChgCtr (void);
|
|||
void Ctr_ReceiveFormReqCtr (void);
|
||||
void Ctr_ReceiveFormNewCtr (void);
|
||||
|
||||
unsigned Ctr_GetCachedNumCtrsInSys (void);
|
||||
|
||||
void Ctr_FlushCacheNumCtrsInCty (void);
|
||||
unsigned Ctr_GetCachedNumCtrsInCty (long CtyCod);
|
||||
unsigned Ctr_GetNumCtrsInCty (long CtyCod);
|
||||
|
||||
void Ctr_FlushCacheNumCtrsInIns (void);
|
||||
unsigned Ctr_GetNumCtrsInIns (long InsCod);
|
||||
unsigned Ctr_GetCachedNumCtrsInIns (long InsCod);
|
||||
|
||||
unsigned Ctr_GetCachedNumCtrsWithMapInSys (void);
|
||||
unsigned Ctr_GetCachedNumCtrsWithMapInCty (long CtyCod);
|
||||
|
|
|
@ -775,7 +775,8 @@ static void CtrCfg_NumDegs (void)
|
|||
Err_NotEnoughMemoryExit ();
|
||||
HTM_BUTTON_Submit_Begin (Title,"class=\"LB BT_LINK\"");
|
||||
free (Title);
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInCtr (Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_TD_End ();
|
||||
|
@ -799,7 +800,8 @@ static void CtrCfg_NumCrss (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInCtr (Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_CTR,Gbl.Hierarchy.Node[HieLvl_CTR].HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_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í?
|
||||
"can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod')
|
||||
*/
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.10 (2023-09-20)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 23.11 (2023-09-20)"
|
||||
#define CSS_FILE "swad22.120.4.css"
|
||||
#define JS_FILE "swad22.49.js"
|
||||
/*
|
||||
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.9.7: Sep 19, 2023 Code refactoring in hierarchy. (337352 lines)
|
||||
Version 23.9.6: Sep 19, 2023 Code refactoring in hierarchy. (337410 lines)
|
||||
|
|
|
@ -255,22 +255,26 @@ void Cty_ListCountries2 (void)
|
|||
|
||||
/* Number of institutions in other countries */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Ins_GetCachedNumInssInCty (0));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
||||
HieLvl_CTY,0));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of centers in other countries */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Ctr_GetCachedNumCtrsInCty (0));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
||||
HieLvl_CTY,0));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of degrees in other countries */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInCty (0));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_CTY,0));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of courses in other countries */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInCty (0));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_CTY,0));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of users in courses of other countries */
|
||||
|
@ -300,22 +304,26 @@ void Cty_ListCountries2 (void)
|
|||
|
||||
/* Number of institutions with unknown country */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Ins_GetCachedNumInssInCty (-1L));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
||||
HieLvl_CTY,-1L));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of centers with unknown country */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Ctr_GetCachedNumCtrsInCty (-1L));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
||||
HieLvl_CTY,-1L));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of degrees with unknown country */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInCty (-1L));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_CTY,-1L));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of courses with unknown country */
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInCty (-1L));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_CTY,-1L));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s\"",The_GetSuffix ());
|
||||
|
@ -434,25 +442,29 @@ static void Cty_ListOneCountryForSeeing (struct Hie_Node *Cty,unsigned NumCty)
|
|||
/***** Number of institutions *****/
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Ins_GetCachedNumInssInCty (Cty->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
||||
HieLvl_CTY,Cty->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of centers *****/
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Ctr_GetCachedNumCtrsInCty (Cty->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
||||
HieLvl_CTY,Cty->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of degrees *****/
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInCty (Cty->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_CTY,Cty->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of courses *****/
|
||||
HTM_TD_Begin ("class=\"RM DAT_%s %s\"",
|
||||
The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInCty (Cty->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_CTY,Cty->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/***** Number of users in courses *****/
|
||||
|
@ -623,7 +635,8 @@ void Cty_WriteScriptGoogleGeochart (void)
|
|||
NumUsrsCty = Cty_GetCachedNumUsrsWhoClaimToBelongToCty (&Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty]);
|
||||
if (NumUsrsCty)
|
||||
{
|
||||
NumInss = Ins_GetCachedNumInssInCty (Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty].HieCod);
|
||||
NumInss = Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
||||
HieLvl_CTY,Gbl.Hierarchy.List[HieLvl_SYS].Lst[NumCty].HieCod);
|
||||
|
||||
/* Write data of this country */
|
||||
HTM_TxtF (" ['%s', %u, %u],\n",
|
||||
|
@ -998,7 +1011,7 @@ void Cty_GetNamesAndWWWsByCod (struct Hie_Node *Cty,
|
|||
|
||||
void Cty_FlushCacheCountryName (void)
|
||||
{
|
||||
Gbl.Cache.CountryName.CtyCod = -1L;
|
||||
Gbl.Cache.CountryName.HieCod = -1L;
|
||||
Gbl.Cache.CountryName.Language = Lan_LANGUAGE_UNKNOWN;
|
||||
Gbl.Cache.CountryName.CtyName[0] = '\0';
|
||||
}
|
||||
|
@ -1014,7 +1027,7 @@ void Cty_GetCountryNameInLanguage (long CtyCod,Lan_Language_t Language,
|
|||
}
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (CtyCod == Gbl.Cache.CountryName.CtyCod &&
|
||||
if (CtyCod == Gbl.Cache.CountryName.HieCod &&
|
||||
Language == Gbl.Cache.CountryName.Language)
|
||||
{
|
||||
Str_Copy (CtyName,Gbl.Cache.CountryName.CtyName,Cty_MAX_BYTES_NAME);
|
||||
|
@ -1023,7 +1036,7 @@ void Cty_GetCountryNameInLanguage (long CtyCod,Lan_Language_t Language,
|
|||
|
||||
/***** 3. Slow: get country name from database *****/
|
||||
Cty_DB_GetCountryName (CtyCod,Language,CtyName);
|
||||
Gbl.Cache.CountryName.CtyCod = CtyCod;
|
||||
Gbl.Cache.CountryName.HieCod = CtyCod;
|
||||
Gbl.Cache.CountryName.Language = Language;
|
||||
Str_Copy (Gbl.Cache.CountryName.CtyName,CtyName,Cty_MAX_BYTES_NAME);
|
||||
}
|
||||
|
@ -1624,27 +1637,6 @@ void Cty_ReceiveFormNewCountry (void)
|
|||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********************** Get total number of countries ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Cty_GetCachedNumCtysInSys (void)
|
||||
{
|
||||
unsigned NumCtys;
|
||||
|
||||
/***** Get number of countries from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CTYS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumCtys))
|
||||
{
|
||||
/***** Get current number of countries from database and update cache *****/
|
||||
NumCtys = (unsigned) DB_GetNumRowsTable ("cty_countrs");
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CTYS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumCtys);
|
||||
}
|
||||
|
||||
return NumCtys;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Get number of countries with institutions *****************/
|
||||
/*****************************************************************************/
|
||||
|
@ -2017,7 +2009,7 @@ unsigned Cty_GetCachedNumUsrsWhoClaimToBelongToAnotherCty (void)
|
|||
|
||||
void Cty_FlushCacheNumUsrsWhoClaimToBelongToCty (void)
|
||||
{
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCty.CtyCod = -1L;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCty.HieCod = -1L;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCty.NumUsrs = 0;
|
||||
}
|
||||
|
||||
|
@ -2032,7 +2024,7 @@ unsigned Cty_GetNumUsrsWhoClaimToBelongToCty (struct Hie_Node *Cty)
|
|||
return Cty->NumUsrsWhoClaimToBelong.NumUsrs;
|
||||
|
||||
/***** 3. Fast check: If cached... *****/
|
||||
if (Cty->HieCod == Gbl.Cache.NumUsrsWhoClaimToBelongToCty.CtyCod)
|
||||
if (Cty->HieCod == Gbl.Cache.NumUsrsWhoClaimToBelongToCty.HieCod)
|
||||
{
|
||||
Cty->NumUsrsWhoClaimToBelong.NumUsrs = Gbl.Cache.NumUsrsWhoClaimToBelongToCty.NumUsrs;
|
||||
Cty->NumUsrsWhoClaimToBelong.Valid = true;
|
||||
|
@ -2041,11 +2033,11 @@ unsigned Cty_GetNumUsrsWhoClaimToBelongToCty (struct Hie_Node *Cty)
|
|||
|
||||
/***** 4. Slow: number of users who claim to belong to an institution
|
||||
from database *****/
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCty.CtyCod = Cty->HieCod;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCty.HieCod = Cty->HieCod;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToCty.NumUsrs =
|
||||
Cty->NumUsrsWhoClaimToBelong.NumUsrs = Cty_DB_GetNumUsrsWhoClaimToBelongToCty (Cty->HieCod);
|
||||
Cty->NumUsrsWhoClaimToBelong.Valid = true;
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,Gbl.Cache.NumUsrsWhoClaimToBelongToCty.CtyCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_CTY,HieLvl_CTY,Gbl.Cache.NumUsrsWhoClaimToBelongToCty.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoClaimToBelongToCty.NumUsrs);
|
||||
return Cty->NumUsrsWhoClaimToBelong.NumUsrs;
|
||||
}
|
||||
|
|
|
@ -82,8 +82,6 @@ void Cty_ChangeCtyWWW (void);
|
|||
void Cty_ContEditAfterChgCty (void);
|
||||
void Cty_ReceiveFormNewCountry (void);
|
||||
|
||||
unsigned Cty_GetCachedNumCtysInSys (void);
|
||||
|
||||
unsigned Cty_GetCachedNumCtysWithInss (void);
|
||||
unsigned Cty_GetCachedNumCtysWithCtrs (void);
|
||||
unsigned Cty_GetCachedNumCtysWithDegs (void);
|
||||
|
|
|
@ -149,7 +149,8 @@ static void CtyCfg_Configuration (bool PrintView)
|
|||
CtyCfg_QR ();
|
||||
else
|
||||
{
|
||||
NumCtrs = Ctr_GetCachedNumCtrsInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||
NumCtrs = Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||
|
||||
/* Number of users who claim to belong to this country,
|
||||
number of institutions,
|
||||
|
@ -489,7 +490,8 @@ static void CtyCfg_NumInss (void)
|
|||
Err_NotEnoughMemoryExit ();
|
||||
HTM_BUTTON_Submit_Begin (Title,"class=\"LT BT_LINK\"");
|
||||
free (Title);
|
||||
HTM_Unsigned (Ins_GetCachedNumInssInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_INSS,
|
||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_TD_End ();
|
||||
|
@ -513,7 +515,8 @@ static void CtyCfg_NumDegs (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -535,7 +538,8 @@ static void CtyCfg_NumCrss (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_CTY,Gbl.Hierarchy.Node[HieLvl_CTY].HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
109
swad_course.c
109
swad_course.c
|
@ -407,34 +407,13 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
|||
Box_BoxEnd ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********************** Get total number of courses *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Crs_GetCachedNumCrssInSys (void)
|
||||
{
|
||||
unsigned NumCrss;
|
||||
|
||||
/***** Get number of courses from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumCrss))
|
||||
{
|
||||
/***** Get current number of courses from database and update cache *****/
|
||||
NumCrss = (unsigned) DB_GetNumRowsTable ("crs_courses");
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumCrss);
|
||||
}
|
||||
|
||||
return NumCrss;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Get number of courses in a country ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Crs_FlushCacheNumCrssInCty (void)
|
||||
{
|
||||
Gbl.Cache.NumCrssInCty.CtyCod = -1L;
|
||||
Gbl.Cache.NumCrssInCty.HieCod = -1L;
|
||||
Gbl.Cache.NumCrssInCty.NumCrss = 0;
|
||||
}
|
||||
|
||||
|
@ -445,37 +424,24 @@ unsigned Crs_GetNumCrssInCty (long CtyCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (CtyCod == Gbl.Cache.NumCrssInCty.CtyCod)
|
||||
if (CtyCod == Gbl.Cache.NumCrssInCty.HieCod)
|
||||
return Gbl.Cache.NumCrssInCty.NumCrss;
|
||||
|
||||
/***** 3. Slow: number of courses in a country from database *****/
|
||||
Gbl.Cache.NumCrssInCty.CtyCod = CtyCod;
|
||||
Gbl.Cache.NumCrssInCty.HieCod = CtyCod;
|
||||
Gbl.Cache.NumCrssInCty.NumCrss = Crs_DB_GetNumCrssInCty (CtyCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_CTY,Gbl.Cache.NumCrssInCty.CtyCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_CTY,Gbl.Cache.NumCrssInCty.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInCty.NumCrss);
|
||||
return Gbl.Cache.NumCrssInCty.NumCrss;
|
||||
}
|
||||
|
||||
unsigned Crs_GetCachedNumCrssInCty (long CtyCod)
|
||||
{
|
||||
unsigned NumCrss;
|
||||
|
||||
/***** Get number of courses from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_CTY,CtyCod,
|
||||
FigCch_UNSIGNED,&NumCrss))
|
||||
/***** Get current number of courses from database and update cache *****/
|
||||
NumCrss = Crs_GetNumCrssInCty (CtyCod);
|
||||
|
||||
return NumCrss;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Get number of courses in an institution ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Crs_FlushCacheNumCrssInIns (void)
|
||||
{
|
||||
Gbl.Cache.NumCrssInIns.InsCod = -1L;
|
||||
Gbl.Cache.NumCrssInIns.HieCod = -1L;
|
||||
Gbl.Cache.NumCrssInIns.NumCrss = 0;
|
||||
}
|
||||
|
||||
|
@ -486,37 +452,24 @@ unsigned Crs_GetNumCrssInIns (long InsCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (InsCod == Gbl.Cache.NumCrssInIns.InsCod)
|
||||
if (InsCod == Gbl.Cache.NumCrssInIns.HieCod)
|
||||
return Gbl.Cache.NumCrssInIns.NumCrss;
|
||||
|
||||
/***** 3. Slow: number of courses in an institution from database *****/
|
||||
Gbl.Cache.NumCrssInIns.InsCod = InsCod;
|
||||
Gbl.Cache.NumCrssInIns.HieCod = InsCod;
|
||||
Gbl.Cache.NumCrssInIns.NumCrss = Crs_DB_GetNumCrssInIns (InsCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Cache.NumCrssInIns.InsCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Cache.NumCrssInIns.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInIns.NumCrss);
|
||||
return Gbl.Cache.NumCrssInIns.NumCrss;
|
||||
}
|
||||
|
||||
unsigned Crs_GetCachedNumCrssInIns (long InsCod)
|
||||
{
|
||||
unsigned NumCrss;
|
||||
|
||||
/***** Get number of courses from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_INS,InsCod,
|
||||
FigCch_UNSIGNED,&NumCrss))
|
||||
/***** Get current number of courses from database and update cache *****/
|
||||
NumCrss = Crs_GetNumCrssInIns (InsCod);
|
||||
|
||||
return NumCrss;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** Get number of courses in a center **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Crs_FlushCacheNumCrssInCtr (void)
|
||||
{
|
||||
Gbl.Cache.NumCrssInCtr.CtrCod = -1L;
|
||||
Gbl.Cache.NumCrssInCtr.HieCod = -1L;
|
||||
Gbl.Cache.NumCrssInCtr.NumCrss = 0;
|
||||
}
|
||||
|
||||
|
@ -527,39 +480,24 @@ unsigned Crs_GetNumCrssInCtr (long CtrCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (CtrCod == Gbl.Cache.NumCrssInCtr.CtrCod)
|
||||
if (CtrCod == Gbl.Cache.NumCrssInCtr.HieCod)
|
||||
return Gbl.Cache.NumCrssInCtr.NumCrss;
|
||||
|
||||
/***** 3. Slow: number of courses in a center from database *****/
|
||||
Gbl.Cache.NumCrssInCtr.CtrCod = CtrCod;
|
||||
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;
|
||||
}
|
||||
|
||||
unsigned Crs_GetCachedNumCrssInCtr (long CtrCod)
|
||||
{
|
||||
unsigned NumCrss;
|
||||
|
||||
/***** Get number of courses from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_CTR,CtrCod,
|
||||
FigCch_UNSIGNED,&NumCrss))
|
||||
{
|
||||
/***** Get current number of courses from database and update cache *****/
|
||||
NumCrss = Crs_GetNumCrssInCtr (CtrCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_CTR,CtrCod,
|
||||
FigCch_UNSIGNED,&NumCrss);
|
||||
}
|
||||
|
||||
return NumCrss;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** Get number of courses in a degree **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Crs_FlushCacheNumCrssInDeg (void)
|
||||
{
|
||||
Gbl.Cache.NumCrssInDeg.DegCod = -1L;
|
||||
Gbl.Cache.NumCrssInDeg.HieCod = -1L;
|
||||
Gbl.Cache.NumCrssInDeg.NumCrss = 0;
|
||||
}
|
||||
|
||||
|
@ -570,30 +508,17 @@ unsigned Crs_GetNumCrssInDeg (long DegCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (DegCod == Gbl.Cache.NumCrssInDeg.DegCod)
|
||||
if (DegCod == Gbl.Cache.NumCrssInDeg.HieCod)
|
||||
return Gbl.Cache.NumCrssInDeg.NumCrss;
|
||||
|
||||
/***** 3. Slow: number of courses in a degree from database *****/
|
||||
Gbl.Cache.NumCrssInDeg.DegCod = DegCod;
|
||||
Gbl.Cache.NumCrssInDeg.HieCod = DegCod;
|
||||
Gbl.Cache.NumCrssInDeg.NumCrss = Crs_DB_GetNumCrssInDeg (DegCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Cache.NumCrssInDeg.DegCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Cache.NumCrssInDeg.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumCrssInDeg.NumCrss);
|
||||
return Gbl.Cache.NumCrssInDeg.NumCrss;
|
||||
}
|
||||
|
||||
unsigned Crs_GetCachedNumCrssInDeg (long DegCod)
|
||||
{
|
||||
unsigned NumCrss;
|
||||
|
||||
/***** Get number of courses from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_CRSS,HieLvl_DEG,DegCod,
|
||||
FigCch_UNSIGNED,&NumCrss))
|
||||
/***** Get current number of courses from database and update cache *****/
|
||||
NumCrss = Crs_GetNumCrssInDeg (DegCod);
|
||||
|
||||
return NumCrss;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Get number of courses with users **********************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "swad_constant.h"
|
||||
#include "swad_degree.h"
|
||||
#include "swad_figure_cache.h"
|
||||
#include "swad_hierarchy_level.h"
|
||||
#include "swad_user.h"
|
||||
|
||||
|
@ -51,23 +52,17 @@
|
|||
|
||||
void Crs_ShowIntroduction (void);
|
||||
|
||||
unsigned Crs_GetCachedNumCrssInSys (void);
|
||||
|
||||
void Crs_FlushCacheNumCrssInCty (void);
|
||||
unsigned Crs_GetNumCrssInCty (long CtyCod);
|
||||
unsigned Crs_GetCachedNumCrssInCty (long CtyCod);
|
||||
|
||||
void Crs_FlushCacheNumCrssInIns (void);
|
||||
unsigned Crs_GetNumCrssInIns (long InsCod);
|
||||
unsigned Crs_GetCachedNumCrssInIns (long InsCod);
|
||||
|
||||
void Crs_FlushCacheNumCrssInCtr (void);
|
||||
unsigned Crs_GetNumCrssInCtr (long CtrCod);
|
||||
unsigned Crs_GetCachedNumCrssInCtr (long CtrCod);
|
||||
|
||||
void Crs_FlushCacheNumCrssInDeg (void);
|
||||
unsigned Crs_GetNumCrssInDeg (long DegCod);
|
||||
unsigned Crs_GetCachedNumCrssInDeg (long DegCod);
|
||||
|
||||
unsigned Crs_GetCachedNumCrssWithUsrs (Rol_Role_t Role);
|
||||
|
||||
|
|
|
@ -796,7 +796,8 @@ static void Deg_ListOneDegreeForSeeing (struct Hie_Node *Deg,unsigned NumDeg)
|
|||
const char *TxtClassNormal;
|
||||
const char *TxtClassStrong;
|
||||
const char *BgColor;
|
||||
unsigned NumCrss = Crs_GetCachedNumCrssInDeg (Deg->HieCod);
|
||||
unsigned NumCrss = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_DEG,Deg->HieCod);
|
||||
|
||||
/***** Get data of type of degree of this degree *****/
|
||||
DegTyp.DegTypCod = Deg->Specific.TypCod;
|
||||
|
@ -1523,34 +1524,13 @@ static void Deg_ShowAlertAndButtonToGoToDeg (void)
|
|||
Ale_ShowAlerts (NULL);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/*********************** Get total number of degrees *************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Deg_GetCachedNumDegsInSys (void)
|
||||
{
|
||||
unsigned NumDegs;
|
||||
|
||||
/***** Get number of degrees from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumDegs))
|
||||
{
|
||||
/***** Get current number of degrees from database and update cache *****/
|
||||
NumDegs = (unsigned) DB_GetNumRowsTable ("deg_degrees");
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumDegs);
|
||||
}
|
||||
|
||||
return NumDegs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Get number of degrees in a country ********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_FlushCacheNumDegsInCty (void)
|
||||
{
|
||||
Gbl.Cache.NumDegsInCty.CtyCod = -1L;
|
||||
Gbl.Cache.NumDegsInCty.HieCod = -1L;
|
||||
Gbl.Cache.NumDegsInCty.NumDegs = 0;
|
||||
}
|
||||
|
||||
|
@ -1561,37 +1541,24 @@ unsigned Deg_GetNumDegsInCty (long CtyCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (CtyCod == Gbl.Cache.NumDegsInCty.CtyCod)
|
||||
if (CtyCod == Gbl.Cache.NumDegsInCty.HieCod)
|
||||
return Gbl.Cache.NumDegsInCty.NumDegs;
|
||||
|
||||
/***** 3. Slow: number of degrees in a country from database *****/
|
||||
Gbl.Cache.NumDegsInCty.CtyCod = CtyCod;
|
||||
Gbl.Cache.NumDegsInCty.HieCod = CtyCod;
|
||||
Gbl.Cache.NumDegsInCty.NumDegs = Deg_DB_GetNumDegsInCty (CtyCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTY,Gbl.Cache.NumDegsInCty.CtyCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTY,Gbl.Cache.NumDegsInCty.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumDegsInCty.NumDegs);
|
||||
return Gbl.Cache.NumDegsInCty.NumDegs;
|
||||
}
|
||||
|
||||
unsigned Deg_GetCachedNumDegsInCty (long CtyCod)
|
||||
{
|
||||
unsigned NumDegs;
|
||||
|
||||
/***** Get number of degrees from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_CTY,CtyCod,
|
||||
FigCch_UNSIGNED,&NumDegs))
|
||||
/***** Get current number of degrees from database and update cache *****/
|
||||
NumDegs = Deg_GetNumDegsInCty (CtyCod);
|
||||
|
||||
return NumDegs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/****************** Get number of degrees in an institution ******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_FlushCacheNumDegsInIns (void)
|
||||
{
|
||||
Gbl.Cache.NumDegsInIns.InsCod = -1L;
|
||||
Gbl.Cache.NumDegsInIns.HieCod = -1L;
|
||||
Gbl.Cache.NumDegsInIns.NumDegs = 0;
|
||||
}
|
||||
|
||||
|
@ -1602,37 +1569,24 @@ unsigned Deg_GetNumDegsInIns (long InsCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (InsCod == Gbl.Cache.NumDegsInIns.InsCod)
|
||||
if (InsCod == Gbl.Cache.NumDegsInIns.HieCod)
|
||||
return Gbl.Cache.NumDegsInIns.NumDegs;
|
||||
|
||||
/***** 3. Slow: number of degrees in an institution from database *****/
|
||||
Gbl.Cache.NumDegsInIns.InsCod = InsCod;
|
||||
Gbl.Cache.NumDegsInIns.HieCod = InsCod;
|
||||
Gbl.Cache.NumDegsInIns.NumDegs = Deg_DB_GetNumDegsInIns (InsCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_INS,Gbl.Cache.NumDegsInIns.InsCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_INS,Gbl.Cache.NumDegsInIns.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumDegsInIns.NumDegs);
|
||||
return Gbl.Cache.NumDegsInIns.NumDegs;
|
||||
}
|
||||
|
||||
unsigned Deg_GetCachedNumDegsInIns (long InsCod)
|
||||
{
|
||||
unsigned NumDegs;
|
||||
|
||||
/***** Get number of degrees from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_INS,InsCod,
|
||||
FigCch_UNSIGNED,&NumDegs))
|
||||
/***** Get current number of degrees from database and update cache *****/
|
||||
NumDegs = Deg_GetNumDegsInIns (InsCod);
|
||||
|
||||
return NumDegs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/******************** Get number of degrees in a center **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
void Deg_FlushCacheNumDegsInCtr (void)
|
||||
{
|
||||
Gbl.Cache.NumDegsInCtr.CtrCod = -1L;
|
||||
Gbl.Cache.NumDegsInCtr.HieCod = -1L;
|
||||
Gbl.Cache.NumDegsInCtr.NumDegs = 0;
|
||||
}
|
||||
|
||||
|
@ -1643,30 +1597,17 @@ unsigned Deg_GetNumDegsInCtr (long CtrCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (CtrCod == Gbl.Cache.NumDegsInCtr.CtrCod)
|
||||
if (CtrCod == Gbl.Cache.NumDegsInCtr.HieCod)
|
||||
return Gbl.Cache.NumDegsInCtr.NumDegs;
|
||||
|
||||
/***** 3. Slow: number of degrees in a center from database *****/
|
||||
Gbl.Cache.NumDegsInCtr.CtrCod = CtrCod;
|
||||
Gbl.Cache.NumDegsInCtr.HieCod = CtrCod;
|
||||
Gbl.Cache.NumDegsInCtr.NumDegs = Deg_DB_GetNumDegsInCtr (CtrCod);
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTR,Gbl.Cache.NumDegsInCtr.CtrCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_DEGS,HieLvl_CTR,Gbl.Cache.NumDegsInCtr.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumDegsInCtr.NumDegs);
|
||||
return Gbl.Cache.NumDegsInCtr.NumDegs;
|
||||
}
|
||||
|
||||
unsigned Deg_GetCachedNumDegsInCtr (long CtrCod)
|
||||
{
|
||||
unsigned NumDegs;
|
||||
|
||||
/***** Get number of degrees from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_DEGS,HieLvl_CTR,CtrCod,
|
||||
FigCch_UNSIGNED,&NumDegs))
|
||||
/***** Get current number of degrees from database and update cache *****/
|
||||
NumDegs = Deg_GetNumDegsInCtr (CtrCod);
|
||||
|
||||
return NumDegs;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Get number of centers with courses ********************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
|
||||
#include "swad_action.h"
|
||||
#include "swad_constant.h"
|
||||
#include "swad_figure_cache.h"
|
||||
#include "swad_hierarchy_level.h"
|
||||
#include "swad_role_type.h"
|
||||
#include "swad_string.h"
|
||||
|
@ -80,19 +81,14 @@ void Deg_ChangeDegWWW (void);
|
|||
void Deg_ChangeDegStatus (void);
|
||||
void Deg_ContEditAfterChgDeg (void);
|
||||
|
||||
unsigned Deg_GetCachedNumDegsInSys (void);
|
||||
|
||||
void Deg_FlushCacheNumDegsInCty (void);
|
||||
unsigned Deg_GetNumDegsInCty (long CtyCod);
|
||||
unsigned Deg_GetCachedNumDegsInCty (long CtyCod);
|
||||
|
||||
void Deg_FlushCacheNumDegsInIns (void);
|
||||
unsigned Deg_GetNumDegsInIns (long InsCod);
|
||||
unsigned Deg_GetCachedNumDegsInIns (long InsCod);
|
||||
|
||||
void Deg_FlushCacheNumDegsInCtr (void);
|
||||
unsigned Deg_GetNumDegsInCtr (long CtrCod);
|
||||
unsigned Deg_GetCachedNumDegsInCtr (long CtrCod);
|
||||
|
||||
unsigned Deg_GetCachedNumDegsWithCrss (void);
|
||||
unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role);
|
||||
|
|
|
@ -335,7 +335,8 @@ static void DegCfg_NumCrss (void)
|
|||
Err_NotEnoughMemoryExit ();
|
||||
HTM_BUTTON_Submit_Begin (Title,"class=\"LB BT_LINK\"");
|
||||
free (Title);
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Node[HieLvl_DEG].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod));
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_TD_End ();
|
||||
|
|
|
@ -990,7 +990,7 @@ unsigned Dpt_GetTotalNumberOfDepartments (void)
|
|||
|
||||
void Dpt_FlushCacheNumDptsInIns (void)
|
||||
{
|
||||
Gbl.Cache.NumDptsInIns.InsCod = -1L;
|
||||
Gbl.Cache.NumDptsInIns.HieCod = -1L;
|
||||
Gbl.Cache.NumDptsInIns.NumDpts = 0;
|
||||
}
|
||||
|
||||
|
@ -1001,11 +1001,11 @@ unsigned Dpt_GetNumDptsInIns (long InsCod)
|
|||
return 0;
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (InsCod == Gbl.Cache.NumDptsInIns.InsCod)
|
||||
if (InsCod == Gbl.Cache.NumDptsInIns.HieCod)
|
||||
return Gbl.Cache.NumDptsInIns.NumDpts;
|
||||
|
||||
/***** 3. Slow: number of departments of an institution from database *****/
|
||||
Gbl.Cache.NumDptsInIns.InsCod = InsCod;
|
||||
Gbl.Cache.NumDptsInIns.HieCod = InsCod;
|
||||
Gbl.Cache.NumDptsInIns.NumDpts = Dpt_DB_GetNumDepartmentsInInstitution (InsCod);
|
||||
return Gbl.Cache.NumDptsInIns.NumDpts;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
/*****************************************************************************/
|
||||
|
||||
void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
FigCch_Type_t Type,const void *ValuePtr)
|
||||
{
|
||||
/***** Trivial check *****/
|
||||
|
@ -50,11 +50,11 @@ void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
|
|||
switch (Type)
|
||||
{
|
||||
case FigCch_UNSIGNED:
|
||||
Fig_DB_UpdateUnsignedFigureIntoCache (Figure,Level,Cod,
|
||||
Fig_DB_UpdateUnsignedFigureIntoCache (Figure,Level,HieCod,
|
||||
*((unsigned *) ValuePtr));
|
||||
break;
|
||||
case FigCch_DOUBLE:
|
||||
Fig_DB_UpdateDoubleFigureIntoCache (Figure,Level,Cod,
|
||||
Fig_DB_UpdateDoubleFigureIntoCache (Figure,Level,HieCod,
|
||||
*((double *) ValuePtr));
|
||||
break;
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
|
|||
// Return true is figure is found (if figure is cached and recently updated)
|
||||
|
||||
bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
FigCch_Type_t Type,void *ValuePtr)
|
||||
{
|
||||
/* The higher the level, the longer a value remains cached */
|
||||
|
@ -101,7 +101,7 @@ bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
|
|||
return false;
|
||||
|
||||
/***** Get figure's value if cached and recent *****/
|
||||
if (Fig_DB_GetFigureFromCache (&mysql_res,Figure,Level,Cod,Type,TimeCached[Level]))
|
||||
if (Fig_DB_GetFigureFromCache (&mysql_res,Figure,Level,HieCod,Type,TimeCached[Level]))
|
||||
{
|
||||
/* Get row */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
|
|
|
@ -111,10 +111,10 @@ typedef enum
|
|||
/*****************************************************************************/
|
||||
|
||||
void FigCch_UpdateFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
FigCch_Type_t Type,const void *ValuePtr);
|
||||
bool FigCch_GetFigureFromCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
FigCch_Type_t Type,void *ValuePtr);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
/*****************************************************************************/
|
||||
|
||||
void Fig_DB_UpdateUnsignedFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
unsigned Value)
|
||||
{
|
||||
DB_QueryREPLACE ("can not update cached figure value",
|
||||
|
@ -44,7 +44,7 @@ void Fig_DB_UpdateUnsignedFigureIntoCache (FigCch_FigureCached_t Figure,
|
|||
" (%u,'%s',%ld,%u,'0.0')",
|
||||
(unsigned) Figure,
|
||||
Hie_GetDBStrFromLevel (Level),
|
||||
Cod,
|
||||
HieCod,
|
||||
Value);
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ void Fig_DB_UpdateUnsignedFigureIntoCache (FigCch_FigureCached_t Figure,
|
|||
/*****************************************************************************/
|
||||
|
||||
void Fig_DB_UpdateDoubleFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
double Value)
|
||||
{
|
||||
Str_SetDecimalPointToUS (); // To write the decimal point as a dot
|
||||
|
@ -64,7 +64,7 @@ void Fig_DB_UpdateDoubleFigureIntoCache (FigCch_FigureCached_t Figure,
|
|||
" (%u,'%s',%ld,0,'%.15lg')",
|
||||
(unsigned) Figure,
|
||||
Hie_GetDBStrFromLevel (Level),
|
||||
Cod,
|
||||
HieCod,
|
||||
Value);
|
||||
Str_SetDecimalPointToLocal (); // Return to local system
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ void Fig_DB_UpdateDoubleFigureIntoCache (FigCch_FigureCached_t Figure,
|
|||
|
||||
unsigned Fig_DB_GetFigureFromCache (MYSQL_RES **mysql_res,
|
||||
FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
FigCch_Type_t Type,time_t TimeCached)
|
||||
{
|
||||
static const char *Field[FigCch_NUM_TYPES] =
|
||||
|
@ -93,6 +93,6 @@ unsigned Fig_DB_GetFigureFromCache (MYSQL_RES **mysql_res,
|
|||
" AND Cod=%ld"
|
||||
" AND LastUpdate>FROM_UNIXTIME(UNIX_TIMESTAMP()-%lu)",
|
||||
Field[Type],
|
||||
(unsigned) Figure,Hie_GetDBStrFromLevel (Level),Cod,
|
||||
(unsigned) Figure,Hie_GetDBStrFromLevel (Level),HieCod,
|
||||
TimeCached);
|
||||
}
|
||||
|
|
|
@ -37,15 +37,15 @@
|
|||
/*****************************************************************************/
|
||||
|
||||
void Fig_DB_UpdateUnsignedFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
unsigned Value);
|
||||
void Fig_DB_UpdateDoubleFigureIntoCache (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
double Value);
|
||||
|
||||
unsigned Fig_DB_GetFigureFromCache (MYSQL_RES **mysql_res,
|
||||
FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long Cod,
|
||||
HieLvl_Level_t Level,long HieCod,
|
||||
FigCch_Type_t Type,time_t TimeCached);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -291,70 +291,70 @@ struct Globals
|
|||
{
|
||||
struct
|
||||
{
|
||||
long CtyCod;
|
||||
long HieCod;
|
||||
Lan_Language_t Language;
|
||||
char CtyName[Cty_MAX_BYTES_NAME + 1];
|
||||
} CountryName;
|
||||
struct
|
||||
{
|
||||
long InsCod;
|
||||
long HieCod;
|
||||
char ShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1];
|
||||
char CtyName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1];
|
||||
} InstitutionShrtNameAndCty;
|
||||
struct
|
||||
{
|
||||
long InsCod;
|
||||
long HieCod;
|
||||
unsigned NumDpts;
|
||||
} NumDptsInIns;
|
||||
struct
|
||||
{
|
||||
bool Valid;
|
||||
long CtyCod;
|
||||
long HieCod;
|
||||
unsigned NumInss;
|
||||
} NumInssInCty;
|
||||
struct
|
||||
{
|
||||
long CtyCod;
|
||||
long HieCod;
|
||||
unsigned NumCtrs;
|
||||
} NumCtrsInCty;
|
||||
struct
|
||||
{
|
||||
long InsCod;
|
||||
long HieCod;
|
||||
unsigned NumCtrs;
|
||||
} NumCtrsInIns;
|
||||
struct
|
||||
{
|
||||
long CtyCod;
|
||||
long HieCod;
|
||||
unsigned NumDegs;
|
||||
} NumDegsInCty;
|
||||
struct
|
||||
{
|
||||
long InsCod;
|
||||
long HieCod;
|
||||
unsigned NumDegs;
|
||||
} NumDegsInIns;
|
||||
struct
|
||||
{
|
||||
long CtrCod;
|
||||
long HieCod;
|
||||
unsigned NumDegs;
|
||||
} NumDegsInCtr;
|
||||
struct
|
||||
{
|
||||
long CtyCod;
|
||||
long HieCod;
|
||||
unsigned NumCrss;
|
||||
} NumCrssInCty;
|
||||
struct
|
||||
{
|
||||
long InsCod;
|
||||
long HieCod;
|
||||
unsigned NumCrss;
|
||||
} NumCrssInIns;
|
||||
struct
|
||||
{
|
||||
long CtrCod;
|
||||
long HieCod;
|
||||
unsigned NumCrss;
|
||||
} NumCrssInCtr;
|
||||
struct
|
||||
{
|
||||
long DegCod;
|
||||
long HieCod;
|
||||
unsigned NumCrss;
|
||||
} NumCrssInDeg;
|
||||
struct
|
||||
|
@ -369,17 +369,17 @@ struct Globals
|
|||
} NumUsrsWhoClaimToBelongToAnotherCty;
|
||||
struct
|
||||
{
|
||||
long CtyCod;
|
||||
long HieCod;
|
||||
unsigned NumUsrs;
|
||||
} NumUsrsWhoClaimToBelongToCty;
|
||||
struct
|
||||
{
|
||||
long InsCod;
|
||||
long HieCod;
|
||||
unsigned NumUsrs;
|
||||
} NumUsrsWhoClaimToBelongToIns;
|
||||
struct
|
||||
{
|
||||
long CtrCod;
|
||||
long HieCod;
|
||||
unsigned NumUsrs;
|
||||
} NumUsrsWhoClaimToBelongToCtr;
|
||||
struct
|
||||
|
|
|
@ -1296,29 +1296,29 @@ static void Hie_GetAndShowHierarchyTotal (void)
|
|||
switch (Gbl.Scope.Current)
|
||||
{
|
||||
case HieLvl_SYS:
|
||||
NumCtysTotal = Cty_GetCachedNumCtysInSys ();
|
||||
NumInssTotal = Ins_GetCachedNumInssInSys ();
|
||||
NumCtrsTotal = Ctr_GetCachedNumCtrsInSys ();
|
||||
NumDegsTotal = Deg_GetCachedNumDegsInSys ();
|
||||
NumCrssTotal = Crs_GetCachedNumCrssInSys ();
|
||||
NumCtysTotal = Hie_GetCachedNumNodesInSys (FigCch_NUM_CTYS,"cty_countrs");
|
||||
NumInssTotal = Hie_GetCachedNumNodesInSys (FigCch_NUM_INSS,"ins_instits");
|
||||
NumCtrsTotal = Hie_GetCachedNumNodesInSys (FigCch_NUM_CTRS,"ctr_centers");
|
||||
NumDegsTotal = Hie_GetCachedNumNodesInSys (FigCch_NUM_DEGS,"deg_degrees");
|
||||
NumCrssTotal = Hie_GetCachedNumNodesInSys (FigCch_NUM_CRSS,"crs_courses");
|
||||
break;
|
||||
case HieLvl_CTY:
|
||||
NumInssTotal = Ins_GetCachedNumInssInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||
NumCtrsTotal = Ctr_GetCachedNumCtrsInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||
NumDegsTotal = Deg_GetCachedNumDegsInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||
NumCrssTotal = Crs_GetCachedNumCrssInCty (Gbl.Hierarchy.Node[HieLvl_CTY].HieCod);
|
||||
NumInssTotal = Hie_GetCachedNumNodesIn (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);
|
||||
NumDegsTotal = Hie_GetCachedNumNodesIn (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);
|
||||
break;
|
||||
case HieLvl_INS:
|
||||
NumCtrsTotal = Ctr_GetCachedNumCtrsInIns (Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||
NumDegsTotal = Deg_GetCachedNumDegsInIns (Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||
NumCrssTotal = Crs_GetCachedNumCrssInIns (Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||
NumCtrsTotal = Hie_GetCachedNumNodesIn (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);
|
||||
NumCrssTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||
break;
|
||||
case HieLvl_CTR:
|
||||
NumDegsTotal = Deg_GetCachedNumDegsInCtr (Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
|
||||
NumCrssTotal = Crs_GetCachedNumCrssInCtr (Gbl.Hierarchy.Node[HieLvl_CTR].HieCod);
|
||||
NumDegsTotal = Hie_GetCachedNumNodesIn (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);
|
||||
break;
|
||||
case HieLvl_DEG:
|
||||
NumCrssTotal = Crs_GetCachedNumCrssInDeg (Gbl.Hierarchy.Node[HieLvl_DEG].HieCod);
|
||||
NumCrssTotal = Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,HieLvl_DEG,Gbl.Hierarchy.Node[HieLvl_DEG].HieCod);
|
||||
break;
|
||||
case HieLvl_CRS:
|
||||
break;
|
||||
|
@ -1337,6 +1337,64 @@ static void Hie_GetAndShowHierarchyTotal (void)
|
|||
(int) NumCrssTotal);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**** Get total number of courses/degrees/centers/institutions/countries *****/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Hie_GetCachedNumNodesInSys (FigCch_FigureCached_t Figure,
|
||||
const char *Table)
|
||||
{
|
||||
unsigned NumNodes;
|
||||
|
||||
/***** Get number of courses/degrees/centers/institutions/countries from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (Figure,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumNodes))
|
||||
{
|
||||
/***** Get current number of courses/degrees/centers/institutions/countries
|
||||
from database and update cache *****/
|
||||
NumNodes = (unsigned) DB_GetNumRowsTable (Table);
|
||||
FigCch_UpdateFigureIntoCache (Figure,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumNodes);
|
||||
}
|
||||
|
||||
return NumNodes;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**** Get total number of courses/degrees/centers/institutions in country ****/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Hie_GetCachedNumNodesIn (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;
|
||||
|
||||
/***** Get number of nodes from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (Figure,Level,HieCod,
|
||||
FigCch_UNSIGNED,&NumNodes))
|
||||
/***** Get current number of nodes from database and update cache *****/
|
||||
NumNodes = FunctionGetNumNodes[Figure][Level] (HieCod);
|
||||
|
||||
return NumNodes;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/************** Show row with number of elements in hierarchy ****************/
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -71,4 +71,9 @@ bool Hie_CheckIfUsrBelongsTo (HieLvl_Level_t Level,long UsrCod,long HieCod,
|
|||
//-------------------------------- Figures ------------------------------------
|
||||
void Hie_GetAndShowHierarchyStats (void);
|
||||
|
||||
unsigned Hie_GetCachedNumNodesInSys (FigCch_FigureCached_t Figure,
|
||||
const char *Table);
|
||||
unsigned Hie_GetCachedNumNodesIn (FigCch_FigureCached_t Figure,
|
||||
HieLvl_Level_t Level,long HieCod);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -398,19 +398,22 @@ static void Ins_ListOneInstitutionForSeeing (struct Hie_Node *Ins,unsigned NumIn
|
|||
/* Number of centers in this institution */
|
||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Ctr_GetCachedNumCtrsInIns (Ins->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
||||
HieLvl_INS,Ins->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of degrees in this institution */
|
||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInIns (Ins->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_INS,Ins->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of courses in this institution */
|
||||
HTM_TD_Begin ("class=\"RM %s_%s %s\"",
|
||||
TxtClassNormal,The_GetSuffix (),BgColor);
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInIns (Ins->HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_INS,Ins->HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
/* Number of departments in this institution */
|
||||
|
@ -736,7 +739,7 @@ static void Ins_GetInstitDataFromRow (MYSQL_RES *mysql_res,
|
|||
|
||||
void Ins_FlushCacheFullNameAndCtyOfInstitution (void)
|
||||
{
|
||||
Gbl.Cache.InstitutionShrtNameAndCty.InsCod = -1L;
|
||||
Gbl.Cache.InstitutionShrtNameAndCty.HieCod = -1L;
|
||||
Gbl.Cache.InstitutionShrtNameAndCty.ShrtName[0] = '\0';
|
||||
Gbl.Cache.InstitutionShrtNameAndCty.CtyName[0] = '\0';
|
||||
}
|
||||
|
@ -756,7 +759,7 @@ void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins,
|
|||
}
|
||||
|
||||
/***** 2. Fast check: If cached... *****/
|
||||
if (Ins->HieCod == Gbl.Cache.InstitutionShrtNameAndCty.InsCod)
|
||||
if (Ins->HieCod == Gbl.Cache.InstitutionShrtNameAndCty.HieCod)
|
||||
{
|
||||
Str_Copy (Ins->ShrtName,Gbl.Cache.InstitutionShrtNameAndCty.ShrtName,
|
||||
sizeof (Ins->ShrtName) - 1);
|
||||
|
@ -766,7 +769,7 @@ void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins,
|
|||
}
|
||||
|
||||
/***** 3. Slow: get short name and country of institution from database *****/
|
||||
Gbl.Cache.InstitutionShrtNameAndCty.InsCod = Ins->HieCod;
|
||||
Gbl.Cache.InstitutionShrtNameAndCty.HieCod = Ins->HieCod;
|
||||
|
||||
if (Ins_DB_GetInsShrtNameAndCty (&mysql_res,Ins->HieCod) == 1)
|
||||
{
|
||||
|
@ -1548,27 +1551,6 @@ static void Ins_ReceiveFormRequestOrCreateIns (Hie_Status_t Status)
|
|||
Ale_CreateAlertYouMustSpecifyTheShortNameAndTheFullName ();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/********************* Get total number of institutions **********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
unsigned Ins_GetCachedNumInssInSys (void)
|
||||
{
|
||||
unsigned NumInss;
|
||||
|
||||
/***** Get number of institutions from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_INSS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumInss))
|
||||
{
|
||||
/***** Get current number of institutions from database and update cache *****/
|
||||
NumInss = (unsigned) DB_GetNumRowsTable ("ins_instits");
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS,HieLvl_SYS,-1L,
|
||||
FigCch_UNSIGNED,&NumInss);
|
||||
}
|
||||
|
||||
return NumInss;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************** Get number of institutions in a country ********************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1582,31 +1564,18 @@ unsigned Ins_GetNumInssInCty (long CtyCod)
|
|||
{
|
||||
/***** 1. Fast check: If cached... *****/
|
||||
if (Gbl.Cache.NumInssInCty.Valid &&
|
||||
CtyCod == Gbl.Cache.NumInssInCty.CtyCod)
|
||||
CtyCod == Gbl.Cache.NumInssInCty.HieCod)
|
||||
return Gbl.Cache.NumInssInCty.NumInss;
|
||||
|
||||
/***** 2. Slow: number of institutions in a country from database *****/
|
||||
Gbl.Cache.NumInssInCty.CtyCod = CtyCod;
|
||||
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.CtyCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_INSS,HieLvl_CTY,Gbl.Cache.NumInssInCty.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumInssInCty.NumInss);
|
||||
return Gbl.Cache.NumInssInCty.NumInss;
|
||||
}
|
||||
|
||||
unsigned Ins_GetCachedNumInssInCty (long CtyCod)
|
||||
{
|
||||
unsigned NumInss;
|
||||
|
||||
/***** Get number of institutions from cache *****/
|
||||
if (!FigCch_GetFigureFromCache (FigCch_NUM_INSS,HieLvl_CTY,CtyCod,
|
||||
FigCch_UNSIGNED,&NumInss))
|
||||
/***** Get current number of institutions from database and update cache *****/
|
||||
NumInss = Ins_GetNumInssInCty (CtyCod);
|
||||
|
||||
return NumInss;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/***************** Get number of institutions with centers *******************/
|
||||
/*****************************************************************************/
|
||||
|
@ -1886,7 +1855,7 @@ bool Ins_CheckIfIBelongToIns (long InsCod)
|
|||
|
||||
void Ins_FlushCacheNumUsrsWhoClaimToBelongToIns (void)
|
||||
{
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToIns.InsCod = -1L;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToIns.HieCod = -1L;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToIns.NumUsrs = 0;
|
||||
}
|
||||
|
||||
|
@ -1901,7 +1870,7 @@ unsigned Ins_GetNumUsrsWhoClaimToBelongToIns (struct Hie_Node *Ins)
|
|||
return Ins->NumUsrsWhoClaimToBelong.NumUsrs;
|
||||
|
||||
/***** 3. Fast check: If cached... *****/
|
||||
if (Ins->HieCod == Gbl.Cache.NumUsrsWhoClaimToBelongToIns.InsCod)
|
||||
if (Ins->HieCod == Gbl.Cache.NumUsrsWhoClaimToBelongToIns.HieCod)
|
||||
{
|
||||
Ins->NumUsrsWhoClaimToBelong.NumUsrs = Gbl.Cache.NumUsrsWhoClaimToBelongToIns.NumUsrs;
|
||||
Ins->NumUsrsWhoClaimToBelong.Valid = true;
|
||||
|
@ -1910,11 +1879,11 @@ unsigned Ins_GetNumUsrsWhoClaimToBelongToIns (struct Hie_Node *Ins)
|
|||
|
||||
/***** 4. Slow: number of users who claim to belong to an institution
|
||||
from database *****/
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToIns.InsCod = Ins->HieCod;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToIns.HieCod = Ins->HieCod;
|
||||
Gbl.Cache.NumUsrsWhoClaimToBelongToIns.NumUsrs =
|
||||
Ins->NumUsrsWhoClaimToBelong.NumUsrs = Ins_DB_GetNumUsrsWhoClaimToBelongToIns (Ins->HieCod);
|
||||
Ins->NumUsrsWhoClaimToBelong.Valid = true;
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_INS,HieLvl_INS,Gbl.Cache.NumUsrsWhoClaimToBelongToIns.InsCod,
|
||||
FigCch_UpdateFigureIntoCache (FigCch_NUM_USRS_BELONG_INS,HieLvl_INS,Gbl.Cache.NumUsrsWhoClaimToBelongToIns.HieCod,
|
||||
FigCch_UNSIGNED,&Gbl.Cache.NumUsrsWhoClaimToBelongToIns.NumUsrs);
|
||||
return Ins->NumUsrsWhoClaimToBelong.NumUsrs;
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
#include "swad_center.h"
|
||||
#include "swad_constant.h"
|
||||
#include "swad_figure_cache.h"
|
||||
#include "swad_role_type.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -71,11 +72,8 @@ void Ins_ContEditAfterChgIns (void);
|
|||
void Ins_ReceiveFormReqIns (void);
|
||||
void Ins_ReceiveFormNewIns (void);
|
||||
|
||||
unsigned Ins_GetCachedNumInssInSys (void);
|
||||
|
||||
void Ins_FlushCacheNumInssInCty (void);
|
||||
unsigned Ins_GetNumInssInCty (long CtyCod);
|
||||
unsigned Ins_GetCachedNumInssInCty (long CtyCod);
|
||||
|
||||
unsigned Ins_GetCachedNumInssWithCtrs (void);
|
||||
unsigned Ins_GetCachedNumInssWithDegs (void);
|
||||
|
|
|
@ -160,7 +160,8 @@ static void InsCfg_Configuration (bool PrintView)
|
|||
InsCfg_QR ();
|
||||
else
|
||||
{
|
||||
NumCtrs = Ctr_GetCachedNumCtrsInIns (Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||
NumCtrs = Hie_GetCachedNumNodesIn (FigCch_NUM_CTRS,
|
||||
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod);
|
||||
|
||||
/***** Number of users who claim to belong to this institution,
|
||||
number of centers,
|
||||
|
@ -448,7 +449,8 @@ static void InsCfg_NumDegs (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInIns (Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_DEGS,
|
||||
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -470,7 +472,8 @@ static void InsCfg_NumCrss (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInIns (Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesIn (FigCch_NUM_CRSS,
|
||||
HieLvl_INS,Gbl.Hierarchy.Node[HieLvl_INS].HieCod));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
|
@ -126,7 +126,7 @@ static void SysCfg_Configuration (bool PrintView)
|
|||
else
|
||||
{
|
||||
/***** Get number of centers *****/
|
||||
NumCtrs = Ctr_GetCachedNumCtrsInSys ();
|
||||
NumCtrs = Hie_GetCachedNumNodesInSys (FigCch_NUM_CTRS,"ctr_centers");
|
||||
|
||||
/***** Number of countries,
|
||||
number of institutions,
|
||||
|
@ -309,7 +309,7 @@ static void SysCfg_NumCtys (void)
|
|||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
Frm_BeginFormGoTo (ActSeeCty);
|
||||
HTM_BUTTON_Submit_Begin (Txt_Countries,"class=\"LB BT_LINK\"");
|
||||
HTM_Unsigned (Cty_GetCachedNumCtysInSys ());
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesInSys (FigCch_NUM_CTYS,"cty_countrs"));
|
||||
HTM_BUTTON_End ();
|
||||
Frm_EndForm ();
|
||||
HTM_TD_End ();
|
||||
|
@ -333,7 +333,7 @@ static void SysCfg_NumInss (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Ins_GetCachedNumInssInSys ());
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesInSys (FigCch_NUM_INSS,"ins_instits"));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -355,7 +355,7 @@ static void SysCfg_NumDegs (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Deg_GetCachedNumDegsInSys ());
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesInSys (FigCch_NUM_DEGS,"deg_degrees"));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
@ -377,7 +377,7 @@ static void SysCfg_NumCrss (void)
|
|||
|
||||
/* Data */
|
||||
HTM_TD_Begin ("class=\"LB DAT_%s\"",The_GetSuffix ());
|
||||
HTM_Unsigned (Crs_GetCachedNumCrssInSys ());
|
||||
HTM_Unsigned (Hie_GetCachedNumNodesInSys (FigCch_NUM_CRSS,"crs_courses"));
|
||||
HTM_TD_End ();
|
||||
|
||||
HTM_TR_End ();
|
||||
|
|
Loading…
Reference in New Issue