diff --git a/Makefile b/Makefile index a0bfc026..76a70c7c 100644 --- a/Makefile +++ b/Makefile @@ -38,10 +38,10 @@ OBJS = swad_account.o swad_account_database.o swad_action.o swad_action_list.o \ swad_calendar.o swad_call_for_exam.o swad_call_for_exam_resource.o \ swad_call_for_exam_database.o swad_center.o swad_center_config.o \ swad_center_database.o swad_chat.o swad_chat_database.o swad_config.o \ - swad_connected.o swad_connected_database.o swad_cookie.o \ - swad_cookie_database.o swad_country.o swad_country_config.o \ - swad_country_database.o swad_course.o swad_course_config.o \ - swad_course_database.o swad_cryptography.o \ + swad_connected.o swad_connected_database.o swad_constant.o \ + swad_cookie.o swad_cookie_database.o swad_country.o \ + swad_country_config.o swad_country_database.o swad_course.o \ + swad_course_config.o swad_course_database.o swad_cryptography.o \ swad_database.o swad_date.o swad_degree.o swad_degree_config.o \ swad_degree_database.o swad_degree_type.o swad_department.o \ swad_department_database.o swad_duplicate.o swad_duplicate_database.o \ diff --git a/html/api/index.html b/html/api/index.html index 53fee9f7..8c59e192 100644 --- a/html/api/index.html +++ b/html/api/index.html @@ -14,6 +14,10 @@ { color:#A0A0A0; } +.obsolete + { + color:#660000; + } @@ -50,13 +33,23 @@ img {border-width:0px; border-style:none;}

Presentations

CC BY-SA - Antonio Cañas Vargas, 1999-2018 + Antonio Cañas Vargas, 1999-2021 +
+

+ + SWAD, an Open Learning Management System +

+ +
+

+ + + + Parece que es el fin
+ y solo es el comienzo.
+
+
Nuestro tiempo, Amaral + + + diff --git a/html/source/img/lineas-codigo-modulo-principal.png b/html/source/img/lineas-codigo-modulo-principal.png index db68cf07..8a410db8 100644 Binary files a/html/source/img/lineas-codigo-modulo-principal.png and b/html/source/img/lineas-codigo-modulo-principal.png differ diff --git a/html/source/index.html b/html/source/index.html index 8790faff..b1763da8 100644 --- a/html/source/index.html +++ b/html/source/index.html @@ -40,7 +40,7 @@

Source code

CC BY-SA - Antonio Cañas Vargas, 1999-2018 + Antonio Cañas Vargas, 1999-2022 @@ -77,7 +77,7 @@

"Cuando me preguntan cuándo estará listo un programa, contesto: - depende de cuánto trabaje usted en ello."
+ depende de cuánto trabaje usted en ello."
--Richard Stallman 1

@@ -123,12 +123,12 @@ The reader will probably think "a web application written in C?" Yes, it is not usual, but... ;-) A little more seriously, we could say that we have developed swad-core - following the philosophy of The Handmade Manifesto. + following the philosophy of The Handmade Manifesto.

- SWAD core has about 234 500 lines of source code. - Each executable program (one for each language) has a size of 2.2 MiB + SWAD core has about 323 000 lines of source code. + Each executable program (one for each language) has a size of 2.7 MiB and in most of the possible actions generates the page in few milliseconds.

@@ -139,7 +139,7 @@ All versions are listed in the change log.

- Main swad core code lines + Main swad core code lines

For encryption of passwords @@ -165,7 +165,8 @@

Photo processing module (fotomaton)

- Programmed by Daniel Jesús Calandria Hernández. + Programmed by Daniel Jesús Calandria Hernández + and Jesús Mesa González.

@@ -174,7 +175,8 @@ The first version of this module was developed by former students of Computer Engineering Jesús Álvarez Martín and Alberto Rodrigo Gámiz. Currently it uses a version completely rewritten - by Daniel Jesús Calandria Hernández. + by Daniel Jesús Calandria Hernández + and Jesús Mesa González. The module detects human faces present in the picture, resize the image, and performs various improvements such as checking the clarity of background, noise removal, contrast and saturation improvement, and white balance. diff --git a/swad_API.c b/swad_API.c index cbf0d30f..98e86e75 100644 --- a/swad_API.c +++ b/swad_API.c @@ -872,8 +872,8 @@ int swad__loginBySessionKey (struct soap *soap, loginBySessionKeyOut->userSurname2 = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1); loginBySessionKeyOut->userPhoto = soap_malloc (soap,Cns_MAX_BYTES_WWW + 1); loginBySessionKeyOut->userBirthday = soap_malloc (soap,Dat_LENGTH_YYYYMMDD + 1); - loginBySessionKeyOut->degreeName = soap_malloc (soap,Hie_MAX_BYTES_FULL_NAME + 1); - loginBySessionKeyOut->courseName = soap_malloc (soap,Hie_MAX_BYTES_FULL_NAME + 1); + loginBySessionKeyOut->degreeName = soap_malloc (soap,Cns_MAX_BYTES_FULL_NAME + 1); + loginBySessionKeyOut->courseName = soap_malloc (soap,Cns_MAX_BYTES_FULL_NAME + 1); /***** Default values returned on error *****/ loginBySessionKeyOut->userCode = -1; @@ -916,7 +916,7 @@ int swad__loginBySessionKey (struct soap *soap, Crs_GetCourseDataByCod (&Gbl.Hierarchy.Node[Hie_CRS]); loginBySessionKeyOut->courseCode = (int) Gbl.Hierarchy.Node[Hie_CRS].HieCod; Str_Copy (loginBySessionKeyOut->courseName,Gbl.Hierarchy.Node[Hie_CRS].FullName, - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); /***** Get user code (row[0]) *****/ Gbl.Usrs.Me.UsrDat.UsrCod = Str_ConvertStrCodToLongCod (row[0]); @@ -927,7 +927,7 @@ int swad__loginBySessionKey (struct soap *soap, Deg_GetDegreeDataByCod (&Gbl.Hierarchy.Node[Hie_DEG]); loginBySessionKeyOut->degreeCode = (int) Gbl.Hierarchy.Node[Hie_DEG].HieCod; Str_Copy (loginBySessionKeyOut->degreeName,Gbl.Hierarchy.Node[Hie_DEG].FullName, - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); } else UsrFound = false; @@ -1155,13 +1155,13 @@ int swad__getCourses (struct soap *soap, /* Get course short name (row[1]) and course full name (row[2]) */ getCoursesOut->coursesArray.__ptr[NumCrs].courseShortName = - soap_malloc (soap,Hie_MAX_BYTES_SHRT_NAME + 1); + soap_malloc (soap,Cns_MAX_BYTES_SHRT_NAME + 1); getCoursesOut->coursesArray.__ptr[NumCrs].courseFullName = - soap_malloc (soap,Hie_MAX_BYTES_FULL_NAME + 1); + soap_malloc (soap,Cns_MAX_BYTES_FULL_NAME + 1); Str_Copy (getCoursesOut->coursesArray.__ptr[NumCrs].courseShortName, - row[1],Hie_MAX_BYTES_SHRT_NAME); + row[1],Cns_MAX_BYTES_SHRT_NAME); Str_Copy (getCoursesOut->coursesArray.__ptr[NumCrs].courseFullName, - row[2],Hie_MAX_BYTES_FULL_NAME); + row[2],Cns_MAX_BYTES_FULL_NAME); /* Get role (row[3]) */ if (sscanf (row[3],"%u",&Role) != 1) // Role in this course diff --git a/swad_banner.c b/swad_banner.c index bd79ba79..f7bf05f7 100644 --- a/swad_banner.c +++ b/swad_banner.c @@ -441,7 +441,7 @@ static void Ban_ListBannersForEdition (struct Ban_Banners *Banners) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenBanSho); ParCod_PutPar (ParCod_Ban,Banners->BanCodToEdit); - HTM_INPUT_TEXT ("ShortName",Ban_MAX_CHARS_SHRT_NAME,Ban->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ban->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -452,7 +452,7 @@ static void Ban_ListBannersForEdition (struct Ban_Banners *Banners) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenBanFul); ParCod_PutPar (ParCod_Ban,Banners->BanCodToEdit); - HTM_INPUT_TEXT ("FullName",Ban_MAX_CHARS_FULL_NAME,Ban->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ban->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -613,74 +613,65 @@ void Ban_RenameBannerFull (void) static void Ban_RenameBanner (struct Ban_Banner *Ban, Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_banner_X_already_exists; extern const char *Txt_The_banner_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentBanName = NULL; // Initialized to avoid warning - char NewBanName[Ban_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Ban_MAX_BYTES_SHRT_NAME; - CurrentBanName = Ban->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Ban_MAX_BYTES_FULL_NAME; - CurrentBanName = Ban->FullName; - break; - } + [Cns_SHRT_NAME] = Ban->ShrtName, + [Cns_FULL_NAME] = Ban->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the banner */ Ban->BanCod = ParCod_GetAndCheckPar (ParCod_Ban); /* Get the new name for the banner */ - Par_GetParText (ParName,NewBanName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get banner data from the database *****/ Ban_GetBannerDataByCod (Ban); /***** Check if new name is empty *****/ - if (!NewBanName[0]) + if (!NewName[0]) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); else { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentBanName,NewBanName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If banner was in database... *****/ - if (Ban_DB_CheckIfBannerNameExists (ParName,NewBanName,Ban->BanCod)) + if (Ban_DB_CheckIfBannerNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Ban->BanCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_banner_X_already_exists, - NewBanName); + NewName); else { /* Update the table changing old name by new name */ - Ban_DB_UpdateBanName (Ban->BanCod,FldName,NewBanName); + Ban_DB_UpdateBanName (Ban->BanCod,Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_banner_X_has_been_renamed_as_Y, - CurrentBanName,NewBanName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name /* Write warning message */ Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentBanName); + Txt_The_name_X_has_not_changed,CurrentName[ShrtOrFullName]); } /***** Update name *****/ - Str_Copy (CurrentBanName,NewBanName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -813,7 +804,7 @@ static void Ban_PutFormToCreateBanner (const struct Ban_Banner *Ban) /* Banner short name */ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("ShortName",Ban_MAX_CHARS_SHRT_NAME,Ban->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ban->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -822,7 +813,7 @@ static void Ban_PutFormToCreateBanner (const struct Ban_Banner *Ban) /* Banner full name */ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("FullName",Ban_MAX_CHARS_FULL_NAME,Ban->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ban->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -897,8 +888,8 @@ void Ban_ReceiveFormNewBanner (void) Ban_ResetBanner (Ban); /***** Get parameters from form *****/ - Par_GetParText ("ShortName",Ban->ShrtName,Ban_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Ban->FullName,Ban_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Ban->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Ban->FullName,Cns_MAX_BYTES_FULL_NAME); Par_GetParText ("Img" ,Ban->Img ,Ban_MAX_BYTES_IMAGE); Par_GetParText ("WWW" ,Ban->WWW ,Cns_MAX_BYTES_WWW); diff --git a/swad_banner.h b/swad_banner.h index c8d68a14..992f719e 100644 --- a/swad_banner.h +++ b/swad_banner.h @@ -35,12 +35,6 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Ban_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Ban_MAX_BYTES_SHRT_NAME ((Ban_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Ban_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Ban_MAX_BYTES_FULL_NAME ((Ban_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Ban_MAX_CHARS_IMAGE NAME_MAX // 255 #define Ban_MAX_BYTES_IMAGE Ban_MAX_CHARS_IMAGE // 255 @@ -48,8 +42,8 @@ struct Ban_Banner { long BanCod; HidVis_HiddenOrVisible_t HiddenOrVisible; - char ShrtName[Ban_MAX_BYTES_SHRT_NAME + 1]; - char FullName[Ban_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char Img[Ban_MAX_BYTES_IMAGE + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; }; diff --git a/swad_browser.c b/swad_browser.c index 538f8eba..67dd7c2a 100644 --- a/swad_browser.c +++ b/swad_browser.c @@ -5282,7 +5282,7 @@ static void Brw_WriteCurrentClipboard (void) struct Prj_Project Prj; struct Usr_Data UsrDat; char TxtClipboardZone[1024 + - Hie_MAX_BYTES_SHRT_NAME + + Cns_MAX_BYTES_SHRT_NAME + Grp_MAX_BYTES_GROUP_TYPE_NAME + Grp_MAX_BYTES_GROUP_NAME + Usr_MAX_BYTES_FULL_NAME + diff --git a/swad_building.c b/swad_building.c index 3d58cbe7..c488adde 100644 --- a/swad_building.c +++ b/swad_building.c @@ -429,7 +429,7 @@ static void Bld_ListBuildingsForEdition (const struct Bld_Buildings *Buildings) HTM_TD_Begin ("class=\"LM\""); Frm_BeginFormAnchor (ActRenBldSho,Anchor); ParCod_PutPar (ParCod_Bld,Building->BldCod); - HTM_INPUT_TEXT ("ShortName",Bld_MAX_CHARS_SHRT_NAME,Building->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Building->ShrtName, HTM_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -440,7 +440,7 @@ static void Bld_ListBuildingsForEdition (const struct Bld_Buildings *Buildings) HTM_TD_Begin ("class=\"LM\""); Frm_BeginFormAnchor (ActRenBldFul,Anchor); ParCod_PutPar (ParCod_Bld,Building->BldCod); - HTM_INPUT_TEXT ("FullName",Bld_MAX_CHARS_FULL_NAME,Building->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Building->FullName, HTM_SUBMIT_ON_CHANGE, "size=\"20\" class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -536,73 +536,67 @@ void Bld_RenameBuildingFull (void) static void Bld_RenameBuilding (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_building_X_already_exists; extern const char *Txt_The_building_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentClaName = NULL; // Initialized to avoid warning - char NewClaName[Bld_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Bld_MAX_BYTES_SHRT_NAME; - CurrentClaName = Bld_EditingBuilding->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Bld_MAX_BYTES_FULL_NAME; - CurrentClaName = Bld_EditingBuilding->FullName; - break; - } + [Cns_SHRT_NAME] = Bld_EditingBuilding->ShrtName, + [Cns_FULL_NAME] = Bld_EditingBuilding->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the building */ Bld_EditingBuilding->BldCod = ParCod_GetAndCheckPar (ParCod_Bld); /* Get the new name for the building */ - Par_GetParText (ParName,NewClaName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the building *****/ Bld_GetBuildingDataByCod (Bld_EditingBuilding); /***** Check if new name is empty *****/ - if (NewClaName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentClaName,NewClaName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If building was in database... *****/ - if (Bld_DB_CheckIfBuildingNameExists (ParName,NewClaName,Bld_EditingBuilding->BldCod)) + if (Bld_DB_CheckIfBuildingNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Bld_EditingBuilding->BldCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_building_X_already_exists, - NewClaName); + NewName); else { /* Update the table changing old name by new name */ - Bld_DB_UpdateBuildingName (Bld_EditingBuilding->BldCod,FldName,NewClaName); + Bld_DB_UpdateBuildingName (Bld_EditingBuilding->BldCod, + Cns_FldShrtOrFullName[ShrtOrFullName], + NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_building_X_has_been_renamed_as_Y, - CurrentClaName,NewClaName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentClaName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update building name *****/ - Str_Copy (CurrentClaName,NewClaName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -613,7 +607,7 @@ void Bld_ChangeBuildingLocation (void) { extern const char *Txt_The_location_of_the_building_X_has_changed_to_Y; extern const char *Txt_The_location_of_the_building_X_has_not_changed; - char NewLocation[Bld_MAX_BYTES_FULL_NAME + 1]; + char NewLocation[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Building constructor *****/ Bld_EditingBuildingConstructor (); @@ -688,7 +682,7 @@ static void Bld_PutFormToCreateBuilding (void) /***** Building short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Bld_MAX_CHARS_SHRT_NAME,Bld_EditingBuilding->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Bld_EditingBuilding->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -697,7 +691,7 @@ static void Bld_PutFormToCreateBuilding (void) /***** Building full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Bld_MAX_CHARS_FULL_NAME,Bld_EditingBuilding->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Bld_EditingBuilding->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"20\" class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -754,10 +748,10 @@ void Bld_ReceiveFormNewBuilding (void) /***** Get parameters from form *****/ /* Get building short name */ - Par_GetParText ("ShortName",Bld_EditingBuilding->ShrtName,Bld_MAX_BYTES_SHRT_NAME); + Par_GetParText ("ShortName",Bld_EditingBuilding->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get building full name */ - Par_GetParText ("FullName",Bld_EditingBuilding->FullName,Bld_MAX_BYTES_FULL_NAME); + Par_GetParText ("FullName",Bld_EditingBuilding->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get building location */ Par_GetParText ("Location",Bld_EditingBuilding->Location,Bld_MAX_BYTES_LOCATION); diff --git a/swad_building.h b/swad_building.h index 391fbff7..8554bd09 100644 --- a/swad_building.h +++ b/swad_building.h @@ -27,18 +27,13 @@ /********************************** Headers **********************************/ /*****************************************************************************/ +#include "swad_constant.h" #include "swad_string.h" /*****************************************************************************/ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Bld_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Bld_MAX_BYTES_SHRT_NAME ((Bld_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Bld_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Bld_MAX_BYTES_FULL_NAME ((Bld_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Bld_MAX_CHARS_LOCATION (128 - 1) // 127 #define Bld_MAX_BYTES_LOCATION ((Bld_MAX_CHARS_LOCATION + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 @@ -46,8 +41,8 @@ struct Bld_Building { long BldCod; long InsCod; - char ShrtName[Bld_MAX_BYTES_SHRT_NAME + 1]; - char FullName[Bld_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char Location[Bld_MAX_BYTES_LOCATION + 1]; // Examples: Campus North, City center }; diff --git a/swad_call_for_exam.c b/swad_call_for_exam.c index 45e14706..d904291d 100644 --- a/swad_call_for_exam.c +++ b/swad_call_for_exam.c @@ -172,7 +172,7 @@ static long Cfe_GetParsCallsForExams (struct Cfe_CallsForExams *CallsForExams) ExaCod = ParCod_GetPar (ParCod_Exa); /***** Get the name of the course (it is allowed to be different from the official name of the course) *****/ - Par_GetParText ("CrsName",CallsForExams->CallForExam.CrsFullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("CrsName",CallsForExams->CallForExam.CrsFullName,Cns_MAX_BYTES_FULL_NAME); // If the parameter is not present or is empty, initialize the string to the full name of the current course if (!CallsForExams->CallForExam.CrsFullName[0]) Str_Copy (CallsForExams->CallForExam.CrsFullName, @@ -1001,7 +1001,7 @@ static void Cfe_ShowCallForExam (struct Cfe_CallsForExams *CallsForExams, HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"", The_GetSuffix ()); if (TypeViewCallForExam == Cfe_FORM_VIEW) - HTM_INPUT_TEXT ("CrsName",Hie_MAX_CHARS_FULL_NAME,CallsForExams->CallForExam.CrsFullName, + HTM_INPUT_TEXT ("CrsName",Cns_MAX_CHARS_FULL_NAME,CallsForExams->CallForExam.CrsFullName, HTM_DONT_SUBMIT_ON_CHANGE, "id=\"CrsName\" size=\"30\" class=\"INPUT_%s\"", The_GetSuffix ()); diff --git a/swad_call_for_exam.h b/swad_call_for_exam.h index 2bdd3d4c..c50482a4 100644 --- a/swad_call_for_exam.h +++ b/swad_call_for_exam.h @@ -62,7 +62,7 @@ struct Cfe_CallForExam { long CrsCod; Cfe_Status_t Status; - char CrsFullName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CrsFullName[Cns_MAX_BYTES_FULL_NAME + 1]; unsigned Year; // Number of year (0 (N.A.), 1, 2, 3, 4, 5, 6) in the degree char Session[Cfe_MAX_BYTES_SESSION + 1]; // Exam session is june, september, etc. struct Dat_Date CallDate; diff --git a/swad_center.c b/swad_center.c index 0bdcea16..d7a00e02 100644 --- a/swad_center.c +++ b/swad_center.c @@ -839,7 +839,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places) { Frm_BeginForm (ActRenCtrSho); ParCod_PutPar (ParCod_OthHie,Ctr->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ctr->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ctr->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -855,7 +855,7 @@ static void Ctr_ListCentersForEdition (const struct Plc_Places *Places) { Frm_BeginForm (ActRenCtrFul); ParCod_PutPar (ParCod_OthHie,Ctr->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ctr->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ctr->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1079,70 +1079,63 @@ void Ctr_RenameCenterFull (void) void Ctr_RenameCenter (struct Hie_Node *Ctr,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_center_X_already_exists; extern const char *Txt_The_center_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentCtrName = NULL; // Initialized to avoid warning - char NewCtrName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentCtrName = Ctr->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentCtrName = Ctr->FullName; - break; - } + [Cns_SHRT_NAME] = Ctr->ShrtName, + [Cns_FULL_NAME] = Ctr->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the new name for the center */ - Par_GetParText (ParName,NewCtrName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the center *****/ Ctr_GetCenterDataByCod (Ctr); /***** Check if new name is empty *****/ - if (!NewCtrName[0]) + if (!NewName[0]) Ale_CreateAlertYouCanNotLeaveFieldEmpty (); else { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentCtrName,NewCtrName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If degree was in database... *****/ - if (Ctr_DB_CheckIfCtrNameExistsInIns (ParName,NewCtrName,Ctr->HieCod, + if (Ctr_DB_CheckIfCtrNameExistsInIns (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Ctr->HieCod, Gbl.Hierarchy.Node[Hie_INS].HieCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_center_X_already_exists, - NewCtrName); + NewName); else { /* Update the table changing old name by new name */ - Ctr_DB_UpdateCtrName (Ctr->HieCod,FldName,NewCtrName); + Ctr_DB_UpdateCtrName (Ctr->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_center_X_has_been_renamed_as_Y, - CurrentCtrName,NewCtrName); + CurrentName[ShrtOrFullName],NewName); /* Change current center name in order to display it properly */ - Str_Copy (CurrentCtrName,NewCtrName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentCtrName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } } @@ -1325,7 +1318,7 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places) /***** Center short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ctr_EditingCtr->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ctr_EditingCtr->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1334,7 +1327,7 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places) /***** Center full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ctr_EditingCtr->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ctr_EditingCtr->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1522,8 +1515,8 @@ static void Ctr_ReceiveFormRequestOrCreateCtr (Hie_Status_t Status) Ctr_EditingCtr->Specific.PlcCod = ParCod_GetAndCheckParMin (ParCod_Plc,0); // 0 (another place) is allowed here /* Get center short name and full name */ - Par_GetParText ("ShortName",Ctr_EditingCtr->ShrtName,Hie_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Ctr_EditingCtr->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Ctr_EditingCtr->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Ctr_EditingCtr->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get center WWW */ Par_GetParText ("WWW",Ctr_EditingCtr->WWW,Cns_MAX_BYTES_WWW); diff --git a/swad_center_database.c b/swad_center_database.c index fd531439..12b74217 100644 --- a/swad_center_database.c +++ b/swad_center_database.c @@ -260,7 +260,7 @@ long Ctr_DB_GetInsCodOfCenterByCod (long CtrCod) /*************** Get the short name of a center from its code ****************/ /*****************************************************************************/ -void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]) +void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]) { /***** Trivial check: center code should be > 0 *****/ if (CtrCod <= 0) @@ -270,7 +270,7 @@ void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Hie_MAX_BYTES_S } /***** Get the short name of a center from database *****/ - DB_QuerySELECTString (ShrtName,Hie_MAX_BYTES_SHRT_NAME, + DB_QuerySELECTString (ShrtName,Cns_MAX_BYTES_SHRT_NAME, "can not get the short name of a center", "SELECT ShortName" " FROM ctr_centers" diff --git a/swad_center_database.h b/swad_center_database.h index 5248ff0b..182fdc99 100644 --- a/swad_center_database.h +++ b/swad_center_database.h @@ -48,7 +48,7 @@ unsigned Ctr_DB_GetCtrsWithPendingDegs (MYSQL_RES **mysql_res); unsigned Ctr_DB_GetCenterDataByCod (MYSQL_RES **mysql_res,long CtrCod); unsigned Ctr_DB_GetCoordByCod (MYSQL_RES **mysql_res,long CtrCod); long Ctr_DB_GetInsCodOfCenterByCod (long CtrCod); -void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]); +void Ctr_DB_GetShortNameOfCenterByCod (long CtrCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]); unsigned Ctr_DB_GetPhotoAttribution (MYSQL_RES **mysql_res,long CtrCod); bool Ctr_DB_CheckIfCtrNameExistsInIns (const char *FldName,const char *Name, long CtrCod,long InsCod); diff --git a/swad_changelog.h b/swad_changelog.h index 6f04a48f..84c0cdf6 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -632,10 +632,13 @@ 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.26.1 (2023-10-05)" +#define Log_PLATFORM_VERSION "SWAD 23.28 (2023-10-06)" #define CSS_FILE "swad23.25.2.css" #define JS_FILE "swad22.49.js" /* + Version 23.28: Oct 06, 2023 New file swad_constant.c. + Changes in test and match results when a question is edited. Suggested by Francisco Javier Fernández Baldomero. (335920 lines) + Version 23.27: Oct 06, 2023 Code refactoring. (335951 lines) Version 23.26.1: Oct 05, 2023 Code refactoring. (335938 lines) Version 23.26: Oct 04, 2023 Code refactoring in forum stats. (335965 lines) Version 23.25.4: Oct 03, 2023 Code refactoring. (336036 lines) diff --git a/swad_connected.c b/swad_connected.c index fe4245ee..57e783ea 100644 --- a/swad_connected.c +++ b/swad_connected.c @@ -301,7 +301,7 @@ void Con_ShowConnectedUsrsBelongingToCurrentCrs (void) { extern const char *Txt_Connected_users; extern const char *Txt_from; - char CourseName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char CourseName[Cns_MAX_BYTES_SHRT_NAME + 1]; struct Con_ConnectedUsrs Usrs; /***** Trivial check *****/ diff --git a/swad_constant.h b/swad_constant.h index db3c0e66..5ddbcf62 100644 --- a/swad_constant.h +++ b/swad_constant.h @@ -33,6 +33,12 @@ /***************************** Public constants ******************************/ /*****************************************************************************/ +#define Cns_MAX_CHARS_SHRT_NAME (32 - 1) // 31 +#define Cns_MAX_BYTES_SHRT_NAME ((Cns_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 + +#define Cns_MAX_CHARS_FULL_NAME (128 - 1) // 127 +#define Cns_MAX_BYTES_FULL_NAME ((Cns_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 + #define Cns_MAX_CHARS_WWW (256 - 1) // 255: max. number of chars of a URL #define Cns_MAX_BYTES_WWW Cns_MAX_CHARS_WWW // 255 @@ -106,6 +112,7 @@ typedef enum } Cns_QuietOrVerbose_t; // Related with names of centers, degrees, courses,... +#define Cns_NUM_SHRT_FULL_NAMES 2 typedef enum { Cns_SHRT_NAME, diff --git a/swad_course.c b/swad_course.c index 7856d156..b905386b 100644 --- a/swad_course.c +++ b/swad_course.c @@ -566,8 +566,8 @@ void Crs_WriteSelectorMyCoursesInBreadcrumb (void) long CrsCod; long DegCod; long LastDegCod; - char CrsShortName[Hie_MAX_BYTES_SHRT_NAME + 1]; - char DegShortName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char CrsShortName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char DegShortName[Cns_MAX_BYTES_SHRT_NAME + 1]; /***** Fill the list with the courses I belong to, if not filled *****/ if (Gbl.Usrs.Me.Logged) @@ -1012,7 +1012,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year) { Frm_BeginForm (ActRenCrsSho); ParCod_PutPar (ParCod_OthHie,Crs->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Crs->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Crs->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1028,7 +1028,7 @@ static void Crs_ListCoursesOfAYearForEdition (unsigned Year) { Frm_BeginForm (ActRenCrsFul); ParCod_PutPar (ParCod_OthHie,Crs->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Crs->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Crs->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1147,7 +1147,7 @@ static void Crs_PutFormToCreateCourse (void) /***** Course short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Crs_EditingCrs->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Crs_EditingCrs->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1156,7 +1156,7 @@ static void Crs_PutFormToCreateCourse (void) /***** Course full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Crs_EditingCrs->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Crs_EditingCrs->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1341,10 +1341,10 @@ static void Crs_GetParsNewCourse (struct Hie_Node *Crs) Par_GetParText ("InsCrsCod",Crs->InstitutionalCod,Hie_MAX_BYTES_INSTITUTIONAL_COD); /* Get course short name */ - Par_GetParText ("ShortName",Crs->ShrtName,Hie_MAX_BYTES_SHRT_NAME); + Par_GetParText ("ShortName",Crs->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get course full name */ - Par_GetParText ("FullName",Crs->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("FullName",Crs->FullName,Cns_MAX_BYTES_FULL_NAME); } /*****************************************************************************/ @@ -1742,34 +1742,23 @@ void Crs_RenameCourseFull (void) void Crs_RenameCourse (struct Hie_Node *Crs,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_course_X_already_exists; extern const char *Txt_The_course_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentCrsName = NULL; // Initialized to avoid warning - char NewCrsName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentCrsName = Crs->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentCrsName = Crs->FullName; - break; - } + [Cns_SHRT_NAME] = Crs->ShrtName, + [Cns_FULL_NAME] = Crs->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the new name for the course */ - Par_GetParText (ParName,NewCrsName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the data of the degree *****/ Crs_GetCourseDataByCod (Crs); @@ -1777,35 +1766,38 @@ void Crs_RenameCourse (struct Hie_Node *Crs,Cns_ShrtOrFullName_t ShrtOrFullName) Err_NoPermissionExit (); /***** Check if new name is empty *****/ - if (NewCrsName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentCrsName,NewCrsName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If course was in database... *****/ - if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg (ParName,NewCrsName,Crs->HieCod, + if (Crs_DB_CheckIfCrsNameExistsInYearOfDeg (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Crs->HieCod, Crs->PrtCod,Crs->Specific.Year)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_course_X_already_exists, - NewCrsName); + NewName); else { /* Update the table changing old name by new name */ - Crs_DB_UpdateCrsName (Crs->HieCod,FldName,NewCrsName); + Crs_DB_UpdateCrsName (Crs->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Create alert to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_course_X_has_been_renamed_as_Y, - CurrentCrsName,NewCrsName); + CurrentName[ShrtOrFullName],NewName); /* Change current course name in order to display it properly */ - Str_Copy (CurrentCrsName,NewCrsName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentCrsName); + Txt_The_name_X_has_not_changed,CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); diff --git a/swad_course_database.c b/swad_course_database.c index 0fdfe368..2b88c08d 100644 --- a/swad_course_database.c +++ b/swad_course_database.c @@ -161,8 +161,8 @@ long Crs_DB_GetCurrentDegCodFromCurrentCrsCod (void) /*****************************************************************************/ void Crs_DB_GetShortNamesByCod (long CrsCod, - char CrsShortName[Hie_MAX_BYTES_SHRT_NAME + 1], - char DegShortName[Hie_MAX_BYTES_SHRT_NAME + 1]) + char CrsShortName[Cns_MAX_BYTES_SHRT_NAME + 1], + char DegShortName[Cns_MAX_BYTES_SHRT_NAME + 1]) { MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -185,8 +185,8 @@ void Crs_DB_GetShortNamesByCod (long CrsCod, { /***** Get the course short name and degree short name *****/ row = mysql_fetch_row (mysql_res); - Str_Copy (CrsShortName,row[0],Hie_MAX_BYTES_SHRT_NAME); - Str_Copy (DegShortName,row[1],Hie_MAX_BYTES_SHRT_NAME); + Str_Copy (CrsShortName,row[0],Cns_MAX_BYTES_SHRT_NAME); + Str_Copy (DegShortName,row[1],Cns_MAX_BYTES_SHRT_NAME); } /***** Free structure that stores the query result *****/ diff --git a/swad_course_database.h b/swad_course_database.h index 82261dd0..69465411 100644 --- a/swad_course_database.h +++ b/swad_course_database.h @@ -43,8 +43,8 @@ unsigned Crs_DB_GetCrssInCurrentDegFull (MYSQL_RES **mysql_res); unsigned Crs_DB_GetCourseDataByCod (MYSQL_RES **mysql_res,long CrsCod); long Crs_DB_GetCurrentDegCodFromCurrentCrsCod (void); void Crs_DB_GetShortNamesByCod (long CrsCod, - char CrsShortName[Hie_MAX_BYTES_SHRT_NAME + 1], - char DegShortName[Hie_MAX_BYTES_SHRT_NAME + 1]); + char CrsShortName[Cns_MAX_BYTES_SHRT_NAME + 1], + char DegShortName[Cns_MAX_BYTES_SHRT_NAME + 1]); bool Crs_DB_CheckIfCrsCodExists (long CrsCod); bool Crs_DB_CheckIfCrsNameExistsInYearOfDeg (const char *FldName,const char *Name,long CrsCod, long DegCod,unsigned Year); diff --git a/swad_database.c b/swad_database.c index c0b5167f..e8e311be 100644 --- a/swad_database.c +++ b/swad_database.c @@ -350,8 +350,8 @@ mysql> DESCRIBE ban_banners; DB_CreateTable ("CREATE TABLE IF NOT EXISTS ban_banners (" "BanCod INT NOT NULL AUTO_INCREMENT," "Hidden ENUM('N','Y') NOT NULL DEFAULT 'N'," - "ShortName VARCHAR(511) NOT NULL," // Ban_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Ban_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Img VARCHAR(255) NOT NULL," // Ban_MAX_BYTES_IMAGE "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(BanCod)," @@ -374,8 +374,8 @@ mysql> DESCRIBE bld_buildings; DB_CreateTable ("CREATE TABLE IF NOT EXISTS bld_buildings (" "BldCod INT NOT NULL AUTO_INCREMENT," "CtrCod INT NOT NULL," - "ShortName VARCHAR(511) NOT NULL," // Bld_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Bld_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Location VARCHAR(2047) NOT NULL," // Bld_MAX_BYTES_LOCATION "UNIQUE INDEX(BldCod)," "INDEX(CtrCod))"); @@ -584,7 +584,7 @@ mysql> DESCRIBE cfe_exams; "CrsCod INT NOT NULL DEFAULT -1," "Status TINYINT NOT NULL DEFAULT 0," "NumNotif INT NOT NULL DEFAULT 0," - "CrsFullName VARCHAR(2047) NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "CrsFullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Year TINYINT NOT NULL," "ExamSession VARCHAR(2047) NOT NULL," // Cfe_MAX_BYTES_SESSION "CallDate DATETIME NOT NULL," @@ -642,8 +642,8 @@ mysql> DESCRIBE crs_courses; "InsCrsCod CHAR(7) NOT NULL," "Status TINYINT NOT NULL DEFAULT 0," "RequesterUsrCod INT NOT NULL DEFAULT -1," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "NumIndicators INT NOT NULL DEFAULT -1," "UNIQUE INDEX(CrsCod)," "INDEX(DegCod,Year)," @@ -977,8 +977,8 @@ mysql> DESCRIBE ctr_centers; "Latitude DOUBLE PRECISION NOT NULL DEFAULT 0," "Longitude DOUBLE PRECISION NOT NULL DEFAULT 0," "Altitude DOUBLE PRECISION NOT NULL DEFAULT 0," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "PhotoAttribution TEXT NOT NULL," // Med_MAX_BYTES_ATTRIBUTION "UNIQUE INDEX(CtrCod)," @@ -1093,8 +1093,8 @@ mysql> DESCRIBE deg_degrees; "DegTypCod INT NOT NULL," "Status TINYINT NOT NULL DEFAULT 0," "RequesterUsrCod INT NOT NULL DEFAULT -1," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(DegCod)," "INDEX(CtrCod)," @@ -1118,8 +1118,8 @@ mysql> DESCRIBE dpt_departments; DB_CreateTable ("CREATE TABLE IF NOT EXISTS dpt_departments (" "DptCod INT NOT NULL AUTO_INCREMENT," "InsCod INT NOT NULL," - "ShortName VARCHAR(511) NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(DptCod)," "INDEX(InsCod))"); @@ -1852,8 +1852,8 @@ mysql> DESCRIBE ins_instits; "CtyCod INT NOT NULL," "Status TINYINT NOT NULL DEFAULT 0," "RequesterUsrCod INT NOT NULL DEFAULT -1," - "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Hie_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(InsCod)," "INDEX(CtyCod)," @@ -1874,8 +1874,8 @@ mysql> DESCRIBE lnk_links; */ DB_CreateTable ("CREATE TABLE IF NOT EXISTS lnk_links (" "LnkCod INT NOT NULL AUTO_INCREMENT," - "ShortName VARCHAR(511) NOT NULL," // Lnk_MAX_BYTES_LINK_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Lnk_MAX_BYTES_LINK_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "WWW VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_WWW "UNIQUE INDEX(LnkCod))"); @@ -2434,8 +2434,8 @@ mysql> DESCRIBE plc_places; DB_CreateTable ("CREATE TABLE IF NOT EXISTS plc_places (" "PlcCod INT NOT NULL AUTO_INCREMENT," "InsCod INT NOT NULL," - "ShortName VARCHAR(511) NOT NULL," // Plc_MAX_BYTES_PLACE_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Plc_MAX_BYTES_PLACE_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "UNIQUE INDEX(PlcCod)," "INDEX(InsCod))"); @@ -2719,8 +2719,8 @@ mysql> DESCRIBE roo_rooms; "'toilets'," "'virtual'," "'yard') NOT NULL DEFAULT 'no_type'," - "ShortName VARCHAR(511) NOT NULL," // Roo_MAX_BYTES_SHRT_NAME - "FullName VARCHAR(2047) NOT NULL," // Roo_MAX_BYTES_FULL_NAME + "ShortName VARCHAR(511) NOT NULL," // Cns_MAX_BYTES_SHRT_NAME + "FullName VARCHAR(2047) NOT NULL," // Cns_MAX_BYTES_FULL_NAME "Capacity INT NOT NULL," "UNIQUE INDEX(RooCod)," "INDEX(CtrCod,BldCod,Floor))"); diff --git a/swad_degree.c b/swad_degree.c index b64c98f2..5a4e50db 100644 --- a/swad_degree.c +++ b/swad_degree.c @@ -384,7 +384,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes) { Frm_BeginForm (ActRenDegSho); ParCod_PutPar (ParCod_OthHie,DegInLst->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,DegInLst->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,DegInLst->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -400,7 +400,7 @@ static void Deg_ListDegreesForEdition (const struct DegTyp_DegTypes *DegTypes) { Frm_BeginForm (ActRenDegFul); ParCod_PutPar (ParCod_OthHie,DegInLst->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,DegInLst->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,DegInLst->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -562,7 +562,7 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes) /***** Degree short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Deg_EditingDeg->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -571,7 +571,7 @@ static void Deg_PutFormToCreateDegree (const struct DegTyp_DegTypes *DegTypes) /***** Degree full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Deg_EditingDeg->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1081,8 +1081,8 @@ static void Deg_ReceiveFormRequestOrCreateDeg (Hie_Status_t Status) Deg_EditingDeg->PrtCod = Gbl.Hierarchy.Node[Hie_CTR].HieCod; /* Get degree short name and full name */ - Par_GetParText ("ShortName",Deg_EditingDeg->ShrtName,Hie_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Deg_EditingDeg->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Deg_EditingDeg->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Deg_EditingDeg->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get degree type */ Deg_EditingDeg->Specific.TypCod = ParCod_GetAndCheckPar (ParCod_OthDegTyp); @@ -1319,67 +1319,60 @@ void Deg_RenameDegreeFull (void) void Deg_RenameDegree (struct Hie_Node *Deg,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_degree_X_already_exists; extern const char *Txt_The_degree_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentDegName = NULL; // Initialized to avoid warning - char NewDegName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentDegName = Deg->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentDegName = Deg->FullName; - break; - } + [Cns_SHRT_NAME] = Deg->ShrtName, + [Cns_FULL_NAME] = Deg->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the new name for the degree */ - Par_GetParText (ParName,NewDegName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get data of degree *****/ Deg_GetDegreeDataByCod (Deg); /***** Check if new name is empty *****/ - if (NewDegName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentDegName,NewDegName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If degree was in database... *****/ - if (Deg_DB_CheckIfDegNameExistsInCtr (ParName,NewDegName,Deg->HieCod,Deg->PrtCod)) + if (Deg_DB_CheckIfDegNameExistsInCtr (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Deg->HieCod,Deg->PrtCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_degree_X_already_exists, - NewDegName); + NewName); else { /* Update the table changing old name by new name */ - Deg_DB_UpdateDegNameDB (Deg->HieCod,FldName,NewDegName); + Deg_DB_UpdateDegNameDB (Deg->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_degree_X_has_been_renamed_as_Y, - CurrentDegName,NewDegName); + CurrentName[ShrtOrFullName],NewName); /* Change current degree name in order to display it properly */ - Str_Copy (CurrentDegName,NewDegName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentDegName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); @@ -1647,7 +1640,7 @@ static void Deg_EditingDegreeDestructor (void) /*****************************************************************************/ void Deg_GetUsrMainDeg (long UsrCod, - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1], + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1], Rol_Role_t *MaxRole) { MYSQL_RES *mysql_res; @@ -1659,7 +1652,7 @@ void Deg_GetUsrMainDeg (long UsrCod, row = mysql_fetch_row (mysql_res); /* Get degree name (row[0]) */ - Str_Copy (ShrtName,row[0],Hie_MAX_BYTES_SHRT_NAME); + Str_Copy (ShrtName,row[0],Cns_MAX_BYTES_SHRT_NAME); /* Get maximum role (row[1]) */ *MaxRole = Rol_ConvertUnsignedStrToRole (row[1]); diff --git a/swad_degree.h b/swad_degree.h index fcfa19f7..afe4c26f 100644 --- a/swad_degree.h +++ b/swad_degree.h @@ -84,7 +84,7 @@ unsigned Deg_GetCachedNumDegsWithUsrs (Rol_Role_t Role); void Deg_ListDegsFound (MYSQL_RES **mysql_res,unsigned NumCrss); void Deg_GetUsrMainDeg (long UsrCod, - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1], + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1], Rol_Role_t *MaxRole); #endif diff --git a/swad_degree_database.c b/swad_degree_database.c index 99a247ad..3662bf14 100644 --- a/swad_degree_database.c +++ b/swad_degree_database.c @@ -339,7 +339,7 @@ long Deg_DB_GetCtrCodOfDegreeByCod (long DegCod) /************* Get the short name of a degree from its code ******************/ /*****************************************************************************/ -void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]) +void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]) { /***** Trivial check: degree code should be > 0 *****/ if (DegCod <= 0) @@ -349,7 +349,7 @@ void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Hie_MAX_BYTES_S } /***** Get the short name of a degree from database *****/ - DB_QuerySELECTString (ShrtName,Hie_MAX_BYTES_SHRT_NAME, + DB_QuerySELECTString (ShrtName,Cns_MAX_BYTES_SHRT_NAME, "can not get the short name of a degree", "SELECT ShortName" " FROM deg_degrees" @@ -689,7 +689,7 @@ void Deg_DB_UpdateDegTypName (long DegTypCod, /*****************************************************************************/ void Deg_DB_UpdateDegNameDB (long DegCod,const char *FldName, - const char NewDegName[Hie_MAX_BYTES_FULL_NAME + 1]) + const char NewDegName[Cns_MAX_BYTES_FULL_NAME + 1]) { DB_QueryUPDATE ("can not update the name of a degree", "UPDATE deg_degrees" diff --git a/swad_degree_database.h b/swad_degree_database.h index 0054a9df..5b8231db 100644 --- a/swad_degree_database.h +++ b/swad_degree_database.h @@ -47,7 +47,7 @@ void Deg_DB_GetDegTypeNameByCod (struct DegTyp_DegreeType *DegTyp); unsigned Deg_DB_GetDegreeDataByCod (MYSQL_RES **mysql_res,long DegCod); long Deg_DB_GetInsCodOfDegreeByCod (long DegCod); long Deg_DB_GetCtrCodOfDegreeByCod (long DegCod); -void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]); +void Deg_DB_GetShortNameOfDegreeByCod (long DegCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]); bool Deg_DB_CheckIfDegreeTypeNameExists (const char *DegTypName,long DegTypCod); unsigned Deg_DB_GetNumDegsOfType (long DegTypCod); unsigned Deg_DB_GetDegsOfType (MYSQL_RES **mysql_res,long DegTypCod); @@ -74,7 +74,7 @@ unsigned Deg_DB_GetNumDegsInCtr (long CtrCod); void Deg_DB_UpdateDegTypName (long DegTypCod, const char NewNameDegTyp[DegTyp_MAX_BYTES_DEGREE_TYPE_NAME + 1]); void Deg_DB_UpdateDegNameDB (long DegCod,const char *FldName, - const char NewDegName[Hie_MAX_BYTES_FULL_NAME + 1]); + const char NewDegName[Cns_MAX_BYTES_FULL_NAME + 1]); void Deg_DB_UpdateDegCtr (long DegCod,long NewCtrCod); void Deg_DB_UpdateDegTyp (long DegCod,long NewDegTypCod); void Deg_DB_UpdateDegWWW (long DegCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]); diff --git a/swad_department.c b/swad_department.c index 689681eb..bf1c567c 100644 --- a/swad_department.c +++ b/swad_department.c @@ -536,7 +536,7 @@ static void Dpt_ListDepartmentsForEdition (const struct Dpt_Departments *Departm HTM_TD_Begin ("class=\"LM\""); Frm_BeginForm (ActRenDptSho); ParCod_PutPar (ParCod_Dpt,DptInLst->DptCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,DptInLst->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,DptInLst->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -547,7 +547,7 @@ static void Dpt_ListDepartmentsForEdition (const struct Dpt_Departments *Departm HTM_TD_Begin ("class=\"LM\""); Frm_BeginForm (ActRenDptFul); ParCod_PutPar (ParCod_Dpt,DptInLst->DptCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,DptInLst->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,DptInLst->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -683,73 +683,66 @@ void Dpt_RenameDepartFull (void) static void Dpt_RenameDepartment (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_department_X_already_exists; extern const char *Txt_The_department_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - size_t MaxBytes = 0; // Initialized to avoid warning - char *CurrentDptName = NULL; // Initialized to avoid warning - char NewDptName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentDptName = Dpt_EditingDpt->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentDptName = Dpt_EditingDpt->FullName; - break; - } + [Cns_SHRT_NAME] = Dpt_EditingDpt->ShrtName, + [Cns_FULL_NAME] = Dpt_EditingDpt->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the department */ Dpt_EditingDpt->DptCod = ParCod_GetAndCheckPar (ParCod_Dpt); /* Get the new name for the department */ - Par_GetParText (ParName,NewDptName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the department *****/ Dpt_GetDepartmentDataByCod (Dpt_EditingDpt); /***** Check if new name is empty *****/ - if (NewDptName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentDptName,NewDptName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If degree was in database... *****/ - if (Dpt_DB_CheckIfDepartmentNameExists (ParName,NewDptName,Dpt_EditingDpt->DptCod)) + if (Dpt_DB_CheckIfDepartmentNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Dpt_EditingDpt->DptCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_department_X_already_exists, - NewDptName); + NewName); else { /* Update the table changing old name by new name */ - Dpt_DB_UpdateDptName (Dpt_EditingDpt->DptCod,FldName,NewDptName); + Dpt_DB_UpdateDptName (Dpt_EditingDpt->DptCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_department_X_has_been_renamed_as_Y, - CurrentDptName,NewDptName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentDptName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update name *****/ - Str_Copy (CurrentDptName,NewDptName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /******************************************************************************/ @@ -861,7 +854,7 @@ static void Dpt_PutFormToCreateDepartment (void) /***** Department short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Dpt_EditingDpt->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Dpt_EditingDpt->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -870,7 +863,7 @@ static void Dpt_PutFormToCreateDepartment (void) /***** Department full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Dpt_EditingDpt->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Dpt_EditingDpt->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -937,10 +930,10 @@ void Dpt_ReceiveFormNewDpt (void) Dpt_EditingDpt->InsCod = ParCod_GetAndCheckPar (ParCod_OthIns); /* Get department short name */ - Par_GetParText ("ShortName",Dpt_EditingDpt->ShrtName,Hie_MAX_BYTES_SHRT_NAME); + Par_GetParText ("ShortName",Dpt_EditingDpt->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get department full name */ - Par_GetParText ("FullName",Dpt_EditingDpt->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("FullName",Dpt_EditingDpt->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get department WWW */ Par_GetParText ("WWW",Dpt_EditingDpt->WWW,Cns_MAX_BYTES_WWW); diff --git a/swad_department.h b/swad_department.h index d66d2c95..fd43e33e 100644 --- a/swad_department.h +++ b/swad_department.h @@ -37,8 +37,8 @@ struct Dpt_Department { long DptCod; long InsCod; - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; - char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; unsigned NumTchs; // Non-editing teachers and teachers }; diff --git a/swad_global.h b/swad_global.h index a9bfae83..d9528a98 100644 --- a/swad_global.h +++ b/swad_global.h @@ -249,8 +249,8 @@ struct Globals struct { long HieCod; - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; bool Valid; } InstitutionShrtNameAndCty; struct diff --git a/swad_group.h b/swad_group.h index 6db8766d..efc26d00 100644 --- a/swad_group.h +++ b/swad_group.h @@ -67,7 +67,7 @@ struct GroupData struct { long RooCod; // Room code - char ShrtName[Roo_MAX_BYTES_SHRT_NAME + 1]; // Room short name + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Room short name } Room; unsigned MaxStudents; int Vacant; @@ -83,7 +83,7 @@ struct Group struct { long RooCod; // Room code - char ShrtName[Roo_MAX_BYTES_SHRT_NAME + 1]; // Room short name + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Room short name } Room; unsigned NumUsrs[Rol_NUM_ROLES]; // Number of users in the group unsigned MaxStudents; // Maximum number of students in the group diff --git a/swad_hierarchy_config.c b/swad_hierarchy_config.c index 236c27af..2785a165 100644 --- a/swad_hierarchy_config.c +++ b/swad_hierarchy_config.c @@ -102,7 +102,7 @@ void HieCfg_FullName (bool PutForm,Act_Action_t NextAction,Hie_Level_t Level, { /* Form to change full name */ Frm_BeginForm (NextAction); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME, Gbl.Hierarchy.Node[Level].FullName, HTM_SUBMIT_ON_CHANGE, "id=\"FullName\"" @@ -140,7 +140,7 @@ void HieCfg_ShrtName (bool PutForm,Act_Action_t NextAction,Hie_Level_t Level) { /* Form to change short name */ Frm_BeginForm (NextAction); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME, Gbl.Hierarchy.Node[Level].ShrtName, HTM_SUBMIT_ON_CHANGE, "id=\"ShortName\"" diff --git a/swad_hierarchy_type.h b/swad_hierarchy_type.h index 5cb4820f..1908db67 100644 --- a/swad_hierarchy_type.h +++ b/swad_hierarchy_type.h @@ -72,12 +72,6 @@ typedef enum #define Hie_MAX_CHARS_INSTITUTIONAL_COD (16 - 1) // 15 #define Hie_MAX_BYTES_INSTITUTIONAL_COD ((Hie_MAX_CHARS_INSTITUTIONAL_COD + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 255 -#define Hie_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Hie_MAX_BYTES_SHRT_NAME ((Hie_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Hie_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Hie_MAX_BYTES_FULL_NAME ((Hie_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - struct Hie_MyNode { long HieCod; // Course/degree/center/institution/country code @@ -98,8 +92,8 @@ struct Hie_Node Hie_Status_t Status; // Node status long RequesterUsrCod; // User code of the person who requested the creation of this node char InstitutionalCod[Hie_MAX_BYTES_INSTITUTIONAL_COD + 1]; // Institutional code of the node - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; // Short name of the node - char FullName[Hie_MAX_BYTES_FULL_NAME + 1]; // Full name of the node + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Short name of the node + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; // Full name of the node char WWW[Cns_MAX_BYTES_WWW + 1]; struct { diff --git a/swad_holiday.h b/swad_holiday.h index 00088eac..c679cf67 100644 --- a/swad_holiday.h +++ b/swad_holiday.h @@ -55,7 +55,7 @@ struct Hld_Holiday { long HldCod; long PlcCod; - char PlaceFullName[Plc_MAX_BYTES_PLACE_FULL_NAME + 1]; + char PlaceFullName[Cns_MAX_BYTES_FULL_NAME + 1]; Hld_HolidayType_t HldTyp; struct Dat_Date StartDate; struct Dat_Date EndDate; diff --git a/swad_institution.c b/swad_institution.c index c6d8e09a..6d836e53 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -90,7 +90,7 @@ static void Ins_GetInstitDataFromRow (MYSQL_RES *mysql_res, static void Ins_ListInstitutionsForEdition (void); static bool Ins_CheckIfICanEdit (struct Hie_Node *Ins); -static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewInsName); +static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewName); static void Ins_ShowAlertAndButtonToGoToIns (void); @@ -638,7 +638,7 @@ void Ins_GetFullListOfInstitutions (long CtyCod) void Ins_WriteInstitutionNameAndCty (long InsCod) { struct Hie_Node Ins; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get institution short name and country name *****/ Ins.HieCod = InsCod; @@ -746,7 +746,7 @@ void Ins_FlushCacheFullNameAndCtyOfInstitution (void) } void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]) + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]) { MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -766,7 +766,7 @@ void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, Str_Copy (Ins->ShrtName,Gbl.Cache.InstitutionShrtNameAndCty.ShrtName, sizeof (Ins->ShrtName) - 1); Str_Copy (CtyName,Gbl.Cache.InstitutionShrtNameAndCty.CtyName, - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); return; } @@ -796,7 +796,7 @@ void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, Str_Copy (Ins->ShrtName,Gbl.Cache.InstitutionShrtNameAndCty.ShrtName, sizeof (Ins->ShrtName) - 1); Str_Copy (CtyName ,Gbl.Cache.InstitutionShrtNameAndCty.CtyName , - Hie_MAX_BYTES_FULL_NAME); + Cns_MAX_BYTES_FULL_NAME); Gbl.Cache.InstitutionShrtNameAndCty.Valid = true; } @@ -946,7 +946,7 @@ static void Ins_ListInstitutionsForEdition (void) { Frm_BeginForm (ActRenInsSho); ParCod_PutPar (ParCod_OthHie,Ins->HieCod); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ins->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ins->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -962,7 +962,7 @@ static void Ins_ListInstitutionsForEdition (void) { Frm_BeginForm (ActRenInsFul); ParCod_PutPar (ParCod_OthHie,Ins->HieCod); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ins->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ins->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -1160,67 +1160,60 @@ void Ins_RenameInsFull (void) void Ins_RenameInstitution (struct Hie_Node *Ins,Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_institution_X_already_exists; extern const char *Txt_The_institution_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentInsName = NULL; // Initialized to avoid warning - char NewInsName[Hie_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Hie_MAX_BYTES_SHRT_NAME; - CurrentInsName = Ins->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Hie_MAX_BYTES_FULL_NAME; - CurrentInsName = Ins->FullName; - break; - } + [Cns_SHRT_NAME] = Ins->ShrtName, + [Cns_FULL_NAME] = Ins->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get the new name for the institution from form *****/ - Par_GetParText (ParName,NewInsName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the institution *****/ Ins_GetInstitDataByCod (Ins); /***** Check if new name is empty *****/ - if (NewInsName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentInsName,NewInsName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If institution was in database... *****/ - if (Ins_DB_CheckIfInsNameExistsInCty (ParName,NewInsName,Ins->HieCod, + if (Ins_DB_CheckIfInsNameExistsInCty (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Ins->HieCod, Gbl.Hierarchy.Node[Hie_CTY].HieCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_institution_X_already_exists, - NewInsName); + NewName); else { /* Update the table changing old name by new name */ - Ins_UpdateInsNameDB (Ins->HieCod,FldName,NewInsName); + Ins_UpdateInsNameDB (Ins->HieCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Create message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_institution_X_has_been_renamed_as_Y, - CurrentInsName,NewInsName); + CurrentName[ShrtOrFullName],NewName); /* Change current institution name in order to display it properly */ - Str_Copy (CurrentInsName,NewInsName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentInsName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); @@ -1230,10 +1223,10 @@ void Ins_RenameInstitution (struct Hie_Node *Ins,Cns_ShrtOrFullName_t ShrtOrFull /************ Update institution name in table of institutions ***************/ /*****************************************************************************/ -static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewInsName) +static void Ins_UpdateInsNameDB (long InsCod,const char *FldName,const char *NewName) { /***** Update institution changing old name by new name */ - Ins_DB_UpdateInsName (InsCod,FldName,NewInsName); + Ins_DB_UpdateInsName (InsCod,FldName,NewName); /***** Flush caches *****/ Ins_FlushCacheFullNameAndCtyOfInstitution (); @@ -1392,7 +1385,7 @@ static void Ins_PutFormToCreateInstitution (void) /***** Institution short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Hie_MAX_CHARS_SHRT_NAME,Ins_EditingIns->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Ins_EditingIns->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1401,7 +1394,7 @@ static void Ins_PutFormToCreateInstitution (void) /***** Institution full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Hie_MAX_CHARS_FULL_NAME,Ins_EditingIns->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Ins_EditingIns->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1523,8 +1516,8 @@ static void Ins_ReceiveFormRequestOrCreateIns (Hie_Status_t Status) Ins_EditingIns->PrtCod = Gbl.Hierarchy.Node[Hie_CTY].HieCod; /* Get institution short name, full name and WWW */ - Par_GetParText ("ShortName",Ins_EditingIns->ShrtName,Hie_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Ins_EditingIns->FullName,Hie_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Ins_EditingIns->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Ins_EditingIns->FullName,Cns_MAX_BYTES_FULL_NAME); Par_GetParText ("WWW" ,Ins_EditingIns->WWW ,Cns_MAX_BYTES_WWW); if (Ins_EditingIns->ShrtName[0] && diff --git a/swad_institution.h b/swad_institution.h index 5152c5f0..e916ebf7 100644 --- a/swad_institution.h +++ b/swad_institution.h @@ -51,7 +51,7 @@ void Ins_WriteInstitutionNameAndCty (long InsCod); bool Ins_GetInstitDataByCod (struct Hie_Node *Ins); void Ins_FlushCacheFullNameAndCtyOfInstitution (void); void Ins_GetShrtNameAndCtyOfInstitution (struct Hie_Node *Ins, - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]); + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]); void Ins_WriteSelectorOfInstitution (void); diff --git a/swad_institution_database.c b/swad_institution_database.c index f909bba6..897a3b87 100644 --- a/swad_institution_database.c +++ b/swad_institution_database.c @@ -97,14 +97,14 @@ void Ins_DB_UpdateInsStatus (long InsCod,Hie_Status_t Status) /*************************** Update institution name *************************/ /*****************************************************************************/ -void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewInsName) +void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewName) { /***** Update institution changing old name by new name */ DB_QueryUPDATE ("can not update the name of an institution", "UPDATE ins_instits" " SET %s='%s'" " WHERE InsCod=%ld", - FldName,NewInsName, + FldName,NewName, InsCod); } @@ -148,7 +148,7 @@ unsigned Ins_DB_GetInsDataByCod (MYSQL_RES **mysql_res,long InsCod) /*********** Get the short name of an institution from its code **************/ /*****************************************************************************/ -void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]) +void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]) { /***** Trivial check: institution code should be > 0 *****/ if (InsCod <= 0) @@ -158,7 +158,7 @@ void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + } /***** Get short name of institution from database *****/ - DB_QuerySELECTString (ShrtName,Hie_MAX_BYTES_SHRT_NAME, + DB_QuerySELECTString (ShrtName,Cns_MAX_BYTES_SHRT_NAME, "can not get the short name of an institution", "SELECT ShortName" " FROM ins_instits" diff --git a/swad_institution_database.h b/swad_institution_database.h index 802c7831..68d0c78f 100644 --- a/swad_institution_database.h +++ b/swad_institution_database.h @@ -40,11 +40,11 @@ long Ins_DB_CreateInstitution (const struct Hie_Node *Ins,Hie_Status_t Status); void Ins_DB_UpdateInsCty (long InsCod,long CtyCod); void Ins_DB_UpdateInsStatus (long InsCod,Hie_Status_t Status); -void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewInsName); +void Ins_DB_UpdateInsName (long InsCod,const char *FldName,const char *NewName); void Ins_DB_UpdateInsWWW (long InsCod,const char NewWWW[Cns_MAX_BYTES_WWW + 1]); unsigned Ins_DB_GetInsDataByCod (MYSQL_RES **mysql_res,long InsCod); -void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]); +void Ins_DB_GetInsShrtName (long InsCod,char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]); unsigned Ins_DB_GetInsShrtNameAndCty (MYSQL_RES **mysql_res,long InsCod); bool Ins_DB_CheckIfInsNameExistsInCty (const char *FldName, const char *Name, diff --git a/swad_link.c b/swad_link.c index d2aebc6e..8afa078c 100644 --- a/swad_link.c +++ b/swad_link.c @@ -430,7 +430,7 @@ static void Lnk_ListLinksForEdition (const struct Lnk_Links *Links) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenLnkSho); ParCod_PutPar (ParCod_Lnk,Lnk->LnkCod); - HTM_INPUT_TEXT ("ShortName",Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Lnk->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -442,7 +442,7 @@ static void Lnk_ListLinksForEdition (const struct Lnk_Links *Links) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenLnkFul); ParCod_PutPar (ParCod_Lnk,Lnk->LnkCod); - HTM_INPUT_TEXT ("FullName",Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Lnk->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -536,73 +536,66 @@ void Lnk_RenameLinkFull (void) static void Lnk_RenameLink (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_link_X_already_exists; extern const char *Txt_The_link_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentLnkName = NULL; // Initialized to avoid warning - char NewLnkName[Lnk_MAX_BYTES_LINK_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Lnk_MAX_BYTES_LINK_SHRT_NAME; - CurrentLnkName = Lnk_EditingLnk->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Lnk_MAX_BYTES_LINK_FULL_NAME; - CurrentLnkName = Lnk_EditingLnk->FullName; - break; - } + [Cns_SHRT_NAME] = Lnk_EditingLnk->ShrtName, + [Cns_FULL_NAME] = Lnk_EditingLnk->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the link */ Lnk_EditingLnk->LnkCod = ParCod_GetAndCheckPar (ParCod_Lnk); /* Get the new name for the link */ - Par_GetParText (ParName,NewLnkName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get link data from the database *****/ Lnk_GetLinkDataByCod (Lnk_EditingLnk); /***** Check if new name is empty *****/ - if (NewLnkName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentLnkName,NewLnkName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If link was in database... *****/ - if (Lnk_DB_CheckIfLinkNameExists (ParName,NewLnkName,Lnk_EditingLnk->LnkCod)) + if (Lnk_DB_CheckIfLinkNameExists (Cns_ParShrtOrFullName[ShrtOrFullName], + NewName,Lnk_EditingLnk->LnkCod)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_link_X_already_exists, - NewLnkName); + NewName); else { /* Update the table changing old name by new name */ - Lnk_DB_UpdateLnkName (Lnk_EditingLnk->LnkCod,FldName,NewLnkName); + Lnk_DB_UpdateLnkName (Lnk_EditingLnk->LnkCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_link_X_has_been_renamed_as_Y, - CurrentLnkName,NewLnkName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentLnkName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update name *****/ - Str_Copy (CurrentLnkName,NewLnkName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -685,7 +678,7 @@ static void Lnk_PutFormToCreateLink (void) /***** Link short name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("ShortName",Lnk_MAX_CHARS_LINK_SHRT_NAME,Lnk_EditingLnk->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Lnk_EditingLnk->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -694,7 +687,7 @@ static void Lnk_PutFormToCreateLink (void) /***** Link full name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("FullName",Lnk_MAX_CHARS_LINK_FULL_NAME,Lnk_EditingLnk->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Lnk_EditingLnk->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -750,10 +743,10 @@ void Lnk_ReceiveFormNewLink (void) /***** Get parameters from form *****/ /* Get link short name */ - Par_GetParText ("ShortName",Lnk_EditingLnk->ShrtName,Lnk_MAX_BYTES_LINK_SHRT_NAME); + Par_GetParText ("ShortName",Lnk_EditingLnk->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get link full name */ - Par_GetParText ("FullName",Lnk_EditingLnk->FullName,Lnk_MAX_BYTES_LINK_FULL_NAME); + Par_GetParText ("FullName",Lnk_EditingLnk->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get link URL */ Par_GetParText ("WWW",Lnk_EditingLnk->WWW,Cns_MAX_BYTES_WWW); diff --git a/swad_link.h b/swad_link.h index 4e4b206c..b7d1e216 100644 --- a/swad_link.h +++ b/swad_link.h @@ -27,17 +27,11 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Lnk_MAX_CHARS_LINK_SHRT_NAME (32 - 1) // 31 -#define Lnk_MAX_BYTES_LINK_SHRT_NAME ((Lnk_MAX_CHARS_LINK_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Lnk_MAX_CHARS_LINK_FULL_NAME (128 - 1) // 127 -#define Lnk_MAX_BYTES_LINK_FULL_NAME ((Lnk_MAX_CHARS_LINK_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - struct Lnk_Link { long LnkCod; - char ShrtName[Lnk_MAX_BYTES_LINK_SHRT_NAME + 1]; - char FullName[Lnk_MAX_BYTES_LINK_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; char WWW[Cns_MAX_BYTES_WWW + 1]; }; diff --git a/swad_mail.c b/swad_mail.c index 010aac55..3ed786ad 100644 --- a/swad_mail.c +++ b/swad_mail.c @@ -590,71 +590,71 @@ static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName) extern const char *Txt_The_email_domain_X_already_exists; extern const char *Txt_The_email_domain_X_has_been_renamed_as_Y; extern const char *Txt_The_email_domain_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentMaiName = NULL; // Initialized to avoid warning - char NewMaiName[Mai_MAX_BYTES_MAIL_INFO + 1]; - - switch (ShrtOrFullName) + static const char *ParName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "Domain"; - FldName = "Domain"; - MaxBytes = Cns_MAX_BYTES_EMAIL_ADDRESS; - CurrentMaiName = Mai_EditingMai->Domain; - break; - case Cns_FULL_NAME: - ParName = "Info"; - FldName = "Info"; - MaxBytes = Mai_MAX_BYTES_MAIL_INFO; - CurrentMaiName = Mai_EditingMai->Info; - break; - } + [Cns_SHRT_NAME] = "Domain", + [Cns_FULL_NAME] = "Info", + }; + static const char *FldName[Cns_NUM_SHRT_FULL_NAMES] = + { + [Cns_SHRT_NAME] = "Domain", + [Cns_FULL_NAME] = "Info", + }; + static unsigned MaxBytes[Cns_NUM_SHRT_FULL_NAMES] = + { + [Cns_SHRT_NAME] = Cns_MAX_BYTES_EMAIL_ADDRESS, + [Cns_FULL_NAME] = Mai_MAX_BYTES_MAIL_INFO, + }; + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = + { + [Cns_SHRT_NAME] = Mai_EditingMai->Domain, + [Cns_FULL_NAME] = Mai_EditingMai->Info, + }; + char NewName[Mai_MAX_BYTES_MAIL_INFO + 1]; /***** Get parameters from form *****/ /* Get the code of the mail */ Mai_EditingMai->MaiCod = ParCod_GetAndCheckPar (ParCod_Mai); /* Get the new name for the mail */ - Par_GetParText (ParName,NewMaiName,MaxBytes); + Par_GetParText (ParName[ShrtOrFullName],NewName,MaxBytes[ShrtOrFullName]); /***** Get from the database the old names of the mail *****/ Mai_GetMailDomainDataByCod (Mai_EditingMai); /***** Check if new name is empty *****/ - if (NewMaiName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentMaiName,NewMaiName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If mail was in database... *****/ - if (Mai_DB_CheckIfMailDomainNameExists (ParName,NewMaiName,Mai_EditingMai->MaiCod)) + if (Mai_DB_CheckIfMailDomainNameExists (ParName[ShrtOrFullName],NewName,Mai_EditingMai->MaiCod)) Ale_CreateAlert (Ale_WARNING,Mai_EMAIL_SECTION_ID, Txt_The_email_domain_X_already_exists, - NewMaiName); + NewName); else { /* Update the table changing old name by new name */ - Mai_DB_UpdateMailDomainName (Mai_EditingMai->MaiCod,FldName,NewMaiName); + Mai_DB_UpdateMailDomainName (Mai_EditingMai->MaiCod,FldName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,Mai_EMAIL_SECTION_ID, Txt_The_email_domain_X_has_been_renamed_as_Y, - CurrentMaiName,NewMaiName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,Mai_EMAIL_SECTION_ID, Txt_The_email_domain_X_has_not_changed, - CurrentMaiName); + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update name *****/ - Str_Copy (CurrentMaiName,NewMaiName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName,MaxBytes[ShrtOrFullName]); } /*****************************************************************************/ diff --git a/swad_message.h b/swad_message.h index 5a490777..f20f2c9b 100644 --- a/swad_message.h +++ b/swad_message.h @@ -63,7 +63,7 @@ typedef enum struct Msg_Course { long CrsCod; - char ShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; }; // Distinct courses in my messages sent or received struct Msg_Messages @@ -72,7 +72,7 @@ struct Msg_Messages unsigned NumMsgs; char Subject[Cns_MAX_BYTES_SUBJECT + 1]; long FilterCrsCod; // Show only messages sent from this course code - char FilterCrsShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char FilterCrsShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; char FilterFromTo[Usr_MAX_BYTES_FULL_NAME + 1]; // Show only messages from/to these users char FilterContent[Msg_MAX_BYTES_FILTER_CONTENT + 1]; // Show only messages that match this content bool ShowOnlyUnreadMsgs; // Show only unread messages (this option is applicable only for received messages) diff --git a/swad_photo.c b/swad_photo.c index c291cbc3..c4a556c7 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -1072,9 +1072,9 @@ void Pho_BuildHTMLUsrPhoto (const struct Usr_Data *UsrDat,const char *PhotoURL, bool PutZoomCode = (Zoom == Pho_ZOOM) && // Make zoom BrowserTabIs1stTab; // Only in main browser tab (or AJAX) char IdCaption[Frm_MAX_BYTES_ID + 1]; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; struct Hie_Node Ins; - char MainDegreeShrtName[Hie_MAX_BYTES_SHRT_NAME + 1]; + char MainDegreeShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; Rol_Role_t MaxRole; // Maximum user's role in his/her main degree struct { @@ -2368,7 +2368,7 @@ static void Pho_ShowDegreeAvgPhotoAndStat (const struct Hie_Node *Deg, unsigned PhotoHeight; char PathRelAvgPhoto[PATH_MAX + 1]; char PhotoURL[Cns_MAX_BYTES_WWW + 1]; - char PhotoCaption[1024 + Hie_MAX_BYTES_SHRT_NAME]; + char PhotoCaption[1024 + Cns_MAX_BYTES_SHRT_NAME]; bool ShowDegPhoto; char IdCaption[Frm_MAX_BYTES_ID + 1]; diff --git a/swad_place.c b/swad_place.c index ea8b2f90..fd299000 100644 --- a/swad_place.c +++ b/swad_place.c @@ -481,7 +481,7 @@ static void Plc_ListPlacesForEdition (const struct Plc_Places *Places) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenPlcSho); ParCod_PutPar (ParCod_Plc,Plc->PlcCod); - HTM_INPUT_TEXT ("ShortName",Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Plc->ShrtName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"", The_GetSuffix ()); @@ -492,7 +492,7 @@ static void Plc_ListPlacesForEdition (const struct Plc_Places *Places) HTM_TD_Begin ("class=\"CM\""); Frm_BeginForm (ActRenPlcFul); ParCod_PutPar (ParCod_Plc,Plc->PlcCod); - HTM_INPUT_TEXT ("FullName",Plc_MAX_CHARS_PLACE_FULL_NAME,Plc->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Plc->FullName, HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"", The_GetSuffix ()); @@ -587,73 +587,67 @@ void Plc_RenamePlaceFull (void) static void Plc_RenamePlace (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_place_X_already_exists; extern const char *Txt_The_place_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentPlcName = NULL; // Initialized to avoid warning - char NewPlcName[Plc_MAX_BYTES_PLACE_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Plc_MAX_BYTES_PLACE_SHRT_NAME; - CurrentPlcName = Plc_EditingPlc->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Plc_MAX_BYTES_PLACE_FULL_NAME; - CurrentPlcName = Plc_EditingPlc->FullName; - break; - } + [Cns_SHRT_NAME] = Plc_EditingPlc->ShrtName, + [Cns_FULL_NAME] = Plc_EditingPlc->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get the code of the place */ Plc_EditingPlc->PlcCod = ParCod_GetAndCheckPar (ParCod_Plc); /* Get the new name for the place */ - Par_GetParText (ParName,NewPlcName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get place old names from database *****/ Plc_GetPlaceDataByCod (Plc_EditingPlc); /***** Check if new name is empty *****/ - if (NewPlcName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentPlcName,NewPlcName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If place was in database... *****/ - if (Plc_DB_CheckIfPlaceNameExists (Plc_EditingPlc->PlcCod,ParName,NewPlcName)) + if (Plc_DB_CheckIfPlaceNameExists (Plc_EditingPlc->PlcCod, + Cns_ParShrtOrFullName[ShrtOrFullName], + NewName)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_place_X_already_exists, - NewPlcName); + NewName); else { /* Update the table changing old name by new name */ - Plc_DB_UpdatePlcName (Plc_EditingPlc->PlcCod,FldName,NewPlcName); + Plc_DB_UpdatePlcName (Plc_EditingPlc->PlcCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_place_X_has_been_renamed_as_Y, - CurrentPlcName,NewPlcName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentPlcName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update place name *****/ - Str_Copy (CurrentPlcName,NewPlcName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -696,7 +690,7 @@ static void Plc_PutFormToCreatePlace (void) /***** Place short name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("ShortName",Plc_MAX_CHARS_PLACE_SHRT_NAME,Plc_EditingPlc->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Plc_EditingPlc->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -705,7 +699,7 @@ static void Plc_PutFormToCreatePlace (void) /***** Place full name *****/ HTM_TD_Begin ("class=\"CM\""); - HTM_INPUT_TEXT ("FullName",Plc_MAX_CHARS_PLACE_FULL_NAME,Plc_EditingPlc->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Plc_EditingPlc->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -757,10 +751,10 @@ void Plc_ReceiveFormNewPlace (void) /***** Get parameters from form *****/ /* Get place short name */ - Par_GetParText ("ShortName",Plc_EditingPlc->ShrtName,Plc_MAX_BYTES_PLACE_SHRT_NAME); + Par_GetParText ("ShortName",Plc_EditingPlc->ShrtName,Cns_MAX_BYTES_SHRT_NAME); /* Get place full name */ - Par_GetParText ("FullName",Plc_EditingPlc->FullName,Plc_MAX_BYTES_PLACE_FULL_NAME); + Par_GetParText ("FullName",Plc_EditingPlc->FullName,Cns_MAX_BYTES_FULL_NAME); if (Plc_EditingPlc->ShrtName[0] && Plc_EditingPlc->FullName[0]) // If there's a place name diff --git a/swad_place.h b/swad_place.h index 5afaf914..ab8a1e76 100644 --- a/swad_place.h +++ b/swad_place.h @@ -33,18 +33,12 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Plc_MAX_CHARS_PLACE_SHRT_NAME (32 - 1) // 31 -#define Plc_MAX_BYTES_PLACE_SHRT_NAME ((Plc_MAX_CHARS_PLACE_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#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 Plc_Place { long PlcCod; long InsCod; - char ShrtName[Plc_MAX_BYTES_PLACE_SHRT_NAME + 1]; - char FullName[Plc_MAX_BYTES_PLACE_FULL_NAME + 1]; + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; unsigned NumCtrs; }; diff --git a/swad_report.c b/swad_report.c index ea6644a8..b7c99862 100644 --- a/swad_report.c +++ b/swad_report.c @@ -484,7 +484,7 @@ static void Rep_WriteSectionUsrInfo (void) extern const char *Txt_Email; extern const char *Txt_Country; extern const char *Txt_Institution; - char CtyName[Hie_MAX_BYTES_FULL_NAME + 1]; + char CtyName[Cns_MAX_BYTES_FULL_NAME + 1]; struct Hie_Node Ins; /***** Begin section *****/ diff --git a/swad_room.c b/swad_room.c index d8539820..24c79adb 100644 --- a/swad_room.c +++ b/swad_room.c @@ -696,7 +696,7 @@ static void Roo_ListRoomsForEdition (const struct Bld_Buildings *Buildings, HTM_TD_Begin ("class=\"LT\""); Frm_BeginFormAnchor (ActRenRooSho,Anchor); ParCod_PutPar (ParCod_Roo,Room->RooCod); - HTM_INPUT_TEXT ("ShortName",Roo_MAX_CHARS_SHRT_NAME,Room->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Room->ShrtName, HTM_SUBMIT_ON_CHANGE, "size=\"10\"" " class=\"INPUT_SHORT_NAME INPUT_%s\"", @@ -708,7 +708,7 @@ static void Roo_ListRoomsForEdition (const struct Bld_Buildings *Buildings, HTM_TD_Begin ("class=\"LT\""); Frm_BeginFormAnchor (ActRenRooFul,Anchor); ParCod_PutPar (ParCod_Roo,Room->RooCod); - HTM_INPUT_TEXT ("FullName",Roo_MAX_CHARS_FULL_NAME,Room->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Room->FullName, HTM_SUBMIT_ON_CHANGE, "size=\"20\"" " class=\"INPUT_FULL_NAME INPUT_%s\"", @@ -1056,75 +1056,68 @@ void Roo_RenameRoomFull (void) static void Roo_RenameRoom (Cns_ShrtOrFullName_t ShrtOrFullName) { + extern const char *Cns_ParShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern const char *Cns_FldShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; + extern unsigned Cns_MaxBytesShrtOrFullName[Cns_NUM_SHRT_FULL_NAMES]; extern const char *Txt_The_room_X_already_exists; extern const char *Txt_The_room_X_has_been_renamed_as_Y; extern const char *Txt_The_name_X_has_not_changed; - const char *ParName = NULL; // Initialized to avoid warning - const char *FldName = NULL; // Initialized to avoid warning - unsigned MaxBytes = 0; // Initialized to avoid warning - char *CurrentClaName = NULL; // Initialized to avoid warning - char NewClaName[Roo_MAX_BYTES_FULL_NAME + 1]; - - switch (ShrtOrFullName) + char *CurrentName[Cns_NUM_SHRT_FULL_NAMES] = { - case Cns_SHRT_NAME: - ParName = "ShortName"; - FldName = "ShortName"; - MaxBytes = Roo_MAX_BYTES_SHRT_NAME; - CurrentClaName = Roo_EditingRoom->ShrtName; - break; - case Cns_FULL_NAME: - ParName = "FullName"; - FldName = "FullName"; - MaxBytes = Roo_MAX_BYTES_FULL_NAME; - CurrentClaName = Roo_EditingRoom->FullName; - break; - } + [Cns_SHRT_NAME] = Roo_EditingRoom->ShrtName, + [Cns_FULL_NAME] = Roo_EditingRoom->FullName, + }; + char NewName[Cns_MAX_BYTES_FULL_NAME + 1]; /***** Get parameters from form *****/ /* Get room code */ Roo_EditingRoom->RooCod = ParCod_GetAndCheckPar (ParCod_Roo); /* Get the new name for the room */ - Par_GetParText (ParName,NewClaName,MaxBytes); + Par_GetParText (Cns_ParShrtOrFullName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); /***** Get from the database the old names of the room *****/ Roo_GetRoomDataByCod (Roo_EditingRoom); /***** Check if new name is empty *****/ - if (NewClaName[0]) + if (NewName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - if (strcmp (CurrentClaName,NewClaName)) // Different names + if (strcmp (CurrentName[ShrtOrFullName],NewName)) // Different names { /***** If room was in database... *****/ if (Roo_DB_CheckIfRoomNameExists (Gbl.Hierarchy.Node[Hie_CTR].HieCod, Roo_EditingRoom->RooCod, - ParName,NewClaName)) + Cns_ParShrtOrFullName[ShrtOrFullName], + NewName)) Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_room_X_already_exists, - NewClaName); + NewName); else { /* Update the table changing old name by new name */ - Roo_DB_UpdateRoomName (Roo_EditingRoom->RooCod,FldName,NewClaName); + Roo_DB_UpdateRoomName (Roo_EditingRoom->RooCod, + Cns_FldShrtOrFullName[ShrtOrFullName],NewName); /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_room_X_has_been_renamed_as_Y, - CurrentClaName,NewClaName); + CurrentName[ShrtOrFullName],NewName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,CurrentClaName); + Txt_The_name_X_has_not_changed, + CurrentName[ShrtOrFullName]); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); /***** Update room name *****/ - Str_Copy (CurrentClaName,NewClaName,MaxBytes); + Str_Copy (CurrentName[ShrtOrFullName],NewName, + Cns_MaxBytesShrtOrFullName[ShrtOrFullName]); } /*****************************************************************************/ @@ -1255,7 +1248,7 @@ static void Roo_PutFormToCreateRoom (const struct Bld_Buildings *Buildings) /***** Room short name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("ShortName",Roo_MAX_CHARS_SHRT_NAME,Roo_EditingRoom->ShrtName, + HTM_INPUT_TEXT ("ShortName",Cns_MAX_CHARS_SHRT_NAME,Roo_EditingRoom->ShrtName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"10\" class=\"INPUT_SHORT_NAME INPUT_%s\"" " required=\"required\"", @@ -1264,7 +1257,7 @@ static void Roo_PutFormToCreateRoom (const struct Bld_Buildings *Buildings) /***** Room full name *****/ HTM_TD_Begin ("class=\"LM\""); - HTM_INPUT_TEXT ("FullName",Roo_MAX_CHARS_FULL_NAME,Roo_EditingRoom->FullName, + HTM_INPUT_TEXT ("FullName",Cns_MAX_CHARS_FULL_NAME,Roo_EditingRoom->FullName, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"20\" class=\"INPUT_FULL_NAME INPUT_%s\"" " required=\"required\"", @@ -1342,8 +1335,8 @@ void Roo_ReceiveFormNewRoom (void) Roo_EditingRoom->Type = Roo_GetParType (); /* Get room short name and full name */ - Par_GetParText ("ShortName",Roo_EditingRoom->ShrtName,Roo_MAX_BYTES_SHRT_NAME); - Par_GetParText ("FullName" ,Roo_EditingRoom->FullName,Roo_MAX_BYTES_FULL_NAME); + Par_GetParText ("ShortName",Roo_EditingRoom->ShrtName,Cns_MAX_BYTES_SHRT_NAME); + Par_GetParText ("FullName" ,Roo_EditingRoom->FullName,Cns_MAX_BYTES_FULL_NAME); /* Get seating capacity */ Roo_EditingRoom->Capacity = (unsigned) diff --git a/swad_room.h b/swad_room.h index 5784475e..386cdac2 100644 --- a/swad_room.h +++ b/swad_room.h @@ -34,12 +34,6 @@ /************************** Public types and constants ***********************/ /*****************************************************************************/ -#define Roo_MAX_CHARS_SHRT_NAME (32 - 1) // 31 -#define Roo_MAX_BYTES_SHRT_NAME ((Roo_MAX_CHARS_SHRT_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 511 - -#define Roo_MAX_CHARS_FULL_NAME (128 - 1) // 127 -#define Roo_MAX_BYTES_FULL_NAME ((Roo_MAX_CHARS_FULL_NAME + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 - #define Roo_MAX_CAPACITY 10000 // If capacity of a room is greater than this, it is considered infinite #define Roo_UNLIMITED_CAPACITY INT_MAX // This number can be stored in database as an integer... // ...and means that a room has no limited capacity @@ -79,11 +73,11 @@ struct Roo_Room long RooCod; // Room code long CtrCod; // Center code long BldCod; // Building code - char BldShrtName[Bld_MAX_BYTES_SHRT_NAME + 1]; // Building short name + char BldShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Building short name int Floor; // Room floor Roo_RoomType_t Type; // Room type - char ShrtName[Roo_MAX_BYTES_SHRT_NAME + 1]; // Room short name - char FullName[Roo_MAX_BYTES_FULL_NAME + 1]; // Room full name + char ShrtName[Cns_MAX_BYTES_SHRT_NAME + 1]; // Room short name + char FullName[Cns_MAX_BYTES_FULL_NAME + 1]; // Room full name unsigned Capacity; // Room seating capacity // (maximum people who fit in the room) unsigned long long MACnum; diff --git a/swad_test_print.c b/swad_test_print.c index 56350d5f..f22bb1b6 100644 --- a/swad_test_print.c +++ b/swad_test_print.c @@ -674,6 +674,23 @@ static void TstPrn_WriteQstAndAnsExam (struct Usr_Data *UsrDat, TstPrn_ComputeAnswerScore (&PrintedQuestions[QstInd],Question); TstPrn_WriteAnswersExam (UsrDat,&PrintedQuestions[QstInd],Question, ICanView,"Qst_TXT","Qst_TXT_LIGHT"); + + /* Write score retrieved from database */ + if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE]) + { + HTM_DIV_Begin ("class=\"LM DAT_SMALL_%s\"", + The_GetSuffix ()); + HTM_TxtColonNBSP (Txt_Score); + HTM_SPAN_Begin ("class=\"%s_%s\"", + PrintedQuestions[QstInd].StrAnswers[0] ? + (PrintedQuestions[QstInd].Score > 0 ? "Qst_ANS_OK" : // Correct + "Qst_ANS_BAD") : // Wrong + "Qst_ANS_0", // Blank answer + The_GetSuffix ()); + HTM_Double2Decimals (PrintedQuestions[QstInd].Score); + HTM_SPAN_End (); + HTM_DIV_End (); + } } else Ale_ShowAlert (Ale_WARNING,Txt_Question_modified); @@ -681,23 +698,6 @@ static void TstPrn_WriteQstAndAnsExam (struct Usr_Data *UsrDat, else Ale_ShowAlert (Ale_WARNING,Txt_Question_removed); - /* Write score retrieved from database */ - if (ICanView[TstVis_VISIBLE_EACH_QST_SCORE]) - { - HTM_DIV_Begin ("class=\"LM DAT_SMALL_%s\"", - The_GetSuffix ()); - HTM_TxtColonNBSP (Txt_Score); - HTM_SPAN_Begin ("class=\"%s_%s\"", - PrintedQuestions[QstInd].StrAnswers[0] ? - (PrintedQuestions[QstInd].Score > 0 ? "Qst_ANS_OK" : // Correct - "Qst_ANS_BAD") : // Wrong - "Qst_ANS_0", // Blank answer - The_GetSuffix ()); - HTM_Double2Decimals (PrintedQuestions[QstInd].Score); - HTM_SPAN_End (); - HTM_DIV_End (); - } - /* Question feedback */ if (QuestionUneditedAfterExam) if (ICanView[TstVis_VISIBLE_FEEDBACK_TXT])