From 711f109e576d06b679138df7f5ff66411cbb850e Mon Sep 17 00:00:00 2001 From: acanas Date: Thu, 21 Oct 2021 20:33:55 +0200 Subject: [PATCH] Version 21.39: Oct 21, 2021 Fixed bug in nicknamed. Reported by Ana Ollarves Reyes. --- swad_API.c | 31 +++++++----- swad_account.c | 24 ++++----- swad_agenda.c | 6 +-- swad_changelog.h | 3 +- swad_message.c | 2 +- swad_nickname.c | 81 +++++++++++++---------------- swad_nickname.h | 9 ++-- swad_nickname_database.c | 6 +-- swad_nickname_database.h | 6 +-- swad_parameter.c | 18 +++---- swad_profile.c | 2 +- swad_string.c | 12 ++--- swad_text.c | 107 +++++++++++++++------------------------ swad_user.c | 2 +- 14 files changed, 138 insertions(+), 171 deletions(-) diff --git a/swad_API.c b/swad_API.c index eb2ebf3a..2c476684 100644 --- a/swad_API.c +++ b/swad_API.c @@ -230,11 +230,11 @@ static int API_RemoveOldWSKeys (struct soap *soap); static int API_GetCurrentDegCodFromCurrentCrsCod (void); static bool API_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod); -static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input +static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input char NewNickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1], // Output char *NewEmail, // Input-output char *NewPlainPassword, // Input - char *NewEncryptedPassword); // Output + char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]); // Output static int API_WriteSyllabusIntoHTMLBuffer (struct soap *soap, struct Syl_Syllabus *Syllabus, @@ -755,23 +755,28 @@ static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input char NewNickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1], // Output char *NewEmail, // Input-output char *NewPlainPassword, // Input - char *NewEncryptedPassword) // Output + char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]) // Output { + char CopyOfNewNick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; + /***** Step 1/3: Check new nickname *****/ /* Make a copy without possible starting arrobas */ - Str_Copy (NewNickWithoutArr,NewNickWithArr,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA); if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid { - /***** Remove arrobas at the beginning *****/ - Str_RemoveLeadingArrobas (NewNickWithoutArr); + /***** Remove leading arrobas *****/ + Str_Copy (CopyOfNewNick,NewNickWithArr,sizeof (CopyOfNewNick) - 1); + Str_RemoveLeadingArrobas (CopyOfNewNick); /***** Check if the new nickname matches any of the nicknames of other users *****/ if (DB_QueryCOUNT ("can not check if nickname already existed", "SELECT COUNT(*)" " FROM usr_nicknames" - " WHERE Nickname='%s'", - NewNickWithoutArr)) // A nickname of another user is the same that this nickname + " WHERE Nickname='%s'", // A nickname of another user is the same that this nickname + CopyOfNewNick)) // Already without leading arrobas return API_CHECK_NEW_ACCOUNT_NICKNAME_REGISTERED_BY_ANOTHER_USER; + + /***** Output value of nickname without leading arrobas *****/ + Str_Copy (NewNickWithoutArr,CopyOfNewNick,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA); } else // New nickname is not valid return API_CHECK_NEW_ACCOUNT_NICKNAME_NOT_VALID; @@ -3567,7 +3572,7 @@ int swad__sendMessage (struct soap *soap, { int ReturnCode; long ReplyUsrCod = -1L; - char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; char *Query = NULL; MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -3656,12 +3661,12 @@ int swad__sendMessage (struct soap *soap, while (*Ptr) { /* Find next string in text until comma (leading and trailing spaces are removed) */ - Str_GetNextStringUntilComma (&Ptr,Nickname,sizeof (Nickname) - 1); + Str_GetNextStringUntilComma (&Ptr,Nick,sizeof (Nick) - 1); // With leading arrobas /* Check if string is a valid nickname */ - if (Nck_CheckIfNickWithArrIsValid (Nickname)) // String is a nickname? + if (Nck_CheckIfNickWithArrIsValid (Nick)) // String is a nickname (with leading arrobas)? { - Str_RemoveLeadingArrobas (Nickname); + Str_RemoveLeadingArrobas (Nick); /* Check for overflow in query */ if (strlen (Query) + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 32 > @@ -3684,7 +3689,7 @@ int swad__sendMessage (struct soap *soap, } else Str_Concat (Query,",'",API_MAX_BYTES_QUERY_RECIPIENTS); - Str_Concat (Query,Nickname,API_MAX_BYTES_QUERY_RECIPIENTS); + Str_Concat (Query,Nick,API_MAX_BYTES_QUERY_RECIPIENTS); // Leading arrobas already removed Str_Concat (Query,"'",API_MAX_BYTES_QUERY_RECIPIENTS); } } diff --git a/swad_account.c b/swad_account.c index c81c9f40..33c426f9 100644 --- a/swad_account.c +++ b/swad_account.c @@ -377,7 +377,7 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutAr extern const char *Txt_HELP_nickname; extern const char *Txt_HELP_email; extern const char *Txt_Email; - char NewNickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NewNickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; /***** Begin form to enter some data of the new user *****/ Frm_BeginForm (ActCreUsrAcc); @@ -654,41 +654,39 @@ static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Nck_MAX_BYTES_NICK_W char NewEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1], char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]) { - extern const char *Txt_The_nickname_X_had_been_registered_by_another_user; - extern const char *Txt_The_nickname_entered_X_is_not_valid_; + extern const char *Txt_The_nickname_had_been_registered_by_another_user; + extern const char *Txt_The_nickname_is_not_valid_; extern const char *Txt_The_email_address_X_had_been_registered_by_another_user; extern const char *Txt_The_email_address_entered_X_is_not_valid; - char NewNickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NewNick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; char NewPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]; bool Error = false; /***** Step 1/3: Get new nickname from form *****/ - Par_GetParToText ("NewNick",NewNickWithArr,sizeof (NewNickWithArr) - 1); + Par_GetParToText ("NewNick",NewNick,sizeof (NewNick) - 1); /* Remove arrobas at the beginning */ - Str_Copy (NewNickWithoutArr,NewNickWithArr,sizeof (NewNickWithArr) - 1); - Str_RemoveLeadingArrobas (NewNickWithoutArr); + Str_RemoveLeadingArrobas (NewNick); + Str_Copy (NewNickWithoutArr,NewNick,sizeof (NewNick) - 1); /* Create a new version of the nickname with arroba */ - snprintf (NewNickWithArr,sizeof (NewNickWithArr),"@%s", + snprintf (NewNick,sizeof (NewNick),"@%s", NewNickWithoutArr); - if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid + if (Nck_CheckIfNickWithArrIsValid (NewNick)) // If new nickname is valid { /* Check if the new nickname matches any of the nicknames of other users */ if (Acc_DB_CheckIfNicknameAlreadyExists (NewNickWithoutArr)) { Error = true; - Ale_ShowAlert (Ale_WARNING,Txt_The_nickname_X_had_been_registered_by_another_user, - NewNickWithoutArr); + Ale_ShowAlert (Ale_WARNING,Txt_The_nickname_had_been_registered_by_another_user); } } else // New nickname is not valid { Error = true; - Ale_ShowAlert (Ale_WARNING,Txt_The_nickname_entered_X_is_not_valid_, - NewNickWithArr, + Ale_ShowAlert (Ale_WARNING,Txt_The_nickname_is_not_valid_, Nck_MIN_CHARS_NICK_WITHOUT_ARROBA, Nck_MAX_CHARS_NICK_WITHOUT_ARROBA); } diff --git a/swad_agenda.c b/swad_agenda.c index 0cefbc89..8e47ebe8 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -156,10 +156,10 @@ void Agd_PutFormLogInToShowUsrAgenda (void) void Agd_PutParamAgd (void) { - char Nickname[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; - snprintf (Nickname,sizeof (Nickname),"@%s",Gbl.Usrs.Other.UsrDat.Nickname); - Par_PutHiddenParamString (NULL,"agd",Nickname); + snprintf (NickWithArr,sizeof (NickWithArr),"@%s",Gbl.Usrs.Other.UsrDat.Nickname); + Par_PutHiddenParamString (NULL,"agd",NickWithArr); } /*****************************************************************************/ diff --git a/swad_changelog.h b/swad_changelog.h index acccf19e..ae624f08 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -602,13 +602,14 @@ TODO: FIX BUG, URGENT! En las fechas como par TODO: En las encuestas, que los estudiantes no puedan ver los resultados hasta que no finalice el plazo. */ -#define Log_PLATFORM_VERSION "SWAD 21.38.1 (2021-10-20)" +#define Log_PLATFORM_VERSION "SWAD 21.39 (2021-10-21)" #define CSS_FILE "swad20.45.css" #define JS_FILE "swad20.69.1.js" /* TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams + Version 21.39: Oct 21, 2021 Fixed bug in nicknamed. Reported by Ana Ollarves Reyes. (320487 lines) Version 21.38.1: Oct 20, 2021 Queries moved to module swad_survey_database. (320522 lines) Version 21.38: Oct 20, 2021 New module swad_survey_database for database queries related to surveys. (320457 lines) Version 21.37.1: Oct 20, 2021 Code refactoring in attendance. (320361 lines) diff --git a/swad_message.c b/swad_message.c index 2611b20d..e8029ccc 100644 --- a/swad_message.c +++ b/swad_message.c @@ -677,7 +677,7 @@ static void Msg_WriteFormSubjectAndContentMsgToUsrs (struct Msg_Messages *Messag static void Msg_PutHiddenParamAnotherRecipient (const struct UsrData *UsrDat) { - char NickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; snprintf (NickWithArr,sizeof (NickWithArr),"@%s",UsrDat->Nickname); Par_PutHiddenParamString (NULL,"OtherRecipients",NickWithArr); diff --git a/swad_nickname.c b/swad_nickname.c index 74517add..e604b719 100644 --- a/swad_nickname.c +++ b/swad_nickname.c @@ -75,7 +75,7 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat); bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr) { - char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char CopyOfNick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; unsigned Length; const char *Ptr; @@ -84,18 +84,18 @@ bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr) return false; /***** Make a copy of nickname *****/ - Str_Copy (NickWithoutArr,NickWithArr,sizeof (NickWithoutArr) - 1); - Str_RemoveLeadingArrobas (NickWithoutArr); - Length = strlen (NickWithoutArr); + Str_Copy (CopyOfNick,NickWithArr,sizeof (CopyOfNick) - 1); + Str_RemoveLeadingArrobas (CopyOfNick); + Length = strlen (CopyOfNick); // Leading arrobas already removed /***** A nick (without arroba) must have a number of characters - Nck_MIN_BYTES_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA *****/ - if (Length < Nck_MIN_BYTES_NICK_WITHOUT_ARROBA || - Length > Nck_MAX_BYTES_NICK_WITHOUT_ARROBA) + Nck_MIN_CHARS_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_CHARS_NICK_WITHOUT_ARROBA *****/ + if (Length < Nck_MIN_CHARS_NICK_WITHOUT_ARROBA || + Length > Nck_MAX_CHARS_NICK_WITHOUT_ARROBA) return false; /***** A nick can have digits, letters and '_' *****/ - for (Ptr = NickWithoutArr; + for (Ptr = CopyOfNick; // Leading arrobas already removed *Ptr; Ptr++) if (!((*Ptr >= 'a' && *Ptr <= 'z') || @@ -113,28 +113,24 @@ bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr) // Nickname may have leading '@' // Returns true if nickname found in database -long Nck_GetUsrCodFromNickname (const char Nickname[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]) +long Nck_GetUsrCodFromNickname (const char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]) { - char NickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; - char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char CopyOfNick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; /***** Trivial check 1: nickname should be not null *****/ - if (!Nickname) + if (!NickWithArr) return -1L; /***** Trivial check 2: nickname should be not empty *****/ - if (!Nickname[0]) + if (!NickWithArr[0]) return -1L; - /***** Make a copy with possible leading arrobas *****/ - Str_Copy (NickWithArr,Nickname,sizeof (NickWithArr) - 1); - /***** Remove leading arrobas *****/ - Str_RemoveLeadingArrobas (NickWithArr); - Str_Copy (NickWithoutArr,NickWithArr,sizeof (NickWithoutArr) - 1); + Str_Copy (CopyOfNick,NickWithArr,sizeof (CopyOfNick) - 1); + Str_RemoveLeadingArrobas (CopyOfNick); /***** Get user's code from database *****/ - return Nck_DB_GetUsrCodFromNickname (NickWithoutArr); + return Nck_DB_GetUsrCodFromNickname (CopyOfNick); } /*****************************************************************************/ @@ -179,7 +175,7 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe, unsigned NumNicks; unsigned NumNick; Act_Action_t NextAction; - char NickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; const struct UsrData *UsrDat = (ItsMe ? &Gbl.Usrs.Me.UsrDat : &Gbl.Usrs.Other.UsrDat); @@ -486,54 +482,47 @@ void Nck_UpdateOtherUsrNick (void) static void Nck_UpdateUsrNick (struct UsrData *UsrDat) { - extern const char *Txt_The_nickname_X_matches_the_one_you_had_previously_registered; - extern const char *Txt_The_nickname_X_had_been_registered_by_another_user; - extern const char *Txt_The_nickname_X_has_been_registered_successfully; - extern const char *Txt_The_nickname_entered_X_is_not_valid_; - char NewNickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; - char NewNickWithoutArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + extern const char *Txt_The_nickname_matches_the_one_you_had_previously_registered; + extern const char *Txt_The_nickname_had_been_registered_by_another_user; + extern const char *Txt_The_nickname_has_been_registered_successfully; + extern const char *Txt_The_nickname_is_not_valid_; + char NewNick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; /***** Get new nickname from form *****/ - Par_GetParToText ("NewNick",NewNickWithArr,sizeof (NewNickWithArr) - 1); - if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid + Par_GetParToText ("NewNick",NewNick,sizeof (NewNick) - 1); + + if (Nck_CheckIfNickWithArrIsValid (NewNick)) // If new nickname is valid { /***** Remove arrobas at the beginning *****/ - Str_Copy (NewNickWithoutArr,NewNickWithArr,sizeof (NewNickWithoutArr) - 1); - Str_RemoveLeadingArrobas (NewNickWithoutArr); + Str_RemoveLeadingArrobas (NewNick); /***** Check if new nickname exists in database *****/ - if (!strcmp (UsrDat->Nickname,NewNickWithoutArr)) // User's nickname match exactly the new nickname + if (!strcmp (UsrDat->Nickname,NewNick)) // User's nickname match exactly the new nickname Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID, - Txt_The_nickname_X_matches_the_one_you_had_previously_registered, - NewNickWithoutArr); - else if (strcasecmp (UsrDat->Nickname,NewNickWithoutArr)) // User's nickname does not match, not even case insensitive, the new nickname + Txt_The_nickname_matches_the_one_you_had_previously_registered); + else if (strcasecmp (UsrDat->Nickname,NewNick)) // User's nickname does not match, not even case insensitive, the new nickname { /***** Check if the new nickname matches any of my old nicknames *****/ - if (!Nck_DB_CheckIfNickMatchesAnyUsrNick (UsrDat->UsrCod, - NewNickWithoutArr)) // No matches + if (!Nck_DB_CheckIfNickMatchesAnyUsrNick (UsrDat->UsrCod,NewNick)) // No matches /***** Check if the new nickname matches any of the nicknames of other users *****/ - if (Nck_DB_CheckIfNickMatchesAnyOtherUsrsNicks (UsrDat->UsrCod, - NewNickWithoutArr)) // A nickname of another user is the same that user's nickname + if (Nck_DB_CheckIfNickMatchesAnyOtherUsrsNicks (UsrDat->UsrCod,NewNick)) // A nickname of another user is the same that user's nickname Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID, - Txt_The_nickname_X_had_been_registered_by_another_user, - NewNickWithoutArr); + Txt_The_nickname_had_been_registered_by_another_user); } if (Ale_GetNumAlerts () == 0) // No problems { // Now we know the new nickname is not already in database // and is diffent to the current one - Nck_DB_UpdateNick (UsrDat->UsrCod,NewNickWithoutArr); - Str_Copy (UsrDat->Nickname,NewNickWithoutArr,sizeof (UsrDat->Nickname) - 1); + Nck_DB_UpdateNick (UsrDat->UsrCod,NewNick); // Leading arrobas already removed + Str_Copy (UsrDat->Nickname,NewNick,sizeof (UsrDat->Nickname) - 1); Ale_CreateAlert (Ale_SUCCESS,Nck_NICKNAME_SECTION_ID, - Txt_The_nickname_X_has_been_registered_successfully, - NewNickWithoutArr); + Txt_The_nickname_has_been_registered_successfully); } } else // New nickname is not valid Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID, - Txt_The_nickname_entered_X_is_not_valid_, - NewNickWithArr, + Txt_The_nickname_is_not_valid_, Nck_MIN_CHARS_NICK_WITHOUT_ARROBA, Nck_MAX_CHARS_NICK_WITHOUT_ARROBA); } diff --git a/swad_nickname.h b/swad_nickname.h index e0b08c89..e31f191d 100644 --- a/swad_nickname.h +++ b/swad_nickname.h @@ -32,11 +32,12 @@ /************************* Public types and constants ************************/ /*****************************************************************************/ -#define Nck_MIN_CHARS_NICK_WITHOUT_ARROBA 3 -#define Nck_MIN_BYTES_NICK_WITHOUT_ARROBA Nck_MIN_CHARS_NICK_WITHOUT_ARROBA +#define Nck_MIN_CHARS_NICK_WITHOUT_ARROBA 3 // Example: jim +#define Nck_MAX_CHARS_NICK_WITHOUT_ARROBA 16 // Example: juancarlos_aroja -#define Nck_MAX_CHARS_NICK_WITHOUT_ARROBA 16 #define Nck_MAX_BYTES_NICK_WITHOUT_ARROBA Nck_MAX_CHARS_NICK_WITHOUT_ARROBA +// Several bytes for leading @ because it may come from form +#define Nck_MAX_BYTES_NICK_WITH_ARROBA (Str_MAX_BYTES_PER_CHAR + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA) /*****************************************************************************/ /***************************** Public prototypes *****************************/ @@ -44,7 +45,7 @@ bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr); -long Nck_GetUsrCodFromNickname (const char Nickname[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]); +long Nck_GetUsrCodFromNickname (const char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]); void Nck_ShowFormChangeMyNickname (bool IMustFillNickname); void Nck_ShowFormChangeOtherUsrNickname (void); diff --git a/swad_nickname_database.c b/swad_nickname_database.c index 1739cf82..b53113b3 100644 --- a/swad_nickname_database.c +++ b/swad_nickname_database.c @@ -67,7 +67,7 @@ void Nck_DB_UpdateNick (long UsrCod,const char *NewNickname) /************** Get user's code of a user from his/her nickname **************/ /*****************************************************************************/ -long Nck_DB_GetUsrCodFromNickname (const char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]) +long Nck_DB_GetUsrCodFromNickname (const char *NickWithoutArr) { return DB_QuerySELECTCode ("can not get user's code", "SELECT usr_nicknames.UsrCod" @@ -115,7 +115,7 @@ unsigned Nck_DB_GetUsrNicknames (MYSQL_RES **mysql_res,long UsrCod) /************ Check if nickname matches any of a user's nicknames ************/ /*****************************************************************************/ -bool Nck_DB_CheckIfNickMatchesAnyUsrNick (long UsrCod,const char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]) +bool Nck_DB_CheckIfNickMatchesAnyUsrNick (long UsrCod,const char *NickWithoutArr) { return (DB_QueryCOUNT ("can not check if nickname already existed", "SELECT COUNT(*)" @@ -130,7 +130,7 @@ bool Nck_DB_CheckIfNickMatchesAnyUsrNick (long UsrCod,const char NickWithoutArr[ /********* Check if nickname matches any of other user's nicknames ***********/ /*****************************************************************************/ -bool Nck_DB_CheckIfNickMatchesAnyOtherUsrsNicks (long UsrCod,const char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]) +bool Nck_DB_CheckIfNickMatchesAnyOtherUsrsNicks (long UsrCod,const char *NickWithoutArr) { return (DB_QueryCOUNT ("can not check if nickname already existed", "SELECT COUNT(*)" diff --git a/swad_nickname_database.h b/swad_nickname_database.h index 1e038ea9..913f61da 100644 --- a/swad_nickname_database.h +++ b/swad_nickname_database.h @@ -40,12 +40,12 @@ void Nck_DB_UpdateNick (long UsrCod,const char *NewNickname); -long Nck_DB_GetUsrCodFromNickname (const char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]); +long Nck_DB_GetUsrCodFromNickname (const char *NickWithoutArr); void Nck_DB_GetNicknameFromUsrCod (long UsrCod, char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]); unsigned Nck_DB_GetUsrNicknames (MYSQL_RES **mysql_res,long UsrCod); -bool Nck_DB_CheckIfNickMatchesAnyUsrNick (long UsrCod,const char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]); -bool Nck_DB_CheckIfNickMatchesAnyOtherUsrsNicks (long UsrCod,const char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]); +bool Nck_DB_CheckIfNickMatchesAnyUsrNick (long UsrCod,const char *NickWithoutArr); +bool Nck_DB_CheckIfNickMatchesAnyOtherUsrsNicks (long UsrCod,const char *NickWithoutArr); void Nck_DB_RemoveNickname (long UsrCod,const char *Nickname); void Nck_DB_RemoveUsrNicknames (long UsrCod); diff --git a/swad_parameter.c b/swad_parameter.c index d9fc458d..40f692e7 100644 --- a/swad_parameter.c +++ b/swad_parameter.c @@ -662,7 +662,7 @@ void Par_GetMainParams (void) extern const char *The_ThemeId[The_NUM_THEMES]; extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS]; long ActCod; - char Nickname[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char Nick[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; char URL[PATH_MAX + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1]; @@ -690,13 +690,13 @@ void Par_GetMainParams (void) /***** Get another user's nickname, if exists (this nickname is used to go to another user's profile, not to get the logged user) *****/ - if (Par_GetParToText ("usr",Nickname,sizeof (Nickname) - 1)) + if (Par_GetParToText ("usr",Nick,sizeof (Nick) - 1)) { - if (Nickname[0]) + if (Nick[0]) { /* Set another user's nickname */ - Str_RemoveLeadingArrobas (Nickname); - Str_Copy (Gbl.Usrs.Other.UsrDat.Nickname,Nickname, // without arroba + Str_RemoveLeadingArrobas (Nick); + Str_Copy (Gbl.Usrs.Other.UsrDat.Nickname,Nick, // Leading arrobas already removed sizeof (Gbl.Usrs.Other.UsrDat.Nickname) - 1); // This user's code is used to go to public profile @@ -706,13 +706,13 @@ void Par_GetMainParams (void) Gbl.Action.Act = Gbl.Action.Original = ActSeeOthPubPrf; // Set default action if no other is specified } } - else if (Par_GetParToText ("agd",Nickname,sizeof (Nickname) - 1)) + else if (Par_GetParToText ("agd",Nick,sizeof (Nick) - 1)) { - if (Nickname[0]) + if (Nick[0]) { /* Set another user's nickname */ - Str_RemoveLeadingArrobas (Nickname); - Str_Copy (Gbl.Usrs.Other.UsrDat.Nickname,Nickname, // without arroba + Str_RemoveLeadingArrobas (Nick); + Str_Copy (Gbl.Usrs.Other.UsrDat.Nickname,Nick, // Leading arrobas already removed sizeof (Gbl.Usrs.Other.UsrDat.Nickname) - 1); // This user's code is used to go to public agenda diff --git a/swad_profile.c b/swad_profile.c index c02070cb..e352f95b 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -192,7 +192,7 @@ void Prf_RequestUserProfile (void) extern const char *The_ClassFormInBox[The_NUM_THEMES]; extern const char *Txt_Nickname; extern const char *Txt_Continue; - char NickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; if (Gbl.Usrs.Me.Logged) { diff --git a/swad_string.c b/swad_string.c index 00aa2bee..fcfedf1c 100644 --- a/swad_string.c +++ b/swad_string.c @@ -292,10 +292,10 @@ void Str_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre Links[NumLinks].NumActualBytes = (size_t) (PtrSrc - Links[NumLinks].PtrStart); /* A nick (without arroba) must have a number of characters - Nck_MIN_BYTES_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA */ + Nck_MIN_CHARS_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_CHARS_NICK_WITHOUT_ARROBA */ Length = Links[NumLinks].NumActualBytes - 1; // Do not count the initial @ - IsNickname = (Length >= Nck_MIN_BYTES_NICK_WITHOUT_ARROBA && - Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA); + IsNickname = (Length >= Nck_MIN_CHARS_NICK_WITHOUT_ARROBA && + Length <= Nck_MAX_CHARS_NICK_WITHOUT_ARROBA); if (IsNickname) { @@ -732,9 +732,9 @@ void Str_AnalyzeTxtAndStoreNotifyEventToMentionedUsrs (long PubCod,const char *T Nickname.Length = (size_t) (Ptr - Nickname.PtrStart); /* A nick (without arroba) must have a number of characters - Nck_MIN_BYTES_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA */ - IsNickname = (Nickname.Length >= Nck_MIN_BYTES_NICK_WITHOUT_ARROBA && - Nickname.Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA); + Nck_MIN_CHARS_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_CHARS_NICK_WITHOUT_ARROBA */ + IsNickname = (Nickname.Length >= Nck_MIN_CHARS_NICK_WITHOUT_ARROBA && + Nickname.Length <= Nck_MAX_CHARS_NICK_WITHOUT_ARROBA); if (IsNickname) { diff --git a/swad_text.c b/swad_text.c index e7ff3ba0..c07021e2 100644 --- a/swad_text.c +++ b/swad_text.c @@ -49239,79 +49239,70 @@ const char *Txt_The_new_logo_is_X = // Warning: it is very important to include "O novo logotipo é %s."; #endif -const char *Txt_The_nickname_X_has_been_registered_successfully = // Warning: it is very important to include %s in the following sentences +const char *Txt_The_nickname_has_been_registered_successfully = #if L==1 // ca - "El apodo @%s" - " se ha registrado correctamente."; // Necessita traduccio + "El apodo se ha registrado correctamente."; // Necessita traduccio #elif L==2 // de - "The nickname @%s" - " has been registered successfully."; // Need Übersetzung + "The nickname has been registered successfully."; // Need Übersetzung #elif L==3 // en - "The nickname @%s" - " has been registered successfully."; + "The nickname has been registered successfully."; #elif L==4 // es - "El apodo @%s" - " se ha registrado correctamente."; + "El apodo se ha registrado correctamente."; #elif L==5 // fr - "The nickname @%s" - " has been registered successfully."; // Besoin de traduction + "The nickname has been registered successfully."; // Besoin de traduction #elif L==6 // gn - "El apodo @%s" - " se ha registrado correctamente."; // Okoteve traducción + "El apodo se ha registrado correctamente."; // Okoteve traducción #elif L==7 // it - "Il nome utente @%s" - " è stato registrato con successo."; + "Il nome utente è stato registrato con successo."; #elif L==8 // pl - "The nickname @%s" - " has been registered successfully."; // Potrzebujesz tlumaczenie + "The nickname has been registered successfully."; // Potrzebujesz tlumaczenie #elif L==9 // pt - "A alcunha @%s" - " foi registrada com sucesso."; + "A alcunha foi registrada com sucesso."; #endif -const char *Txt_The_nickname_entered_X_is_not_valid_ = // Warning: it is very important to include %s and two %u in the following sentences +const char *Txt_The_nickname_is_not_valid_ = #if L==1 // ca - "El apodo %s no es válido.
" + "El apodo no es válido.
" "El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).
" "Cada carácter posterior a la @ inicial puede ser una letra (a-z, A-Z)," " un dígito (0-9) o "_"."; // Necessita traduccio #elif L==2 // de - "The nickname %s is not valid.
" + "The nickname is not valid.
" "Your nickname must have a length between %u and %u characters (not including the initial @).
" "Each character after initial @ can be a letter (a-z, A-Z)," " a digit (0-9) or "_"."; // Need Übersetzung #elif L==3 // en - "The nickname %s is not valid.
" + "The nickname is not valid.
" "Your nickname must have a length between %u and %u characters (not including the initial @).
" "Each character after initial @ can be a letter (a-z, A-Z)," " a digit (0-9) or "_"."; #elif L==4 // es - "El apodo %s no es válido.
" + "El apodo no es válido.
" "El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).
" "Cada carácter posterior a la @ inicial puede ser una letra (a-z, A-Z)," " un dígito (0-9) o "_"."; #elif L==5 // fr - "The nickname %s is not valid.
" + "The nickname is not valid.
" "Your nickname must have a length between %u and %u characters (not including initial the @).
" "Each character after initial @ can be a letter (a-z, A-Z)," " a digit (0-9) or "_"."; // Besoin de traduction #elif L==6 // gn - "El apodo %s no es válido.
" + "El apodo no es válido.
" "El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).
" "Cada carácter posterior a la @ inicial puede ser una letra (a-z, A-Z)," " un dígito (0-9) o "_"."; // Okoteve traducción #elif L==7 // it - "Il nome utente %s non è valido.
" + "Il nome utente non è valido.
" "Your nickname must have a length between %u and %u characters (not including the initial @).
" "Each character after initial @ can be a letter (a-z, A-Z)," " a digit (0-9) or "_"."; // Bisogno di traduzione #elif L==8 // pl - "The nickname %s is not valid.
" + "The nickname is not valid.
" "Your nickname must have a length between %u and %u characters (not including the initial @).
" "Each character after initial @ can be a letter (a-z, A-Z)," " a digit (0-9) or "_"."; // Potrzebujesz tlumaczenie #elif L==9 // pt - "A alcunha %s não é válido.
" + "A alcunha não é válido.
" "Sua alcunha deve ter um tamanho entre %u e %u caracteres (sem incluir o inicial @).
" "Cada caractere após inicial @ pode ser uma letra (a-z, A-Z)," " um dígito (0-9) ou "_"."; @@ -49503,64 +49494,46 @@ const char *Txt_The_new_URL_is_X = // Warning: it is very important to include % "O novo URL é %s."; #endif -const char *Txt_The_nickname_X_had_been_registered_by_another_user = // Warning: it is very important to include %s in the following sentences +const char *Txt_The_nickname_had_been_registered_by_another_user = #if L==1 // ca - "El apodo @%s" - " ya había sido registrado por otro usuario."; // Necessita traduccio + "El apodo ya había sido registrado por otro usuario."; // Necessita traduccio #elif L==2 // de - "The nickname @%s" - " had been registered by another user."; // Need Übersetzung + "The nickname had been registered by another user."; // Need Übersetzung #elif L==3 // en - "The nickname @%s" - " had been registered by another user."; + "The nickname had been registered by another user."; #elif L==4 // es - "El apodo @%s" - " ya había sido registrado por otro usuario."; + "El apodo ya había sido registrado por otro usuario."; #elif L==5 // fr - "The nickname @%s" - " had been enroled by another user."; // Besoin de traduction + "The nickname had been enroled by another user."; // Besoin de traduction #elif L==6 // gn - "El apodo @%s" - " ya había sido registrado por otro usuario."; // Okoteve traducción + "El apodo ya había sido registrado por otro usuario."; // Okoteve traducción #elif L==7 // it - "Il nome utente @%s" - " è stato registrato da un altro utente."; + "Il nome utente è stato registrato da un altro utente."; #elif L==8 // pl - "The nickname @%s" - " had been registered by another user."; // Potrzebujesz tlumaczenie + "The nickname had been registered by another user."; // Potrzebujesz tlumaczenie #elif L==9 // pt - "A alcunha @%s" - " foi registrada por outro usuário."; + "A alcunha foi registrada por outro usuário."; #endif -const char *Txt_The_nickname_X_matches_the_one_you_had_previously_registered = // Warning: it is very important to include %s in the following sentences +const char *Txt_The_nickname_matches_the_one_you_had_previously_registered = #if L==1 // ca - "El apodo @%s" - " coincide con el que ya tenía registrado previamente."; // Necessita traduccio + "El apodo coincide con el que ya tenía registrado previamente."; // Necessita traduccio #elif L==2 // de - "The nickname @%s" - " matches the one you had previously registered."; // Need Übersetzung + "The nickname matches the one you had previously registered."; // Need Übersetzung #elif L==3 // en - "The nickname @%s" - " matches the one you had previously registered."; + "The nickname matches the one you had previously registered."; #elif L==4 // es - "El apodo @%s" - " coincide con el que ya tenía registrado previamente."; + "El apodo coincide con el que ya tenía registrado previamente."; #elif L==5 // fr - "The nickname @%s" - " matches the one you had previously registered."; // Besoin de traduction + "The nickname matches the one you had previously registered."; // Besoin de traduction #elif L==6 // gn - "El apodo @%s" - " coincide con el que ya tenía registrado previamente."; // Okoteve traducción + "El apodo coincide con el que ya tenía registrado previamente."; // Okoteve traducción #elif L==7 // it - "Il nome utente @%s" - " coincide con quello che hai precedentemente registrato."; + "Il nome utente coincide con quello che hai precedentemente registrato."; #elif L==8 // pl - "The nickname @%s" - " matches the one you had previously registered."; // Potrzebujesz tlumaczenie + "The nickname matches the one you had previously registered."; // Potrzebujesz tlumaczenie #elif L==9 // pt - "A alcunha @%s" - " corresponde àquela que você registrou anteriormente."; + "A alcunha corresponde àquela que você registrou anteriormente."; #endif const char *Txt_The_number_of_editing_lines_in_the_record_field_X_has_not_changed = // Warning: it is very important to include %s in the following sentences diff --git a/swad_user.c b/swad_user.c index b027217e..a3273258 100644 --- a/swad_user.c +++ b/swad_user.c @@ -10190,7 +10190,7 @@ void Usr_DB_RemoveUsrFromBanned (long UsrCod) void Usr_PrintUsrQRCode (void) { - char NewNickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NewNickWithArr[Nck_MAX_BYTES_NICK_WITH_ARROBA + 1]; if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) {