From 936d259e143fc1f11df6642feb134b58b8bfda1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Thu, 2 Mar 2017 00:53:34 +0100 Subject: [PATCH] Version 16.143.5 --- swad_changelog.h | 3 +- swad_country.c | 2 +- swad_institution.c | 137 ++++++++++++++++++++++++++++++++++++++++----- swad_institution.h | 3 + swad_photo.c | 11 +++- 5 files changed, 138 insertions(+), 18 deletions(-) diff --git a/swad_changelog.h b/swad_changelog.h index 2f7cf3fc..01561cea 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -198,13 +198,14 @@ /****************************** Public constants *****************************/ /*****************************************************************************/ -#define Log_PLATFORM_VERSION "SWAD 16.144.4 (2017-03-01)" +#define Log_PLATFORM_VERSION "SWAD 16.144.5 (2017-03-02)" #define CSS_FILE "swad16.144.css" #define JS_FILE "swad16.144.js" // Number of lines (includes comments but not blank lines) has been got with the following command: // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 /* + Version 16.144.5: Mar 02, 2017 Label with the user's institution under her/his enlarged photo. (213442 lines) Version 16.144.4: Mar 01, 2017 Fixed bug in link to another user's QR code from record card. (213338 lines) Version 16.144.3: Mar 01, 2017 Button to create a new place when no places have been created. (213334 lines) Version 16.144.2: Mar 01, 2017 Button to create a new group when no groups have been created. (213300 lines) diff --git a/swad_country.c b/swad_country.c index ab623478..7f29c653 100644 --- a/swad_country.c +++ b/swad_country.c @@ -1198,7 +1198,7 @@ void Cty_WriteSelectorOfCountry (void) } /*****************************************************************************/ -/**************************** Get country full name **************************/ +/***************************** Write country name ****************************/ /*****************************************************************************/ // If ClassLink == NULL ==> do not put link diff --git a/swad_institution.c b/swad_institution.c index e106f810..fe2cbb2b 100644 --- a/swad_institution.c +++ b/swad_institution.c @@ -74,6 +74,10 @@ static void Ins_PutIconToEditInstitutions (void); static void Ins_ListOneInstitutionForSeeing (struct Instit *Ins,unsigned NumIns); static void Ins_PutHeadInstitutionsForSeeing (bool OrderSelectable); static void Ins_GetParamInsOrder (void); + +static void Ins_GetFullNameAndCtyOfInstitutionByCod (struct Instit *Ins, + char CtyName[Cty_MAX_BYTES_COUNTRY_NAME + 1]); + static void Ins_ListInstitutionsForEdition (void); static bool Ins_CheckIfICanEdit (struct Instit *Ins); static Ins_StatusTxt_t Ins_GetStatusTxtFromStatusBits (Ins_Status_t Status); @@ -1074,6 +1078,24 @@ void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData) DB_FreeMySQLResult (&mysql_res); } +/*****************************************************************************/ +/***************** Write institution full name and country *******************/ +/*****************************************************************************/ +// If ClassLink == NULL ==> do not put link + +void Ins_WriteInstitutionNameAndCty (long InsCod) + { + struct Instit Ins; + char CtyName[Cty_MAX_BYTES_COUNTRY_NAME + 1]; + + /***** Get institution full name *****/ + Ins.InsCod = InsCod; + Ins_GetFullNameAndCtyOfInstitutionByCod (&Ins,CtyName); + + /***** Write institution full name *****/ + fprintf (Gbl.F.Out,"%s
%s",Ins.FullName,CtyName); + } + /*****************************************************************************/ /************************* Get data of an institution ************************/ /*****************************************************************************/ @@ -1169,24 +1191,111 @@ void Ins_GetShortNameOfInstitutionByCod (struct Instit *Ins) char Query[128]; MYSQL_RES *mysql_res; MYSQL_ROW row; - - Ins->ShrtName[0] = '\0'; - if (Ins->InsCod > 0) + static struct { - /***** Get the short name of an institution from database *****/ - sprintf (Query,"SELECT ShortName FROM institutions WHERE InsCod ='%ld'", - Ins->InsCod); - if (DB_QuerySELECT (Query,&mysql_res,"can not get the short name of an institution") == 1) - { - /***** Get the short name of this institution *****/ - row = mysql_fetch_row (mysql_res); + long InsCod; + char ShrtName[Ins_MAX_LENGTH_INSTIT_SHRT_NAME + 1]; + } Cached = + { + -1L, + {'\0'} + }; - Str_Copy (Ins->ShrtName,row[0], - Ins_MAX_LENGTH_INSTIT_SHRT_NAME); + if (Ins->InsCod <= 0) + Ins->ShrtName[0] = '\0'; // Empty name + else + { + if (Ins->InsCod != Cached.InsCod) // If not cached... + { + /***** Get the short name of an institution from database *****/ + sprintf (Query,"SELECT ShortName FROM institutions" + " WHERE InsCod ='%ld'", + Ins->InsCod); + if (DB_QuerySELECT (Query,&mysql_res,"can not get the short name of an institution") == 1) + { + /***** Get the short name of this institution *****/ + row = mysql_fetch_row (mysql_res); + + Str_Copy (Cached.ShrtName,row[0], + Ins_MAX_LENGTH_INSTIT_SHRT_NAME); + } + else + Cached.ShrtName[0] = '\0'; + + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); } - /***** Free structure that stores the query result *****/ - DB_FreeMySQLResult (&mysql_res); + Str_Copy (Ins->ShrtName,Cached.ShrtName, + Ins_MAX_LENGTH_INSTIT_SHRT_NAME); + } + } + +/*****************************************************************************/ +/************ Get the full name of an institution from its code **************/ +/*****************************************************************************/ + +static void Ins_GetFullNameAndCtyOfInstitutionByCod (struct Instit *Ins, + char CtyName[Cty_MAX_BYTES_COUNTRY_NAME + 1]) + { + extern const char *Txt_STR_LANG_ID[1 + Txt_NUM_LANGUAGES]; + char Query[256]; + MYSQL_RES *mysql_res; + MYSQL_ROW row; + static struct + { + long InsCod; + char FullName[Ins_MAX_LENGTH_INSTIT_FULL_NAME + 1]; + char CtyName[Cty_MAX_BYTES_COUNTRY_NAME + 1]; + } Cached = + { + -1L, + {'\0'}, + {'\0'}, + }; + + if (Ins->InsCod <= 0) + { + Ins->FullName[0] = '\0'; // Empty name + CtyName[0] = '\0'; // Empty name + } + else + { + if (Ins->InsCod != Cached.InsCod) // If not cached... + { + /***** Get the short name of an institution from database *****/ + sprintf (Query,"SELECT institutions.FullName,countries.Name_%s" + " FROM institutions,countries" + " WHERE institutions.InsCod ='%ld'" + " AND institutions.CtyCod=countries.CtyCod", + Txt_STR_LANG_ID[Gbl.Prefs.Language],Ins->InsCod); + if (DB_QuerySELECT (Query,&mysql_res,"can not get the full name of an institution") == 1) + { + /* Get row */ + row = mysql_fetch_row (mysql_res); + + /* Get the full name of this institution (row[0]) */ + Str_Copy (Cached.FullName,row[0], + Ins_MAX_LENGTH_INSTIT_FULL_NAME); + + /* Get the name of the country (row[1]) */ + Str_Copy (Cached.CtyName,row[1], + Cty_MAX_BYTES_COUNTRY_NAME); + } + else + { + Cached.FullName[0] = '\0'; + Cached.CtyName[0] = '\0'; + } + + /***** Free structure that stores the query result *****/ + DB_FreeMySQLResult (&mysql_res); + } + + Str_Copy (Ins->FullName,Cached.FullName, + Ins_MAX_LENGTH_INSTIT_FULL_NAME); + Str_Copy (CtyName,Cached.CtyName, + Cty_MAX_BYTES_COUNTRY_NAME); } } diff --git a/swad_institution.h b/swad_institution.h index 6aa56695..f98916ca 100644 --- a/swad_institution.h +++ b/swad_institution.h @@ -105,9 +105,12 @@ void Ins_PrintConfiguration (void); void Ins_ShowInssOfCurrentCty (void); void Ins_EditInstitutions (void); void Ins_GetListInstitutions (long CtyCod,Ins_GetExtraData_t GetExtraData); + +void Ins_WriteInstitutionNameAndCty (long InsCod); bool Ins_GetDataOfInstitutionByCod (struct Instit *Ins, Ins_GetExtraData_t GetExtraData); void Ins_GetShortNameOfInstitutionByCod (struct Instit *Ins); + void Ins_FreeListInstitutions (void); void Ins_WriteSelectorOfInstitution (void); void Ins_PutParamInsCod (long InsCod); diff --git a/swad_photo.c b/swad_photo.c index 9e67cdbb..3f3c63cd 100644 --- a/swad_photo.c +++ b/swad_photo.c @@ -1155,8 +1155,15 @@ void Pho_ShowUsrPhoto (const struct UsrData *UsrDat,const char *PhotoURL, fprintf (Gbl.F.Out," %s",UsrDat->Surname2); fprintf (Gbl.F.Out,""); - /* Country */ - if (UsrDat->CtyCod > 0) + /* Institution full name and institution country */ + if (UsrDat->InsCod > 0) + { + fprintf (Gbl.F.Out,"
"); + Ins_WriteInstitutionNameAndCty (UsrDat->InsCod); + fprintf (Gbl.F.Out,"
"); + } + /* User's country */ + else if (UsrDat->CtyCod > 0) { fprintf (Gbl.F.Out,"
"); Cty_WriteCountryName (UsrDat->CtyCod,