From e1ff9a8e0b00594e6678f60727d0ae7f872b9f6b Mon Sep 17 00:00:00 2001 From: acanas Date: Mon, 13 Apr 2020 21:26:47 +0200 Subject: [PATCH] Version19.182 --- swad_centre.c | 46 ++++++++++--------- swad_centre_config.c | 20 +++++---- swad_changelog.h | 3 +- swad_department.c | 34 +++++++------- swad_department.h | 2 - swad_global.c | 5 --- swad_global.h | 6 --- swad_holiday.c | 39 +++++++++------- swad_place.c | 105 +++++++++++++++++++++++++------------------ swad_place.h | 17 +++++-- 10 files changed, 150 insertions(+), 127 deletions(-) diff --git a/swad_centre.c b/swad_centre.c index 7d57a0c2..4a6da5ce 100644 --- a/swad_centre.c +++ b/swad_centre.c @@ -74,7 +74,7 @@ static void Ctr_PutIconsEditingCentres (__attribute__((unused)) void *Args); static void Ctr_GetDataOfCentreFromRow (struct Centre *Ctr,MYSQL_ROW row); -static void Ctr_ListCentresForEdition (void); +static void Ctr_ListCentresForEdition (const struct Plc_Places *Places); static bool Ctr_CheckIfICanEditACentre (struct Centre *Ctr); static Ctr_StatusTxt_t Ctr_GetStatusTxtFromStatusBits (Ctr_Status_t Status); static Ctr_Status_t Ctr_GetStatusBitsFromStatusTxt (Ctr_StatusTxt_t StatusTxt); @@ -86,7 +86,7 @@ static void Ctr_UpdateInsNameDB (long CtrCod,const char *FieldName,const char *N static void Ctr_ShowAlertAndButtonToGoToCtr (void); static void Ctr_PutParamGoToCtr (void *CtrCod); -static void Ctr_PutFormToCreateCentre (void); +static void Ctr_PutFormToCreateCentre (const struct Plc_Places *Places); static void Ctr_PutHeadCentresForSeeing (bool OrderSelectable); static void Ctr_PutHeadCentresForEdition (void); static void Ctr_RecFormRequestOrCreateCtr (unsigned Status); @@ -351,7 +351,7 @@ static void Ctr_PutIconToEditCentres (void) static void Ctr_ListOneCentreForSeeing (struct Centre *Ctr,unsigned NumCtr) { extern const char *Txt_CENTRE_STATUS[Ctr_NUM_STATUS_TXT]; - struct Place Plc; + struct Plc_Place Plc; const char *TxtClassNormal; const char *TxtClassStrong; const char *BgColor; @@ -460,10 +460,14 @@ static void Ctr_EditCentresInternal (void) { extern const char *Hlp_INSTITUTION_Centres; extern const char *Txt_Centres_of_INSTITUTION_X; + struct Plc_Places Places; + + /***** Reset places context *****/ + Plc_ResetPlaces (&Places); /***** Get list of places *****/ - Gbl.Plcs.SelectedOrder = Plc_ORDER_BY_PLACE; - Plc_GetListPlaces (); + Places.SelectedOrder = Plc_ORDER_BY_PLACE; + Plc_GetListPlaces (&Places); /***** Get list of centres *****/ Gbl.Hierarchy.Ctrs.SelectedOrder = Ctr_ORDER_BY_CENTRE; @@ -480,11 +484,11 @@ static void Ctr_EditCentresInternal (void) Str_FreeString (); /***** Put a form to create a new centre *****/ - Ctr_PutFormToCreateCentre (); + Ctr_PutFormToCreateCentre (&Places); /***** List current centres *****/ if (Gbl.Hierarchy.Ctrs.Num) - Ctr_ListCentresForEdition (); + Ctr_ListCentresForEdition (&Places); /***** End box *****/ Box_BoxEnd (); @@ -493,7 +497,7 @@ static void Ctr_EditCentresInternal (void) Ctr_FreeListCentres (); /***** Free list of places *****/ - Plc_FreeListPlaces (); + Plc_FreeListPlaces (&Places); } /*****************************************************************************/ @@ -920,7 +924,7 @@ void Ctr_WriteSelectorOfCentre (void) /*************************** List all the centres ****************************/ /*****************************************************************************/ -static void Ctr_ListCentresForEdition (void) +static void Ctr_ListCentresForEdition (const struct Plc_Places *Places) { extern const char *Txt_Another_place; extern const char *Txt_CENTRE_STATUS[Ctr_NUM_STATUS_TXT]; @@ -995,20 +999,20 @@ static void Ctr_ListCentresForEdition (void) Ctr->PlcCod == 0,false, "%s",Txt_Another_place); for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places->Num; NumPlc++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Plcs.Lst[NumPlc].PlcCod, - Gbl.Plcs.Lst[NumPlc].PlcCod == Ctr->PlcCod,false, - "%s",Gbl.Plcs.Lst[NumPlc].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Places->Lst[NumPlc].PlcCod, + Places->Lst[NumPlc].PlcCod == Ctr->PlcCod,false, + "%s",Places->Lst[NumPlc].ShrtName); HTM_SELECT_End (); Frm_EndForm (); } else for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places->Num; NumPlc++) - if (Gbl.Plcs.Lst[NumPlc].PlcCod == Ctr->PlcCod) - HTM_Txt (Gbl.Plcs.Lst[NumPlc].ShrtName); + if (Places->Lst[NumPlc].PlcCod == Ctr->PlcCod) + HTM_Txt (Places->Lst[NumPlc].ShrtName); HTM_TD_End (); /* Centre short name */ @@ -1588,7 +1592,7 @@ static void Ctr_PutParamGoToCtr (void *CtrCod) /********************* Put a form to create a new centre *********************/ /*****************************************************************************/ -static void Ctr_PutFormToCreateCentre (void) +static void Ctr_PutFormToCreateCentre (const struct Plc_Places *Places) { extern const char *Txt_New_centre; extern const char *Txt_Another_place; @@ -1634,11 +1638,11 @@ static void Ctr_PutFormToCreateCentre (void) Ctr_EditingCtr->PlcCod == 0,false, "%s",Txt_Another_place); for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places->Num; NumPlc++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Plcs.Lst[NumPlc].PlcCod, - Gbl.Plcs.Lst[NumPlc].PlcCod == Ctr_EditingCtr->PlcCod,false, - "%s",Gbl.Plcs.Lst[NumPlc].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Places->Lst[NumPlc].PlcCod, + Places->Lst[NumPlc].PlcCod == Ctr_EditingCtr->PlcCod,false, + "%s",Places->Lst[NumPlc].ShrtName); HTM_SELECT_End (); HTM_TD_End (); diff --git a/swad_centre_config.c b/swad_centre_config.c index 354a85f6..36f4246c 100644 --- a/swad_centre_config.c +++ b/swad_centre_config.c @@ -648,9 +648,13 @@ static void CtrCfg_Place (bool PutForm) { extern const char *Txt_Place; extern const char *Txt_Another_place; - struct Place Plc; + struct Plc_Places Places; + struct Plc_Place Plc; unsigned NumPlc; + /***** Reset places context *****/ + Plc_ResetPlaces (&Places); + /***** Get data of place *****/ Plc.PlcCod = Gbl.Hierarchy.Ctr.PlcCod; Plc_GetDataOfPlaceByCod (&Plc); @@ -668,8 +672,8 @@ static void CtrCfg_Place (bool PutForm) if (PutForm) { /* Get list of places of the current institution */ - Gbl.Plcs.SelectedOrder = Plc_ORDER_BY_PLACE; - Plc_GetListPlaces (); + Places.SelectedOrder = Plc_ORDER_BY_PLACE; + Plc_GetListPlaces (&Places); /* Put form to select place */ Frm_StartForm (ActChgCtrPlcCfg); @@ -679,16 +683,16 @@ static void CtrCfg_Place (bool PutForm) Gbl.Hierarchy.Ctr.PlcCod == 0,false, "%s",Txt_Another_place); for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places.Num; NumPlc++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Plcs.Lst[NumPlc].PlcCod, - Gbl.Plcs.Lst[NumPlc].PlcCod == Gbl.Hierarchy.Ctr.PlcCod,false, - "%s",Gbl.Plcs.Lst[NumPlc].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Places.Lst[NumPlc].PlcCod, + Places.Lst[NumPlc].PlcCod == Gbl.Hierarchy.Ctr.PlcCod,false, + "%s",Places.Lst[NumPlc].ShrtName); HTM_SELECT_End (); Frm_EndForm (); /* Free list of places */ - Plc_FreeListPlaces (); + Plc_FreeListPlaces (&Places); } else // I can not change centre place HTM_Txt (Plc.FullName); diff --git a/swad_changelog.h b/swad_changelog.h index 662b955c..ce6fe876 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -497,7 +497,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - * En OpenSWAD: ps2pdf source.ps destination.pdf */ -#define Log_PLATFORM_VERSION "SWAD 19.181 (2020-04-13)" +#define Log_PLATFORM_VERSION "SWAD 19.182 (2020-04-13)" #define CSS_FILE "swad19.146.css" #define JS_FILE "swad19.172.1.js" /* @@ -548,6 +548,7 @@ Funci // TODO: Oresti Baños: cambiar ojos por candados en descriptores para prohibir/permitir y dejar los ojos para poder elegir descriptores // TODO: Integrar pull requests con traducciones del alemán del usuario eruedin en GitHub + Version 19.182: Apr 13, 2020 Code refactoring in places. (285685 lines) Version 19.181: Apr 13, 2020 Code refactoring in departments. (285667 lines) Version 19.180.5: Apr 13, 2020 Fixed bug in statistics. (285637 lines) Version 19.180.4: Apr 13, 2020 Fixed bug in attendance. diff --git a/swad_department.c b/swad_department.c index beb03393..e336b740 100644 --- a/swad_department.c +++ b/swad_department.c @@ -66,9 +66,11 @@ static struct Dpt_Department *Dpt_EditingDpt = NULL; // Static variable to keep /***************************** Private prototypes ****************************/ /*****************************************************************************/ +static void Dpt_ResetDepartments (struct Dpt_Departments *Departments); + static Dpt_Order_t Dpt_GetParamDptOrder (void); static void Dpt_PutIconToEditDpts (__attribute__((unused)) void *Args); -static void Dpt_EditDepartmentsInternal (struct Dpt_Departments *Departments); +static void Dpt_EditDepartmentsInternal (void); static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long InsCod); @@ -90,7 +92,7 @@ static void Dpt_EditingDepartmentDestructor (void); /************************* Reset departments context *************************/ /*****************************************************************************/ -void Dpt_ResetDepartments (struct Dpt_Departments *Departments) +static void Dpt_ResetDepartments (struct Dpt_Departments *Departments) { Departments->Num = 0; Departments->Lst = NULL; @@ -259,35 +261,34 @@ static void Dpt_PutIconToEditDpts (__attribute__((unused)) void *Args) void Dpt_EditDepartments (void) { - struct Dpt_Departments Departments; - - /***** Reset departments context *****/ - Dpt_ResetDepartments (&Departments); - /***** Department constructor *****/ Dpt_EditingDepartmentConstructor (); /***** Edit departments *****/ - Dpt_EditDepartmentsInternal (&Departments); + Dpt_EditDepartmentsInternal (); /***** Department destructor *****/ Dpt_EditingDepartmentDestructor (); } -static void Dpt_EditDepartmentsInternal (struct Dpt_Departments *Departments) +static void Dpt_EditDepartmentsInternal (void) { extern const char *Hlp_INSTITUTION_Departments_edit; extern const char *Txt_Departments_of_INSTITUTION_X; + struct Dpt_Departments Departments; /***** Trivial check *****/ if (Gbl.Hierarchy.Ins.InsCod <= 0) // An institution must be selected return; + /***** Reset departments context *****/ + Dpt_ResetDepartments (&Departments); + /***** Get list of institutions *****/ Ins_GetBasicListOfInstitutions (Gbl.Hierarchy.Cty.CtyCod); /***** Get list of departments *****/ - Dpt_GetListDepartments (Departments,Gbl.Hierarchy.Ins.InsCod); + Dpt_GetListDepartments (&Departments,Gbl.Hierarchy.Ins.InsCod); /***** Begin box *****/ Box_BoxBegin (NULL,Str_BuildStringStr (Txt_Departments_of_INSTITUTION_X, @@ -300,14 +301,14 @@ static void Dpt_EditDepartmentsInternal (struct Dpt_Departments *Departments) Dpt_PutFormToCreateDepartment (); /***** Forms to edit current departments *****/ - if (Departments->Num) - Dpt_ListDepartmentsForEdition (Departments); + if (Departments.Num) + Dpt_ListDepartmentsForEdition (&Departments); /***** End box *****/ Box_BoxEnd (); /***** Free list of departments *****/ - Dpt_FreeListDepartments (Departments); + Dpt_FreeListDepartments (&Departments); /***** Free list of institutions *****/ Ins_FreeListInstitutions (); @@ -896,16 +897,11 @@ void Dpt_ChangeDptWWW (void) void Dpt_ContEditAfterChgDpt (void) { - struct Dpt_Departments Departments; - - /***** Reset departments context *****/ - Dpt_ResetDepartments (&Departments); - /***** Write message to show the change made *****/ Ale_ShowAlerts (NULL); /***** Show the form again *****/ - Dpt_EditDepartmentsInternal (&Departments); + Dpt_EditDepartmentsInternal (); /***** Department destructor *****/ Dpt_EditingDepartmentDestructor (); diff --git a/swad_department.h b/swad_department.h index 0fc1ea0c..b6c46f9e 100644 --- a/swad_department.h +++ b/swad_department.h @@ -64,8 +64,6 @@ struct Dpt_Departments /***************************** Public prototypes *****************************/ /*****************************************************************************/ -void Dpt_ResetDepartments (struct Dpt_Departments *Departments); - void Dpt_SeeDepts (void); void Dpt_EditDepartments (void); void Dpt_FreeListDepartments (struct Dpt_Departments *Departments); diff --git a/swad_global.c b/swad_global.c index 92d181e9..2734deb2 100644 --- a/swad_global.c +++ b/swad_global.c @@ -236,10 +236,6 @@ void Gbl_InitializeGlobals (void) Gbl.Hierarchy.Crs.ShrtName[0] = Gbl.Hierarchy.Crs.FullName[0] = '\0'; - Gbl.Plcs.Num = 0; - Gbl.Plcs.Lst = NULL; - Gbl.Plcs.SelectedOrder = Plc_ORDER_DEFAULT; - Gbl.Hlds.LstIsRead = false; // List is not read Gbl.Hlds.Num = 0; Gbl.Hlds.Lst = NULL; @@ -384,7 +380,6 @@ void Gbl_Cleanup (void) Ins_FreeListInstitutions (); Ctr_FreeListCentres (); Cty_FreeListCountries (); - Plc_FreeListPlaces (); Hld_FreeListHolidays (); Lnk_FreeListLinks (); Plg_FreeListPlugins (); diff --git a/swad_global.h b/swad_global.h index b56ce0bd..02c7d22e 100644 --- a/swad_global.h +++ b/swad_global.h @@ -226,12 +226,6 @@ struct Globals unsigned Num; // Number of degree types struct DegreeType *Lst; // List of degree types } DegTypes; - struct - { - unsigned Num; // Number of places - struct Place *Lst; // List of places - Plc_Order_t SelectedOrder; - } Plcs; struct { unsigned Num; // Number of classrooms diff --git a/swad_holiday.c b/swad_holiday.c index 44310218..dfe1479e 100644 --- a/swad_holiday.c +++ b/swad_holiday.c @@ -72,10 +72,10 @@ static void Hld_GetDataOfHolidayByCod (struct Holiday *Hld); static Hld_HolidayType_t Hld_GetParamHldType (void); static Hld_HolidayType_t Hld_GetTypeOfHoliday (const char *UnsignedStr); -static void Hld_ListHolidaysForEdition (void); +static void Hld_ListHolidaysForEdition (const struct Plc_Places *Places); static void Hld_PutParamHldCod (long HldCod); static void Hld_ChangeDate (Hld_StartOrEndDate_t StartOrEndDate); -static void Hld_PutFormToCreateHoliday (void); +static void Hld_PutFormToCreateHoliday (const struct Plc_Places *Places); static void Hld_PutHeadHolidays (void); static void Hld_CreateHoliday (struct Holiday *Hld); @@ -264,24 +264,29 @@ void Hld_EditHolidays (void) static void Hld_EditHolidaysInternal (void) { + struct Plc_Places Places; + + /***** Reset places context *****/ + Plc_ResetPlaces (&Places); + /***** Get list of places *****/ - Plc_GetListPlaces (); + Plc_GetListPlaces (&Places); /***** Get list of holidays *****/ Hld_GetListHolidays (); /***** Put a form to create a new holiday *****/ - Hld_PutFormToCreateHoliday (); + Hld_PutFormToCreateHoliday (&Places); /***** Forms to edit current holidays *****/ if (Gbl.Hlds.Num) - Hld_ListHolidaysForEdition (); + Hld_ListHolidaysForEdition (&Places); /***** Free list of holidays *****/ Hld_FreeListHolidays (); /***** Free list of places *****/ - Plc_FreeListPlaces (); + Plc_FreeListPlaces (&Places); } /*****************************************************************************/ @@ -543,7 +548,7 @@ void Hld_FreeListHolidays (void) /********************* List all the holidays for edition *********************/ /*****************************************************************************/ -static void Hld_ListHolidaysForEdition (void) +static void Hld_ListHolidaysForEdition (const struct Plc_Places *Places) { extern const char *Hlp_INSTITUTION_Holidays_edit; extern const char *Txt_Holidays; @@ -594,11 +599,11 @@ static void Hld_ListHolidaysForEdition (void) HTM_OPTION (HTM_Type_STRING,"-1",Hld->PlcCod <= 0,false, "%s",Txt_All_places); for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places->Num; NumPlc++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Plcs.Lst[NumPlc].PlcCod, - Gbl.Plcs.Lst[NumPlc].PlcCod == Hld->PlcCod,false, - "%s",Gbl.Plcs.Lst[NumPlc].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Places->Lst[NumPlc].PlcCod, + Places->Lst[NumPlc].PlcCod == Hld->PlcCod,false, + "%s",Places->Lst[NumPlc].ShrtName); HTM_SELECT_End (); Frm_EndForm (); HTM_TD_End (); @@ -716,7 +721,7 @@ void Hld_RemoveHoliday (void) void Hld_ChangeHolidayPlace (void) { extern const char *Txt_The_place_of_the_holiday_X_has_changed_to_Y; - struct Place NewPlace; + struct Plc_Place NewPlace; /***** Holiday constructor *****/ Hld_EditingHolidayConstructor (); @@ -946,7 +951,7 @@ void Hld_ContEditAfterChgHld (void) /********************* Put a form to create a new holiday ********************/ /*****************************************************************************/ -static void Hld_PutFormToCreateHoliday (void) +static void Hld_PutFormToCreateHoliday (const struct Plc_Places *Places) { extern const char *Hlp_INSTITUTION_Holidays_edit; extern const char *Txt_All_places; @@ -989,11 +994,11 @@ static void Hld_PutFormToCreateHoliday (void) HTM_OPTION (HTM_Type_STRING,"-1",Hld_EditingHld->PlcCod <= 0,false, "%s",Txt_All_places); for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places->Num; NumPlc++) - HTM_OPTION (HTM_Type_LONG,&Gbl.Plcs.Lst[NumPlc].PlcCod, - Gbl.Plcs.Lst[NumPlc].PlcCod == Hld_EditingHld->PlcCod,false, - "%s",Gbl.Plcs.Lst[NumPlc].ShrtName); + HTM_OPTION (HTM_Type_LONG,&Places->Lst[NumPlc].PlcCod, + Places->Lst[NumPlc].PlcCod == Hld_EditingHld->PlcCod,false, + "%s",Places->Lst[NumPlc].ShrtName); HTM_SELECT_End (); HTM_TD_End (); diff --git a/swad_place.c b/swad_place.c index 4878c9ad..e95e5649 100644 --- a/swad_place.c +++ b/swad_place.c @@ -57,20 +57,20 @@ extern struct Globals Gbl; /***************************** Private variables *****************************/ /*****************************************************************************/ -static struct Place *Plc_EditingPlc = NULL; // Static variable to keep the place being edited +static struct Plc_Place *Plc_EditingPlc = NULL; // Static variable to keep the place being edited /*****************************************************************************/ /***************************** Private prototypes ****************************/ /*****************************************************************************/ -static void Plc_GetParamPlcOrder (void); +static Plc_Order_t Plc_GetParamPlcOrder (void); static bool Plc_CheckIfICanCreatePlaces (void); static void Plc_PutIconsListingPlaces (__attribute__((unused)) void *Args); static void Plc_PutIconToEditPlaces (void); static void Plc_EditPlacesInternal (void); static void Plc_PutIconsEditingPlaces (__attribute__((unused)) void *Args); -static void Plc_ListPlacesForEdition (void); +static void Plc_ListPlacesForEdition (const struct Plc_Places *Places); static void Plc_PutParamPlcCod (long PlcCod); static void Plc_RenamePlace (Cns_ShrtOrFullName_t ShrtOrFullName); @@ -79,11 +79,22 @@ static void Plc_UpdatePlcNameDB (long PlcCod,const char *FieldName,const char *N static void Plc_PutFormToCreatePlace (void); static void Plc_PutHeadPlaces (void); -static void Plc_CreatePlace (struct Place *Plc); +static void Plc_CreatePlace (struct Plc_Place *Plc); static void Plc_EditingPlaceConstructor (void); static void Plc_EditingPlaceDestructor (void); +/*****************************************************************************/ +/**************************** Reset places context ***************************/ +/*****************************************************************************/ + +void Plc_ResetPlaces (struct Plc_Places *Places) + { + Places->Num = 0; + Places->Lst = NULL; + Places->SelectedOrder = Plc_ORDER_DEFAULT; + } + /*****************************************************************************/ /*************************** List all the places *****************************/ /*****************************************************************************/ @@ -97,6 +108,7 @@ void Plc_SeePlaces (void) extern const char *Txt_Other_places; extern const char *Txt_Place_unspecified; extern const char *Txt_New_place; + struct Plc_Places Places; Plc_Order_t Order; unsigned NumPlc; unsigned NumCtrsWithPlc = 0; @@ -104,11 +116,14 @@ void Plc_SeePlaces (void) if (Gbl.Hierarchy.Ins.InsCod > 0) { + /***** Reset places context *****/ + Plc_ResetPlaces (&Places); + /***** Get parameter with the type of order in the list of places *****/ - Plc_GetParamPlcOrder (); + Places.SelectedOrder = Plc_GetParamPlcOrder (); /***** Get list of places *****/ - Plc_GetListPlaces (); + Plc_GetListPlaces (&Places); /***** Table head *****/ Box_BoxBegin (NULL,Txt_Places, @@ -125,10 +140,10 @@ void Plc_SeePlaces (void) Frm_StartForm (ActSeePlc); Par_PutHiddenParamUnsigned (NULL,"Order",(unsigned) Order); HTM_BUTTON_SUBMIT_Begin (Txt_PLACES_HELP_ORDER[Order],"BT_LINK TIT_TBL",NULL); - if (Order == Gbl.Plcs.SelectedOrder) + if (Order == Places.SelectedOrder) HTM_U_Begin (); HTM_Txt (Txt_PLACES_ORDER[Order]); - if (Order == Gbl.Plcs.SelectedOrder) + if (Order == Places.SelectedOrder) HTM_U_End (); HTM_BUTTON_End (); Frm_EndForm (); @@ -139,22 +154,22 @@ void Plc_SeePlaces (void) /***** Write all places and their nuber of centres *****/ for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places.Num; NumPlc++) { /* Write data of this place */ HTM_TR_Begin (NULL); HTM_TD_Begin ("class=\"DAT LM\""); - HTM_Txt (Gbl.Plcs.Lst[NumPlc].FullName); + HTM_Txt (Places.Lst[NumPlc].FullName); HTM_TD_End (); HTM_TD_Begin ("class=\"DAT RM\""); - HTM_Unsigned (Gbl.Plcs.Lst[NumPlc].NumCtrs); + HTM_Unsigned (Places.Lst[NumPlc].NumCtrs); HTM_TD_End (); HTM_TR_End (); - NumCtrsWithPlc += Gbl.Plcs.Lst[NumPlc].NumCtrs; + NumCtrsWithPlc += Places.Lst[NumPlc].NumCtrs; } /***** Separation row *****/ @@ -208,7 +223,7 @@ void Plc_SeePlaces (void) Box_BoxEnd (); /***** Free list of places *****/ - Plc_FreeListPlaces (); + Plc_FreeListPlaces (&Places); } } @@ -216,13 +231,12 @@ void Plc_SeePlaces (void) /********** Get parameter with the type or order in list of places ***********/ /*****************************************************************************/ -static void Plc_GetParamPlcOrder (void) +static Plc_Order_t Plc_GetParamPlcOrder (void) { - Gbl.Plcs.SelectedOrder = (Plc_Order_t) - Par_GetParToUnsignedLong ("Order", - 0, - Plc_NUM_ORDERS - 1, - (unsigned long) Plc_ORDER_DEFAULT); + return (Plc_Order_t) Par_GetParToUnsignedLong ("Order", + 0, + Plc_NUM_ORDERS - 1, + (unsigned long) Plc_ORDER_DEFAULT); } /*****************************************************************************/ @@ -278,9 +292,13 @@ static void Plc_EditPlacesInternal (void) { extern const char *Hlp_INSTITUTION_Places_edit; extern const char *Txt_Places; + struct Plc_Places Places; + + /***** Reset places context *****/ + Plc_ResetPlaces (&Places); /***** Get list of places *****/ - Plc_GetListPlaces (); + Plc_GetListPlaces (&Places); /***** Begin box *****/ Box_BoxBegin (NULL,Txt_Places, @@ -291,17 +309,16 @@ static void Plc_EditPlacesInternal (void) Plc_PutFormToCreatePlace (); /***** Forms to edit current places *****/ - if (Gbl.Plcs.Num) - Plc_ListPlacesForEdition (); + if (Places.Num) + Plc_ListPlacesForEdition (&Places); /***** End box *****/ Box_BoxEnd (); /***** Free list of places *****/ - Plc_FreeListPlaces (); + Plc_FreeListPlaces (&Places); } - /*****************************************************************************/ /**************** Put contextual icons in edition of places *****************/ /*****************************************************************************/ @@ -333,7 +350,7 @@ void Plc_PutIconToViewPlaces (void) /**************************** List all the places ****************************/ /*****************************************************************************/ -void Plc_GetListPlaces (void) +void Plc_GetListPlaces (struct Plc_Places *Places) { static const char *OrderBySubQuery[Plc_NUM_ORDERS] = { @@ -344,7 +361,7 @@ void Plc_GetListPlaces (void) MYSQL_ROW row; unsigned long NumRows; unsigned NumPlc; - struct Place *Plc; + struct Plc_Place *Plc; /***** Get places from database *****/ NumRows = DB_QuerySELECT (&mysql_res,"can not get places", @@ -372,23 +389,23 @@ void Plc_GetListPlaces (void) Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod, Gbl.Hierarchy.Ins.InsCod, - OrderBySubQuery[Gbl.Plcs.SelectedOrder]); + OrderBySubQuery[Places->SelectedOrder]); /***** Count number of rows in result *****/ if (NumRows) // Places found... { - Gbl.Plcs.Num = (unsigned) NumRows; + Places->Num = (unsigned) NumRows; /***** Create list with courses in centre *****/ - if ((Gbl.Plcs.Lst = (struct Place *) calloc (NumRows,sizeof (struct Place))) == NULL) + if ((Places->Lst = (struct Plc_Place *) calloc (NumRows,sizeof (struct Plc_Place))) == NULL) Lay_NotEnoughMemoryExit (); /***** Get the places *****/ for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places->Num; NumPlc++) { - Plc = &(Gbl.Plcs.Lst[NumPlc]); + Plc = &(Places->Lst[NumPlc]); /* Get next place */ row = mysql_fetch_row (mysql_res); @@ -411,7 +428,7 @@ void Plc_GetListPlaces (void) } } else - Gbl.Plcs.Num = 0; + Places->Num = 0; /***** Free structure that stores the query result *****/ DB_FreeMySQLResult (&mysql_res); @@ -421,7 +438,7 @@ void Plc_GetListPlaces (void) /**************************** Get place full name ****************************/ /*****************************************************************************/ -void Plc_GetDataOfPlaceByCod (struct Place *Plc) +void Plc_GetDataOfPlaceByCod (struct Plc_Place *Plc) { extern const char *Txt_Place_unspecified; extern const char *Txt_Another_place; @@ -501,14 +518,14 @@ void Plc_GetDataOfPlaceByCod (struct Place *Plc) /**************************** Free list of places ****************************/ /*****************************************************************************/ -void Plc_FreeListPlaces (void) +void Plc_FreeListPlaces (struct Plc_Places *Places) { - if (Gbl.Plcs.Lst) + if (Places->Lst) { /***** Free memory used by the list of places in institution *****/ - free (Gbl.Plcs.Lst); - Gbl.Plcs.Lst = NULL; - Gbl.Plcs.Num = 0; + free (Places->Lst); + Places->Lst = NULL; + Places->Num = 0; } } @@ -516,10 +533,10 @@ void Plc_FreeListPlaces (void) /*************************** List all the places *****************************/ /*****************************************************************************/ -static void Plc_ListPlacesForEdition (void) +static void Plc_ListPlacesForEdition (const struct Plc_Places *Places) { unsigned NumPlc; - struct Place *Plc; + struct Plc_Place *Plc; /***** Write heading *****/ HTM_TABLE_BeginWidePadding (2); @@ -527,10 +544,10 @@ static void Plc_ListPlacesForEdition (void) /***** Write all the places *****/ for (NumPlc = 0; - NumPlc < Gbl.Plcs.Num; + NumPlc < Places->Num; NumPlc++) { - Plc = &Gbl.Plcs.Lst[NumPlc]; + Plc = &Places->Lst[NumPlc]; HTM_TR_Begin (NULL); @@ -912,7 +929,7 @@ void Plc_RecFormNewPlace (void) /**************************** Create a new place *****************************/ /*****************************************************************************/ -static void Plc_CreatePlace (struct Place *Plc) +static void Plc_CreatePlace (struct Plc_Place *Plc) { /***** Create a new place *****/ DB_QueryINSERT ("can not create place", @@ -934,7 +951,7 @@ static void Plc_EditingPlaceConstructor (void) Lay_ShowErrorAndExit ("Error initializing place."); /***** Allocate memory for place *****/ - if ((Plc_EditingPlc = (struct Place *) malloc (sizeof (struct Place))) == NULL) + if ((Plc_EditingPlc = (struct Plc_Place *) malloc (sizeof (struct Plc_Place))) == NULL) Lay_ShowErrorAndExit ("Error allocating memory for place."); /***** Reset place *****/ diff --git a/swad_place.h b/swad_place.h index 60fdc14e..d5292f51 100644 --- a/swad_place.h +++ b/swad_place.h @@ -39,7 +39,7 @@ #define Plc_MAX_CHARS_PLACE_FULL_NAME (128 - 1) // 127 #define Plc_MAX_BYTES_PLACE_FULL_NAME ((Plc_MAX_CHARS_PLACE_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 -struct Place +struct Plc_Place { long PlcCod; long InsCod; @@ -56,16 +56,25 @@ typedef enum } Plc_Order_t; #define Plc_ORDER_DEFAULT Plc_ORDER_BY_NUM_CTRS +struct Plc_Places + { + unsigned Num; // Number of places + struct Plc_Place *Lst; // List of places + Plc_Order_t SelectedOrder; + }; + /*****************************************************************************/ /***************************** Public prototypes *****************************/ /*****************************************************************************/ +void Plc_ResetPlaces (struct Plc_Places *Places); + void Plc_SeePlaces (void); void Plc_EditPlaces (void); void Plc_PutIconToViewPlaces (void); -void Plc_GetListPlaces (void); -void Plc_FreeListPlaces (void); -void Plc_GetDataOfPlaceByCod (struct Place *Plc); +void Plc_GetListPlaces (struct Plc_Places *Places); +void Plc_FreeListPlaces (struct Plc_Places *Places); +void Plc_GetDataOfPlaceByCod (struct Plc_Place *Plc); long Plc_GetParamPlcCod (void); void Plc_RemovePlace (void); void Plc_RenamePlaceShort (void);