From 51b5f81cb81f7801125d09b0dd81ac94bac51952 Mon Sep 17 00:00:00 2001 From: acanas Date: Fri, 15 Sep 2023 12:51:50 +0200 Subject: [PATCH] Version 23.5: Sep 15, 2023 Code refactoring in edition of countries. --- swad_changelog.h | 3 +- swad_country.c | 213 +++++++++++++++++++++----------------- swad_country.h | 15 +-- swad_country_config.c | 16 +-- swad_country_database.c | 94 ++++++++++------- swad_country_database.h | 7 +- swad_course.c | 4 +- swad_help.c | 10 +- swad_hierarchy.c | 10 +- swad_institution.c | 4 +- swad_institution_config.c | 10 +- swad_log.c | 6 +- swad_photo.c | 2 +- swad_record.c | 8 +- swad_report.c | 2 +- swad_scope.c | 2 +- swad_statistic.c | 2 +- swad_survey.c | 2 +- 18 files changed, 228 insertions(+), 182 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index cb62108df..4013f9c8a 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -632,10 +632,11 @@ TODO: Francisco Javier Fern Me sale este error, no sé si por no recordar yo la sintaxis apropiada para mandar a varios destinatarios. ¿No era así? "can npt create received message (duplicated entry '243218-2160773' for key 'UsrCod_MsgCod') */ -#define Log_PLATFORM_VERSION "SWAD 23.4.1 (2023-09-15)" +#define Log_PLATFORM_VERSION "SWAD 23.5 (2023-09-15)" #define CSS_FILE "swad22.120.4.css" #define JS_FILE "swad22.49.js" /* + Version 23.5: Sep 15, 2023 Code refactoring in edition of countries. (337658 lines) Version 23.4.1: Sep 15, 2023 Changes in listing and edition of courses. (337619 lines) Version 23.4: Sep 15, 2023 Code refactoring in hierarchy. (337618 lines) Version 23.3: Sep 14, 2023 Buttons to close browser tab in matches are replaced because they no longer work in Firefox. (337618 lines) diff --git a/swad_country.c b/swad_country.c index ee4ebef57..de2ddc488 100644 --- a/swad_country.c +++ b/swad_country.c @@ -78,6 +78,8 @@ static void Cty_GetParCtyOrder (void); static void Cty_EditCountriesInternal (void); static void Cty_PutIconsEditingCountries (__attribute__((unused)) void *Args); +static void Cty_GetFullListOfCountries (void); + static void Cty_ListCountriesForEdition (void); static void Cty_PutParOthCtyCod (void *CtyCod); @@ -149,7 +151,7 @@ void Cty_SeeCtyWithPendingInss (void) The_GetColorRows (); /* Get data of country */ - Cty_GetCountryDataByCod (&Cty); + Cty_GetBasicCountryDataByCod (&Cty); /* Begin row for this country */ HTM_TR_Begin (NULL); @@ -518,7 +520,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Cty_Countr *Cty,Act_Action_t Acti HTM_DIV_Begin ("class=\"%s\"",ClassContainer); /***** Link to action *****/ - HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Cty->Name[Gbl.Prefs.Language]), + HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Cty->FullName), "class=\"BT_LINK\""); Str_FreeGoToTitle (); @@ -526,7 +528,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Cty_Countr *Cty,Act_Action_t Acti Cty_DrawCountryMap (Cty,ClassMap); /***** Write country name *****/ - Str_Copy (CountryName,Cty->Name[Gbl.Prefs.Language],sizeof (CountryName) - 1); + Str_Copy (CountryName,Cty->FullName,sizeof (CountryName) - 1); HTM_TxtF (" %s ",CountryName); HTM_TxtF ("(%s)",Cty->Alpha2); @@ -559,13 +561,13 @@ void Cty_DrawCountryMap (struct Cty_Countr *Cty,const char *Class) Err_NotEnoughMemoryExit (); if (asprintf (&Icon,"%s.png",Cty->Alpha2) < 0) Err_NotEnoughMemoryExit (); - HTM_IMG (URL,Icon,Cty->Name[Gbl.Prefs.Language],"class=\"%s\"",Class); + HTM_IMG (URL,Icon,Cty->FullName,"class=\"%s\"",Class); free (Icon); free (URL); } else Ico_PutIcon ("tr16x16.gif",Ico_UNCHANGED, - Cty->Name[Gbl.Prefs.Language],Class); + Cty->FullName,Class); } /*****************************************************************************/ @@ -734,7 +736,7 @@ void Cty_GetBasicListOfCountries (void) MYSQL_ROW row; unsigned NumCty; struct Cty_Countr *Cty; - Lan_Language_t Lan; + // Lan_Language_t Lan; /***** Trivial check: if list is already got, nothing to do *****/ if (Gbl.Hierarchy.Ctys.Num) @@ -762,18 +764,8 @@ void Cty_GetBasicListOfCountries (void) if ((Cty->Cod = Str_ConvertStrCodToLongCod (row[0])) <= 0) Err_WrongCountrExit (); - /* Reset names and webs */ - for (Lan = (Lan_Language_t) 1; - Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; - Lan++) - { - Cty->Name[Lan][0] = '\0'; - Cty->WWW[Lan][0] = '\0'; - } - /* Get the name of the country in current language */ - Str_Copy (Cty->Name[Gbl.Prefs.Language],row[1], - sizeof (Cty->Name[Gbl.Prefs.Language]) - 1); + Str_Copy (Cty->FullName,row[1],sizeof (Cty->FullName) - 1); /* Reset number of users who claim to belong to country */ Cty->NumUsrsWhoClaimToBelong.Valid = false; @@ -789,13 +781,12 @@ void Cty_GetBasicListOfCountries (void) /********** and number of users who claim to belong to them ***********/ /*****************************************************************************/ -void Cty_GetFullListOfCountries (void) +static void Cty_GetFullListOfCountries (void) { MYSQL_RES *mysql_res; MYSQL_ROW row; unsigned NumCty; struct Cty_Countr *Cty; - Lan_Language_t Lan; /***** Trivial check: if list is already got, nothing to do *****/ if (Gbl.Hierarchy.Ctys.Num) @@ -826,20 +817,13 @@ void Cty_GetFullListOfCountries (void) /* Get Alpha-2 country code (row[1]) */ Str_Copy (Cty->Alpha2,row[1],sizeof (Cty->Alpha2) - 1); - /* Get the name of the country in several languages */ - for (Lan = (Lan_Language_t) 1; - Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; - Lan++) - { - Str_Copy (Cty->Name[Lan],row[1 + Lan], - sizeof (Cty->Name[Lan]) - 1); - Str_Copy (Cty->WWW[Lan],row[1 + Lan_NUM_LANGUAGES + Lan], - sizeof (Cty->WWW[Lan]) - 1); - } + /* Get the name and the web of the country in the current language */ + Str_Copy (Cty->FullName,row[2],sizeof (Cty->FullName) - 1); + Str_Copy (Cty->WWW ,row[3],sizeof (Cty->WWW ) - 1); /* Get number of users who claim to belong to this country */ Cty->NumUsrsWhoClaimToBelong.Valid = false; - if (sscanf (row[1 + Lan_NUM_LANGUAGES * 2 + 1],"%u", + if (sscanf (row[4],"%u", &(Cty->NumUsrsWhoClaimToBelong.NumUsrs)) == 1) Cty->NumUsrsWhoClaimToBelong.Valid = true; } @@ -887,7 +871,7 @@ void Cty_WriteSelectorOfCountry (void) CtyInLst->Cod == Gbl.Hierarchy.Cty.Cod ? HTM_OPTION_SELECTED : HTM_OPTION_UNSELECTED, HTM_OPTION_ENABLED, - "%s",CtyInLst->Name[Gbl.Prefs.Language]); + "%s",CtyInLst->FullName); } /***** End selector of country *****/ @@ -911,7 +895,7 @@ void Cty_WriteCountryName (long CtyCod) Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB; // Only in main browser tab /***** Get country name *****/ - Cty_GetCountryName (CtyCod,Gbl.Prefs.Language,CtyName); + Cty_GetCountryNameInLanguage (CtyCod,Gbl.Prefs.Language,CtyName); if (PutForm) { @@ -933,45 +917,34 @@ void Cty_WriteCountryName (long CtyCod) /***************** Get basic data of country given its code ******************/ /*****************************************************************************/ -bool Cty_GetCountryDataByCod (struct Cty_Countr *Cty) +bool Cty_GetBasicCountryDataByCod (struct Cty_Countr *Cty) { extern const char *Txt_Another_country; MYSQL_RES *mysql_res; MYSQL_ROW row; - Lan_Language_t Lan; bool CtyFound; if (Cty->Cod < 0) return false; /***** Clear data *****/ - for (Lan = (Lan_Language_t) 1; - Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; - Lan++) - { - Cty->Name[Lan][0] = '\0'; - Cty->WWW[Lan][0] = '\0'; - } + Cty->ShrtName[0] = '\0'; + Cty->FullName[0] = '\0'; + Cty->WWW[0] = '\0'; Cty->NumUsrsWhoClaimToBelong.Valid = false; - /***** Check if country code is correct *****/ + /***** If another country *****/ if (Cty->Cod == 0) { - for (Lan = (Lan_Language_t) 1; - Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; - Lan++) - if (Lan == Gbl.Prefs.Language) - Str_Copy (Cty->Name[Lan],Txt_Another_country, - sizeof (Cty->Name[Lan]) - 1); - else - Cty->Name[Lan][0] = '\0'; + Str_Copy (Cty->FullName,Txt_Another_country, + sizeof (Cty->FullName) - 1); return false; } // Here Cty->CtyCod > 0 /***** Get data of a country from database *****/ - CtyFound = (Cty_DB_GetCountryDataByCod (&mysql_res,Cty->Cod) != 0); + CtyFound = (Cty_DB_GetBasicCountryDataByCod (&mysql_res,Cty->Cod) != 0); if (CtyFound) // Country found... { /* Get row */ @@ -981,10 +954,8 @@ bool Cty_GetCountryDataByCod (struct Cty_Countr *Cty) Str_Copy (Cty->Alpha2,row[0],sizeof (Cty->Alpha2) - 1); /* Get name and WWW of the country in current language */ - Str_Copy (Cty->Name[Gbl.Prefs.Language],row[1], - sizeof (Cty->Name[Gbl.Prefs.Language]) - 1); - Str_Copy (Cty->WWW[Gbl.Prefs.Language],row[2], - sizeof (Cty->WWW[Gbl.Prefs.Language]) - 1); + Str_Copy (Cty->FullName,row[1],sizeof (Cty->FullName) - 1); + Str_Copy (Cty->WWW ,row[2],sizeof (Cty->WWW ) - 1); } /***** Free structure that stores the query result *****/ @@ -993,6 +964,48 @@ bool Cty_GetCountryDataByCod (struct Cty_Countr *Cty) return CtyFound; } +/*****************************************************************************/ +/*********** Get all names and WWWs of a country given its code **************/ +/*****************************************************************************/ + +void Cty_GetNamesAndWWWsByCod (struct Cty_Countr *Cty, + char NameInSeveralLanguages[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1], + char WWWInSeveralLanguages [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]) + { + MYSQL_RES *mysql_res; + MYSQL_ROW row; + Lan_Language_t Lan; + + /***** Get data of a country from database *****/ + if (Cty_DB_GetNamesAndWWWsByCod (&mysql_res,Cty->Cod) != 0) // Country found... + { + /* Get row */ + row = mysql_fetch_row (mysql_res); + + /* Get names and webs of the country in several languages */ + for (Lan = (Lan_Language_t) 1; + Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; + Lan++) + { + Str_Copy (NameInSeveralLanguages[Lan],row[Lan - 1], + Cty_MAX_BYTES_NAME); + Str_Copy (WWWInSeveralLanguages[Lan],row[Lan_NUM_LANGUAGES + Lan - 1], + Cns_MAX_BYTES_WWW - 1); + } + } + else + for (Lan = (Lan_Language_t) 1; + Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; + Lan++) + { + NameInSeveralLanguages[Lan][0] = '\0'; + WWWInSeveralLanguages[Lan][0] = '\0'; + } + + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); + } + /*****************************************************************************/ /***************************** Get country name ******************************/ /*****************************************************************************/ @@ -1004,8 +1017,8 @@ void Cty_FlushCacheCountryName (void) Gbl.Cache.CountryName.CtyName[0] = '\0'; } -void Cty_GetCountryName (long CtyCod,Lan_Language_t Language, - char CtyName[Cty_MAX_BYTES_NAME + 1]) +void Cty_GetCountryNameInLanguage (long CtyCod,Lan_Language_t Language, + char CtyName[Cty_MAX_BYTES_NAME + 1]) { /***** 1. Fast check: Trivial case *****/ if (CtyCod <= 0) @@ -1056,6 +1069,8 @@ static void Cty_ListCountriesForEdition (void) unsigned NumInss; unsigned NumUsrsCty; Lan_Language_t Lan; + char NameInSeveralLanguages[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1]; + char WWWInSeveralLanguages [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]; /***** Begin table *****/ HTM_TABLE_BeginWidePadding (2); @@ -1120,6 +1135,9 @@ static void Cty_ListCountriesForEdition (void) HTM_TR_End (); /* Country name in several languages */ + Cty_GetNamesAndWWWsByCod (Cty, + NameInSeveralLanguages, + WWWInSeveralLanguages); for (Lan = (Lan_Language_t) 1; Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; Lan++) @@ -1136,7 +1154,7 @@ static void Cty_ListCountriesForEdition (void) Frm_BeginForm (ActRenCty); ParCod_PutPar (ParCod_OthCty,Cty->Cod); Par_PutParUnsigned (NULL,"Lan",(unsigned) Lan); - HTM_INPUT_TEXT ("Name",Cty_MAX_CHARS_NAME,Cty->Name[Lan], + HTM_INPUT_TEXT ("Name",Cty_MAX_CHARS_NAME,NameInSeveralLanguages[Lan], HTM_SUBMIT_ON_CHANGE, "size=\"15\" class=\"INPUT_%s\"", The_GetSuffix ()); @@ -1148,7 +1166,7 @@ static void Cty_ListCountriesForEdition (void) Frm_BeginForm (ActChgCtyWWW); ParCod_PutPar (ParCod_OthCty,Cty->Cod); Par_PutParUnsigned (NULL,"Lan",(unsigned) Lan); - HTM_INPUT_URL ("WWW",Cty->WWW[Lan],HTM_SUBMIT_ON_CHANGE, + HTM_INPUT_URL ("WWW",WWWInSeveralLanguages[Lan],HTM_SUBMIT_ON_CHANGE, "class=\"INPUT_WWW_NARROW INPUT_%s\"" " required=\"required\"", The_GetSuffix ()); @@ -1189,7 +1207,7 @@ void Cty_RemoveCountry (void) Cty_EditingCty->Cod = ParCod_GetAndCheckPar (ParCod_OthCty); /***** Get data of the country from database *****/ - Cty_GetCountryDataByCod (Cty_EditingCty); + Cty_GetBasicCountryDataByCod (Cty_EditingCty); /***** Check if this country has users *****/ if (Ins_GetNumInssInCty (Cty_EditingCty->Cod)) // Country has institutions ==> don't remove @@ -1223,7 +1241,7 @@ void Cty_RemoveCountry (void) /***** Write message to show the change made *****/ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_Country_X_removed, - Cty_EditingCty->Name[Gbl.Prefs.Language]); + Cty_EditingCty->FullName); Cty_EditingCty->Cod = -1L; // To not showing button to go to country } @@ -1239,6 +1257,7 @@ void Cty_RenameCountry (void) extern const char *Txt_The_country_X_has_been_renamed_as_Y; extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES]; extern const char *Txt_The_name_X_has_not_changed; + char OldCtyName[Cty_MAX_BYTES_NAME + 1]; char NewCtyName[Cty_MAX_BYTES_NAME + 1]; Lan_Language_t Language; char FldName[4 + 1 + 2 + 1]; // Example: "Name_en" @@ -1256,16 +1275,15 @@ void Cty_RenameCountry (void) Par_GetParText ("Name",NewCtyName,Cty_MAX_BYTES_NAME); /***** Get from the database the data of the country *****/ - Cty_GetCountryDataByCod (Cty_EditingCty); + Cty_GetBasicCountryDataByCod (Cty_EditingCty); /***** Check if new name is empty *****/ if (NewCtyName[0]) { /***** Check if old and new names are the same (this happens when return is pressed without changes) *****/ - Cty_GetCountryName (Cty_EditingCty->Cod,Language, - Cty_EditingCty->Name[Language]); - if (strcmp (Cty_EditingCty->Name[Language],NewCtyName)) // Different names + Cty_GetCountryNameInLanguage (Cty_EditingCty->Cod,Language,OldCtyName); + if (strcmp (OldCtyName,NewCtyName)) // Different names { /***** If country was in database... *****/ if (Cty_DB_CheckIfCountryNameExists (Language,NewCtyName,Cty_EditingCty->Cod)) @@ -1282,16 +1300,13 @@ void Cty_RenameCountry (void) /* Write message to show the change made */ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_country_X_has_been_renamed_as_Y, - Cty_EditingCty->Name[Language],NewCtyName); - - /* Update country name */ - Str_Copy (Cty_EditingCty->Name[Language],NewCtyName, - sizeof (Cty_EditingCty->Name[Language]) - 1); + OldCtyName,NewCtyName); } } else // The same name Ale_CreateAlert (Ale_INFO,NULL, - Txt_The_name_X_has_not_changed,Cty_EditingCty->Name[Language]); + Txt_The_name_X_has_not_changed, + OldCtyName); } else Ale_CreateAlertYouCanNotLeaveFieldEmpty (); @@ -1335,14 +1350,12 @@ void Cty_ChangeCtyWWW (void) Par_GetParText ("WWW",NewWWW,Cns_MAX_BYTES_WWW); /***** Get from the database the data of the country *****/ - Cty_GetCountryDataByCod (Cty_EditingCty); + Cty_GetBasicCountryDataByCod (Cty_EditingCty); /***** Update the table changing old WWW by new WWW *****/ - snprintf (FldName,sizeof (FldName),"Name_%s", + snprintf (FldName,sizeof (FldName),"WWW_%s", Lan_STR_LANG_ID[Language]); Cty_DB_UpdateCtyField (Cty_EditingCty->Cod,FldName,NewWWW); - Str_Copy (Cty_EditingCty->WWW[Language],NewWWW, - sizeof (Cty_EditingCty->WWW[Language]) - 1); /***** Write message to show the change made *****/ Ale_CreateAlert (Ale_SUCCESS,NULL, @@ -1381,7 +1394,7 @@ static void Cty_ShowAlertAndButtonToGoToCty (void) Ale_ShowLastAlertAndButton (ActSeeIns,NULL,NULL, Cty_PutParGoToCty,&Cty_EditingCty->Cod, Btn_CONFIRM_BUTTON, - Str_BuildGoToTitle (Cty_EditingCty->Name[Gbl.Prefs.Language])); + Str_BuildGoToTitle (Cty_EditingCty->FullName)); Str_FreeGoToTitle (); } else @@ -1471,7 +1484,7 @@ static void Cty_PutFormToCreateCountry (void) /* Name */ HTM_TD_Begin ("class=\"LM\""); snprintf (StrName,sizeof (StrName),"Name_%s",Lan_STR_LANG_ID[Lan]); - HTM_INPUT_TEXT (StrName,Cty_MAX_CHARS_NAME,Cty_EditingCty->Name[Lan], + HTM_INPUT_TEXT (StrName,Cty_MAX_CHARS_NAME,"", HTM_DONT_SUBMIT_ON_CHANGE, "size=\"15\" class=\"INPUT_%s\"" " required=\"required\"", @@ -1481,7 +1494,7 @@ static void Cty_PutFormToCreateCountry (void) /* WWW */ HTM_TD_Begin ("class=\"LM\""); snprintf (StrName,sizeof (StrName),"WWW_%s",Lan_STR_LANG_ID[Lan]); - HTM_INPUT_URL (StrName,Cty_EditingCty->WWW[Lan],HTM_DONT_SUBMIT_ON_CHANGE, + HTM_INPUT_URL (StrName,"",HTM_DONT_SUBMIT_ON_CHANGE, "class=\"INPUT_WWW_NARROW INPUT_%s\"" " required=\"required\"", The_GetSuffix ()); @@ -1538,10 +1551,19 @@ void Cty_ReceiveFormNewCountry (void) char ParName[32]; bool CreateCountry = true; Lan_Language_t Lan; + char NameInSeveralLanguages[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1]; + char WWWInSeveralLanguages [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]; unsigned i; /***** Country constructoor *****/ Cty_EditingCountryConstructor (); + for (Lan = (Lan_Language_t) 1; + Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; + Lan++) + { + NameInSeveralLanguages[Lan][0] = '\0'; + WWWInSeveralLanguages [Lan][0] = '\0'; + } /***** Get parameters from form *****/ /* Get numeric country code */ @@ -1591,16 +1613,16 @@ void Cty_ReceiveFormNewCountry (void) Lan++) { snprintf (ParName,sizeof (ParName),"Name_%s",Lan_STR_LANG_ID[Lan]); - Par_GetParText (ParName,Cty_EditingCty->Name[Lan],Cty_MAX_BYTES_NAME); + Par_GetParText (ParName,NameInSeveralLanguages[Lan],Cty_MAX_BYTES_NAME); - if (Cty_EditingCty->Name[Lan][0]) // If there's a country name + if (NameInSeveralLanguages[Lan][0]) // If there's a country name { /***** If name of country was in database... *****/ - if (Cty_DB_CheckIfCountryNameExists (Lan,Cty_EditingCty->Name[Lan],-1L)) + if (Cty_DB_CheckIfCountryNameExists (Lan,NameInSeveralLanguages[Lan],-1L)) { Ale_CreateAlert (Ale_WARNING,NULL, Txt_The_country_X_already_exists, - Cty_EditingCty->Name[Lan]); + NameInSeveralLanguages[Lan]); CreateCountry = false; break; } @@ -1614,7 +1636,7 @@ void Cty_ReceiveFormNewCountry (void) } snprintf (ParName,sizeof (ParName),"WWW_%s",Lan_STR_LANG_ID[Lan]); - Par_GetParText (ParName,Cty_EditingCty->WWW[Lan],Cns_MAX_BYTES_WWW); + Par_GetParText (ParName,WWWInSeveralLanguages[Lan],Cns_MAX_BYTES_WWW); } } } @@ -1622,9 +1644,12 @@ void Cty_ReceiveFormNewCountry (void) if (CreateCountry) { - Cty_DB_CreateCountry (Cty_EditingCty); // Add new country to database + Cty_DB_CreateCountry (Cty_EditingCty, // Add new country to database + NameInSeveralLanguages, + WWWInSeveralLanguages); + Ale_ShowAlert (Ale_SUCCESS,Txt_Created_new_country_X, - Cty_EditingCty->Name); + Cty_EditingCty->FullName); } } @@ -1799,7 +1824,7 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys) Cty.Cod = DB_GetNextCode (*mysql_res); /* Get data of country */ - Cty_GetCountryDataByCod (&Cty); + Cty_GetBasicCountryDataByCod (&Cty); /* Write data of this country */ Cty_ListOneCountryForSeeing (&Cty,NumCty); @@ -1819,8 +1844,6 @@ void Cty_ListCtysFound (MYSQL_RES **mysql_res,unsigned NumCtys) static void Cty_EditingCountryConstructor (void) { - Lan_Language_t Lan; - /***** Pointer must be NULL *****/ if (Cty_EditingCty != NULL) Err_WrongCountrExit (); @@ -1830,15 +1853,11 @@ static void Cty_EditingCountryConstructor (void) Err_NotEnoughMemoryExit (); /***** Reset country *****/ - Cty_EditingCty->Cod = -1L; - Cty_EditingCty->Alpha2[0] = '\0'; - for (Lan = (Lan_Language_t) 1; - Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; - Lan++) - { - Cty_EditingCty->Name[Lan][0] = '\0'; - Cty_EditingCty->WWW [Lan][0] = '\0'; - } + Cty_EditingCty->Cod = -1L; + Cty_EditingCty->Alpha2[0] = '\0'; + Cty_EditingCty->ShrtName[0] = '\0'; + Cty_EditingCty->FullName[0] = '\0'; + Cty_EditingCty->WWW[0] = '\0'; Cty_EditingCty->NumUsrsWhoClaimToBelong.Valid = false; } diff --git a/swad_country.h b/swad_country.h index 6408d2e5c..fc8db47ae 100644 --- a/swad_country.h +++ b/swad_country.h @@ -49,8 +49,9 @@ struct Cty_Countr { long Cod; // Country code char Alpha2[2 + 1]; - char Name[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1]; - char WWW [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]; + char ShrtName[Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1]; + char FullName[Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1]; + char WWW[Cns_MAX_BYTES_WWW + 1]; struct { bool Valid; @@ -95,14 +96,16 @@ void Cty_WriteScriptGoogleGeochart (void); void Cty_PutParCtyOrder (void); void Cty_EditCountries (void); void Cty_GetBasicListOfCountries (void); -void Cty_GetFullListOfCountries (void); void Cty_FreeListCountries (void); void Cty_WriteSelectorOfCountry (void); void Cty_WriteCountryName (long CtyCod); -bool Cty_GetCountryDataByCod (struct Cty_Countr *Cty); +bool Cty_GetBasicCountryDataByCod (struct Cty_Countr *Cty); +void Cty_GetNamesAndWWWsByCod (struct Cty_Countr *Cty, + char NameInSeveralLanguages[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1], + char WWWInSeveralLanguages [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]); void Cty_FlushCacheCountryName (void); -void Cty_GetCountryName (long CtyCod,Lan_Language_t Language, - char CtyName[Cty_MAX_BYTES_NAME + 1]); +void Cty_GetCountryNameInLanguage (long CtyCod,Lan_Language_t Language, + char CtyName[Cty_MAX_BYTES_NAME + 1]); void Cty_RemoveCountry (void); void Cty_RenameCountry (void); void Cty_ChangeCtyWWW (void); diff --git a/swad_country_config.c b/swad_country_config.c index 3b88ee506..902db7bc6 100644 --- a/swad_country_config.c +++ b/swad_country_config.c @@ -113,7 +113,7 @@ static void CtyCfg_Configuration (bool PrintView) return; /***** Initializations *****/ - PutLink = !PrintView && Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language][0]; + PutLink = !PrintView && Gbl.Hierarchy.Cty.WWW[0]; /***** Begin box *****/ if (PrintView) @@ -226,12 +226,12 @@ static void CtyCfg_Title (bool PutLink) if (PutLink) HTM_A_Begin ("href=\"%s\" target=\"_blank\" title=\"%s\"" " class=\"FRAME_TITLE_BIG FRAME_TITLE_%s\"", - Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language], - Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language], + Gbl.Hierarchy.Cty.WWW, + Gbl.Hierarchy.Cty.FullName, The_GetSuffix ()); /* Country name */ - HTM_Txt (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); + HTM_Txt (Gbl.Hierarchy.Cty.FullName); /* End link */ if (PutLink) @@ -324,7 +324,7 @@ static void CtyCfg_MapImage (bool PrintView,bool PutLink) HTM_DIV_Begin ("class=\"CM\""); if (PutLink) HTM_A_Begin ("href=\"%s\" target=\"_blank\"", - Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language]); + Gbl.Hierarchy.Cty.WWW); Cty_DrawCountryMap (&Gbl.Hierarchy.Cty,PrintView ? "COUNTRY_MAP_PRINT" : "COUNTRY_MAP_SHOW"); if (PutLink) @@ -409,9 +409,9 @@ static void CtyCfg_Name (bool PutLink) HTM_TD_Begin ("class=\"LB DAT_STRONG_%s\"",The_GetSuffix ()); if (PutLink) HTM_A_Begin ("href=\"%s\" target=\"_blank\" class=\"DAT_STRONG_%s\"", - Gbl.Hierarchy.Cty.WWW[Gbl.Prefs.Language], + Gbl.Hierarchy.Cty.WWW, The_GetSuffix ()); - HTM_Txt (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); + HTM_Txt (Gbl.Hierarchy.Cty.FullName); if (PutLink) HTM_A_End (); HTM_TD_End (); @@ -480,7 +480,7 @@ static void CtyCfg_NumInss (void) Frm_BeginFormGoTo (ActSeeIns); ParCod_PutPar (ParCod_Cty,Gbl.Hierarchy.Cty.Cod); if (asprintf (&Title,Txt_Institutions_of_COUNTRY_X, - Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]) < 0) + Gbl.Hierarchy.Cty.FullName) < 0) Err_NotEnoughMemoryExit (); HTM_BUTTON_Submit_Begin (Title,"class=\"LT BT_LINK\""); free (Title); diff --git a/swad_country_database.c b/swad_country_database.c index 40cbe571d..d72a7fd3b 100644 --- a/swad_country_database.c +++ b/swad_country_database.c @@ -55,7 +55,9 @@ extern struct Globals Gbl; /**************************** Create a new country ***************************/ /*****************************************************************************/ -void Cty_DB_CreateCountry (const struct Cty_Countr *Cty) +void Cty_DB_CreateCountry (const struct Cty_Countr *Cty, + char NameInSeveralLanguages[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1], + char WWWInSeveralLanguages [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]) { extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES]; Lan_Language_t Lan; @@ -78,14 +80,14 @@ void Cty_DB_CreateCountry (const struct Cty_Countr *Cty) Str_Concat (SubQueryNam1,StrField,sizeof (SubQueryNam1) - 1); Str_Concat (SubQueryNam2,",'",sizeof (SubQueryNam2) - 1); - Str_Concat (SubQueryNam2,Cty->Name[Lan],sizeof (SubQueryNam2) - 1); + Str_Concat (SubQueryNam2,NameInSeveralLanguages[Lan],sizeof (SubQueryNam2) - 1); Str_Concat (SubQueryNam2,"'",sizeof (SubQueryNam2) - 1); snprintf (StrField,sizeof (StrField),",WWW_%s",Lan_STR_LANG_ID[Lan]); Str_Concat (SubQueryWWW1,StrField,sizeof (SubQueryWWW1) - 1); Str_Concat (SubQueryWWW2,",'",sizeof (SubQueryWWW2) - 1); - Str_Concat (SubQueryWWW2,Cty->WWW[Lan],sizeof (SubQueryWWW2) - 1); + Str_Concat (SubQueryWWW2,WWWInSeveralLanguages[Lan],sizeof (SubQueryWWW2) - 1); Str_Concat (SubQueryWWW2,"'",sizeof (SubQueryWWW2) - 1); } DB_QueryINSERT ("can not create country", @@ -150,11 +152,6 @@ unsigned Cty_DB_GetCtysWithPendingInss (MYSQL_RES **mysql_res) unsigned Cty_DB_GetCtysFull (MYSQL_RES **mysql_res) { extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES]; - char StrField[32]; - char SubQueryNam1[Cty_DB_MAX_BYTES_SUBQUERY_CTYS + 1]; - char SubQueryNam2[Cty_DB_MAX_BYTES_SUBQUERY_CTYS + 1]; - char SubQueryWWW1[Cty_DB_MAX_BYTES_SUBQUERY_CTYS + 1]; - char SubQueryWWW2[Cty_DB_MAX_BYTES_SUBQUERY_CTYS + 1]; char *OrderBySubQuery = NULL; static const char *OrderBySubQueryFmt[Cty_NUM_ORDERS] = { @@ -163,28 +160,8 @@ unsigned Cty_DB_GetCtysFull (MYSQL_RES **mysql_res) "Name_%s", }; unsigned NumCtys; - Lan_Language_t Lan; /***** Get countries from database *****/ - SubQueryNam1[0] = '\0'; - SubQueryNam2[0] = '\0'; - SubQueryWWW1[0] = '\0'; - SubQueryWWW2[0] = '\0'; - for (Lan = (Lan_Language_t) 1; - Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; - Lan++) - { - snprintf (StrField,sizeof (StrField),"cty_countrs.Name_%s,",Lan_STR_LANG_ID[Lan]); - Str_Concat (SubQueryNam1,StrField,sizeof (SubQueryNam1) - 1); - snprintf (StrField,sizeof (StrField),"Name_%s,",Lan_STR_LANG_ID[Lan]); - Str_Concat (SubQueryNam2,StrField,sizeof (SubQueryNam2) - 1); - - snprintf (StrField,sizeof (StrField),"cty_countrs.WWW_%s,",Lan_STR_LANG_ID[Lan]); - Str_Concat (SubQueryWWW1,StrField,sizeof (SubQueryWWW1) - 1); - snprintf (StrField,sizeof (StrField),"WWW_%s,",Lan_STR_LANG_ID[Lan]); - Str_Concat (SubQueryWWW2,StrField,sizeof (SubQueryWWW2) - 1); - } - /* Build order subquery */ if (asprintf (&OrderBySubQuery,OrderBySubQueryFmt[Gbl.Hierarchy.Ctys.SelectedOrder], Lan_STR_LANG_ID[Gbl.Prefs.Language]) < 0) @@ -195,9 +172,9 @@ unsigned Cty_DB_GetCtysFull (MYSQL_RES **mysql_res) DB_QuerySELECT (mysql_res,"can not get countries", "(SELECT cty_countrs.CtyCod," // row[0] "cty_countrs.Alpha2," // row[1] - "%s" // row[...] - "%s" // row[...] - "COUNT(*) AS NumUsrs" // row[...] + "cty_countrs.Name_%s," // row[2] + "cty_countrs.WWW_%s," // row[3] + "COUNT(*) AS NumUsrs" // row[4] " FROM cty_countrs," "usr_data" " WHERE cty_countrs.CtyCod=usr_data.CtyCod" @@ -205,17 +182,20 @@ unsigned Cty_DB_GetCtysFull (MYSQL_RES **mysql_res) " UNION " "(SELECT CtyCod," // row[0] "Alpha2," // row[1] - "%s" // row[...] - "%s" // row[...] - "0 AS NumUsrs" // row[...] + "cty_countrs.Name_%s," // row[2] + "cty_countrs.WWW_%s," // row[3] + "0 AS NumUsrs" // row[4] " FROM cty_countrs" " WHERE CtyCod NOT IN" " (SELECT DISTINCT " "CtyCod" " FROM usr_data))" " ORDER BY %s", - SubQueryNam1,SubQueryWWW1, - SubQueryNam2,SubQueryWWW2,OrderBySubQuery); + Lan_STR_LANG_ID[Gbl.Prefs.Language], + Lan_STR_LANG_ID[Gbl.Prefs.Language], + Lan_STR_LANG_ID[Gbl.Prefs.Language], + Lan_STR_LANG_ID[Gbl.Prefs.Language], + OrderBySubQuery); /* Free memory for subquery */ free (OrderBySubQuery); @@ -227,7 +207,7 @@ unsigned Cty_DB_GetCtysFull (MYSQL_RES **mysql_res) /***************** Get basic data of country given its code ******************/ /*****************************************************************************/ -unsigned Cty_DB_GetCountryDataByCod (MYSQL_RES **mysql_res,long CtyCod) +unsigned Cty_DB_GetBasicCountryDataByCod (MYSQL_RES **mysql_res,long CtyCod) { extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES]; @@ -243,6 +223,46 @@ unsigned Cty_DB_GetCountryDataByCod (MYSQL_RES **mysql_res,long CtyCod) CtyCod); } +/*****************************************************************************/ +/*********** Get all names and WWWs of a country given its code **************/ +/*****************************************************************************/ + +unsigned Cty_DB_GetNamesAndWWWsByCod (MYSQL_RES **mysql_res,long CtyCod) + { + extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES]; + char StrField[32]; + char SubQueryNam[Cty_DB_MAX_BYTES_SUBQUERY_CTYS + 1]; + char SubQueryWWW[Cty_DB_MAX_BYTES_SUBQUERY_CTYS + 1]; + Lan_Language_t Lan; + + /***** Get countries from database *****/ + SubQueryNam[0] = '\0'; + SubQueryWWW[0] = '\0'; + for (Lan = (Lan_Language_t) 1; + Lan <= (Lan_Language_t) Lan_NUM_LANGUAGES; + Lan++) + { + snprintf (StrField,sizeof (StrField),"Name_%s,",Lan_STR_LANG_ID[Lan]); + Str_Concat (SubQueryNam,StrField,sizeof (SubQueryNam) - 1); + + snprintf (StrField,sizeof (StrField), + Lan == Lan_NUM_LANGUAGES ? "WWW_%s" : + "WWW_%s,", + Lan_STR_LANG_ID[Lan]); + Str_Concat (SubQueryWWW,StrField,sizeof (SubQueryWWW) - 1); + } + + /* Query database */ + return (unsigned) + DB_QuerySELECT (mysql_res,"can not get countries", + "SELECT %s" // row[...] + "%s" // row[...] + " FROM cty_countrs" + " WHERE CtyCod='%03ld'", + SubQueryNam,SubQueryWWW, + CtyCod); + } + /*****************************************************************************/ /******************* Get name of a country in a language *********************/ /*****************************************************************************/ diff --git a/swad_country_database.h b/swad_country_database.h index 0596051da..6e1a038cc 100644 --- a/swad_country_database.h +++ b/swad_country_database.h @@ -38,12 +38,15 @@ /***************************** Public prototypes *****************************/ /*****************************************************************************/ -void Cty_DB_CreateCountry (const struct Cty_Countr *Cty); +void Cty_DB_CreateCountry (const struct Cty_Countr *Cty, + char NameInSeveralLanguages[1 + Lan_NUM_LANGUAGES][Cty_MAX_BYTES_NAME + 1], + char WWWInSeveralLanguages [1 + Lan_NUM_LANGUAGES][Cns_MAX_BYTES_WWW + 1]); unsigned Cty_DB_GetCtysBasic (MYSQL_RES **mysql_res); unsigned Cty_DB_GetCtysWithPendingInss (MYSQL_RES **mysql_res); unsigned Cty_DB_GetCtysFull (MYSQL_RES **mysql_res); -unsigned Cty_DB_GetCountryDataByCod (MYSQL_RES **mysql_res,long CtyCod); +unsigned Cty_DB_GetBasicCountryDataByCod (MYSQL_RES **mysql_res,long CtyCod); +unsigned Cty_DB_GetNamesAndWWWsByCod (MYSQL_RES **mysql_res,long CtyCod); void Cty_DB_GetCountryName (long CtyCod,Lan_Language_t Language, char CtyName[Cty_MAX_BYTES_NAME + 1]); diff --git a/swad_course.c b/swad_course.c index 0e4c5a706..753a49a86 100644 --- a/swad_course.c +++ b/swad_course.c @@ -209,7 +209,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void) /***** Get data of this institution *****/ Hie.Cty.Cod = Str_ConvertStrCodToLongCod (row[0]); - if (!Cty_GetCountryDataByCod (&Hie.Cty)) + if (!Cty_GetBasicCountryDataByCod (&Hie.Cty)) Err_WrongCountrExit (); /***** Write link to country *****/ @@ -225,7 +225,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void) "class=\"BT_LINK FORM_IN_%s\"", The_GetSuffix ()); Cty_DrawCountryMap (&Hie.Cty,"ICO16x16"); - HTM_TxtF (" %s",Hie.Cty.Name[Gbl.Prefs.Language]); + HTM_TxtF (" %s",Hie.Cty.FullName); HTM_BUTTON_End (); Frm_EndForm (); HTM_LI_End (); diff --git a/swad_help.c b/swad_help.c index c69555cbe..e7d6d128f 100644 --- a/swad_help.c +++ b/swad_help.c @@ -197,7 +197,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void) { /* Select a degree */ if (asprintf (&Description,Gbl.Hierarchy.Deg.Cod > 0 ? Txt_Select_or_create_another_degree_in_X : - Txt_Select_or_create_one_degree_in_X, + Txt_Select_or_create_one_degree_in_X, Gbl.Hierarchy.Ctr.ShrtName) < 0) Err_NotEnoughMemoryExit (); Hlp_ShowRowHelpWhatWouldYouLikeToDo (Description, @@ -209,7 +209,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void) { /* Select a center */ if (asprintf (&Description,Gbl.Hierarchy.Ctr.Cod > 0 ? Txt_Select_or_create_another_center_in_X : - Txt_Select_or_create_one_center_in_X, + Txt_Select_or_create_one_center_in_X, Gbl.Hierarchy.Ins.ShrtName) < 0) Err_NotEnoughMemoryExit (); Hlp_ShowRowHelpWhatWouldYouLikeToDo (Description, @@ -221,8 +221,8 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void) { /* Select an institution */ if (asprintf (&Description,Gbl.Hierarchy.Ins.Cod > 0 ? Txt_Select_or_create_another_institution_in_X : - Txt_Select_or_create_one_institution_in_X, - Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]) < 0) + Txt_Select_or_create_one_institution_in_X, + Gbl.Hierarchy.Cty.FullName) < 0) Err_NotEnoughMemoryExit (); Hlp_ShowRowHelpWhatWouldYouLikeToDo (Description, ActSeeIns, @@ -232,7 +232,7 @@ void Hlp_ShowHelpWhatWouldYouLikeToDo (void) else /* Select a country */ Hlp_ShowRowHelpWhatWouldYouLikeToDo (Gbl.Hierarchy.Cty.Cod > 0 ? Txt_Select_another_country : - Txt_Select_one_country, + Txt_Select_one_country, ActSeeCty, Btn_CONFIRM_BUTTON,Txt_Countries); diff --git a/swad_hierarchy.c b/swad_hierarchy.c index 128d54c10..ff59051e3 100644 --- a/swad_hierarchy.c +++ b/swad_hierarchy.c @@ -233,9 +233,9 @@ void Hie_WriteHierarchyInBreadcrumb (void) /***** Form to go to see institutions of this country *****/ Frm_BeginFormGoTo (ActSeeIns); ParCod_PutPar (ParCod_Cty,Gbl.Hierarchy.Cty.Cod); - HTM_BUTTON_Submit_Begin (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language], + HTM_BUTTON_Submit_Begin (Gbl.Hierarchy.Cty.FullName, "class=\"BT_LINK\""); - HTM_Txt (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); + HTM_Txt (Gbl.Hierarchy.Cty.FullName); HTM_BUTTON_End (); Frm_EndForm (); @@ -430,7 +430,7 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void) const char *FullText[HieLvl_NUM_LEVELS] = { [HieLvl_SYS] = Cfg_PLATFORM_SHORT_NAME, - [HieLvl_CTY] = Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language], + [HieLvl_CTY] = Gbl.Hierarchy.Cty.FullName, [HieLvl_INS] = Gbl.Hierarchy.Ins.FullName, [HieLvl_CTR] = Gbl.Hierarchy.Ctr.FullName, [HieLvl_DEG] = Gbl.Hierarchy.Deg.FullName, @@ -439,7 +439,7 @@ void Hie_WriteBigNameCtyInsCtrDegCrs (void) const char *ShrtText[HieLvl_NUM_LEVELS] = { [HieLvl_SYS] = Cfg_PLATFORM_SHORT_NAME, - [HieLvl_CTY] = Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language], + [HieLvl_CTY] = Gbl.Hierarchy.Cty.FullName, [HieLvl_INS] = Gbl.Hierarchy.Ins.ShrtName, [HieLvl_CTR] = Gbl.Hierarchy.Ctr.ShrtName, [HieLvl_DEG] = Gbl.Hierarchy.Deg.ShrtName, @@ -595,7 +595,7 @@ void Hie_InitHierarchy (void) /***** If country code is available, get country data *****/ if (Gbl.Hierarchy.Cty.Cod > 0) - if (!Cty_GetCountryDataByCod (&Gbl.Hierarchy.Cty)) // Country not found + if (!Cty_GetBasicCountryDataByCod (&Gbl.Hierarchy.Cty)) // Country not found Hie_ResetHierarchy (); /***** Set current hierarchy level and code diff --git a/swad_institution.c b/swad_institution.c index 83c6deeb5..a9e0ab8f6 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -293,7 +293,7 @@ static void Ins_ListInstitutions (void) /***** Begin box *****/ if (asprintf (&Title,Txt_Institutions_of_COUNTRY_X, - Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]) < 0) + Gbl.Hierarchy.Cty.FullName) < 0) Err_NotEnoughMemoryExit (); Box_BoxBegin (NULL,Title,Ins_PutIconsListingInstitutions,NULL, Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE); @@ -533,7 +533,7 @@ static void Ins_EditInstitutionsInternal (void) /***** Begin box *****/ if (asprintf (&Title,Txt_Institutions_of_COUNTRY_X, - Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]) < 0) + Gbl.Hierarchy.Cty.FullName) < 0) Err_NotEnoughMemoryExit (); Box_BoxBegin (NULL,Title,Ins_PutIconsEditingInstitutions,NULL, Hlp_COUNTRY_Institutions,Box_NOT_CLOSABLE); diff --git a/swad_institution_config.c b/swad_institution_config.c index 89ad464f6..fa5a62a15 100644 --- a/swad_institution_config.c +++ b/swad_institution_config.c @@ -341,7 +341,7 @@ static void InsCfg_Country (bool PrintView,bool PutForm) CtyInLst->Cod == Gbl.Hierarchy.Cty.Cod ? HTM_OPTION_SELECTED : HTM_OPTION_UNSELECTED, HTM_OPTION_ENABLED, - "%s",CtyInLst->Name[Gbl.Prefs.Language]); + "%s",CtyInLst->FullName); } HTM_SELECT_End (); Frm_EndForm (); @@ -352,13 +352,13 @@ static void InsCfg_Country (bool PrintView,bool PutForm) { Frm_BeginFormGoTo (ActSeeCtyInf); ParCod_PutPar (ParCod_Cty,Gbl.Hierarchy.Cty.Cod); - HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), + HTM_BUTTON_Submit_Begin (Str_BuildGoToTitle (Gbl.Hierarchy.Cty.FullName), "class=\"BT_LINK\""); Str_FreeGoToTitle (); } Cty_DrawCountryMap (&Gbl.Hierarchy.Cty,"COUNTRY_MAP_TINY"); HTM_NBSP (); - HTM_Txt (Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); + HTM_Txt (Gbl.Hierarchy.Cty.FullName); if (!PrintView) { HTM_BUTTON_End (); @@ -552,7 +552,7 @@ void InsCfg_ChangeInsCty (void) if (NewCty.Cod != Gbl.Hierarchy.Ins.PrtCod) { /***** Get data of the country from database *****/ - Cty_GetCountryDataByCod (&NewCty); + Cty_GetBasicCountryDataByCod (&NewCty); /***** Check if it already exists an institution with the same name in the new country *****/ if (Ins_DB_CheckIfInsNameExistsInCty ("ShortName",Gbl.Hierarchy.Ins.ShrtName,-1L,NewCty.Cod)) @@ -576,7 +576,7 @@ void InsCfg_ChangeInsCty (void) /***** Write message to show the change made *****/ Ale_CreateAlert (Ale_SUCCESS,NULL, Txt_The_country_of_the_institution_X_has_changed_to_Y, - Gbl.Hierarchy.Ins.FullName,NewCty.Name[Gbl.Prefs.Language]); + Gbl.Hierarchy.Ins.FullName,NewCty.FullName); } } } diff --git a/swad_log.c b/swad_log.c index 80922a980..7e3b42d3b 100644 --- a/swad_log.c +++ b/swad_log.c @@ -248,8 +248,8 @@ void Log_GetAndShowLastClicks (void) /* Get country code (row[4]) */ Hie.Cty.Cod = Str_ConvertStrCodToLongCod (row[4]); - Cty_GetCountryName (Hie.Cty.Cod,Gbl.Prefs.Language, - Hie.Cty.Name[Gbl.Prefs.Language]); + Cty_GetCountryNameInLanguage (Hie.Cty.Cod,Gbl.Prefs.Language, + Hie.Cty.FullName); /* Get institution code (row[5]), center code (row[6]) @@ -281,7 +281,7 @@ void Log_GetAndShowLastClicks (void) HTM_TD_Begin ("class=\"LC_CTY %s_%s\"", ClassRow,The_GetSuffix ()); - HTM_Txt (Hie.Cty.Name[Gbl.Prefs.Language]); // Country + HTM_Txt (Hie.Cty.FullName); // Country HTM_TD_End (); HTM_TD_Begin ("class=\"LC_INS %s_%s\"", diff --git a/swad_photo.c b/swad_photo.c index c491a9dab..a3b3e7eb4 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -1133,7 +1133,7 @@ void Pho_BuildHTMLUsrPhoto (const struct Usr_Data *UsrDat,const char *PhotoURL, else if (UsrDat->CtyCod > 0) { /* Get country name */ - Cty_GetCountryName (UsrDat->CtyCod,Gbl.Prefs.Language,CtyName); + Cty_GetCountryNameInLanguage (UsrDat->CtyCod,Gbl.Prefs.Language,CtyName); /* Write country name */ if (asprintf (&Caption.InsCty,"
" diff --git a/swad_record.c b/swad_record.c index e405f8cd0..47e9dd036 100644 --- a/swad_record.c +++ b/swad_record.c @@ -3199,9 +3199,9 @@ static void Rec_ShowCountry (struct Usr_Data *UsrDat,bool PutForm) CtyInLst = &Gbl.Hierarchy.Ctys.Lst[NumCty]; HTM_OPTION (HTM_Type_LONG,&CtyInLst->Cod, CtyInLst->Cod == UsrDat->CtyCod ? HTM_OPTION_SELECTED : - HTM_OPTION_UNSELECTED, + HTM_OPTION_UNSELECTED, HTM_OPTION_ENABLED, - "%s",CtyInLst->Name[Gbl.Prefs.Language]); + "%s",CtyInLst->FullName); } HTM_SELECT_End (); HTM_TD_End (); @@ -3831,9 +3831,9 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher) CtyInLst = &Gbl.Hierarchy.Ctys.Lst[NumCty]; HTM_OPTION (HTM_Type_LONG,&CtyInLst->Cod, CtyInLst->Cod == Gbl.Usrs.Me.UsrDat.InsCtyCod ? HTM_OPTION_SELECTED : - HTM_OPTION_UNSELECTED, + HTM_OPTION_UNSELECTED, HTM_OPTION_ENABLED, - "%s",CtyInLst->Name[Gbl.Prefs.Language]); + "%s",CtyInLst->FullName); } HTM_SELECT_End (); Frm_EndForm (); diff --git a/swad_report.c b/swad_report.c index 67ac502cf..9817a8911 100644 --- a/swad_report.c +++ b/swad_report.c @@ -504,7 +504,7 @@ static void Rep_WriteSectionUsrInfo (void) Gbl.Usrs.Me.UsrDat.Email); /***** User's country *****/ - Cty_GetCountryName (Gbl.Usrs.Me.UsrDat.CtyCod,Gbl.Prefs.Language,CtyName); + Cty_GetCountryNameInLanguage (Gbl.Usrs.Me.UsrDat.CtyCod,Gbl.Prefs.Language,CtyName); fprintf (Rep_File,"
  • %s: %s
  • ", Txt_Country, CtyName); diff --git a/swad_scope.c b/swad_scope.c index 2a7c6cda3..a3775695c 100644 --- a/swad_scope.c +++ b/swad_scope.c @@ -67,7 +67,7 @@ void Sco_PutSelectorScope (const char *ParName,HTM_SubmitOnChange_t SubmitOnChan const char *TxtName[HieLvl_NUM_LEVELS] = { [HieLvl_SYS] = Cfg_PLATFORM_SHORT_NAME, - [HieLvl_CTY] = Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language], + [HieLvl_CTY] = Gbl.Hierarchy.Cty.FullName, [HieLvl_INS] = Gbl.Hierarchy.Ins.ShrtName, [HieLvl_CTR] = Gbl.Hierarchy.Ctr.ShrtName, [HieLvl_DEG] = Gbl.Hierarchy.Deg.ShrtName, diff --git a/swad_statistic.c b/swad_statistic.c index 9c42f5154..4b2732343 100644 --- a/swad_statistic.c +++ b/swad_statistic.c @@ -2968,7 +2968,7 @@ static void Sta_WriteCountry (long CtyCod) { /***** Get data of country *****/ Cty.Cod = CtyCod; - Cty_GetCountryDataByCod (&Cty); + Cty_GetBasicCountryDataByCod (&Cty); /***** Form to go to country *****/ Cty_DrawCountryMapAndNameWithLink (&Cty,ActSeeCtyInf, diff --git a/swad_survey.c b/swad_survey.c index 614103034..ce2c5ab58 100644 --- a/swad_survey.c +++ b/swad_survey.c @@ -605,7 +605,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys, HTM_Txt (Cfg_PLATFORM_SHORT_NAME); break; case HieLvl_CTY: // Country - HTM_TxtF ("%s %s",Txt_Country,Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); + HTM_TxtF ("%s %s",Txt_Country,Gbl.Hierarchy.Cty.FullName); break; case HieLvl_INS: // Institution HTM_TxtF ("%s %s",Txt_Institution,Gbl.Hierarchy.Ins.ShrtName);