mirror of https://github.com/acanas/swad-core.git
Version 21.39: Oct 21, 2021 Fixed bug in nicknamed. Reported by Ana Ollarves Reyes.
This commit is contained in:
parent
f29d0eb62d
commit
711f109e57
31
swad_API.c
31
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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(*)"
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
107
swad_text.c
107
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 é <strong>%s</strong>.";
|
||||
#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 <strong>@%s</strong>"
|
||||
" se ha registrado correctamente."; // Necessita traduccio
|
||||
"El apodo se ha registrado correctamente."; // Necessita traduccio
|
||||
#elif L==2 // de
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" has been registered successfully."; // Need Übersetzung
|
||||
"The nickname has been registered successfully."; // Need Übersetzung
|
||||
#elif L==3 // en
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" has been registered successfully.";
|
||||
"The nickname has been registered successfully.";
|
||||
#elif L==4 // es
|
||||
"El apodo <strong>@%s</strong>"
|
||||
" se ha registrado correctamente.";
|
||||
"El apodo se ha registrado correctamente.";
|
||||
#elif L==5 // fr
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" has been registered successfully."; // Besoin de traduction
|
||||
"The nickname has been registered successfully."; // Besoin de traduction
|
||||
#elif L==6 // gn
|
||||
"El apodo <strong>@%s</strong>"
|
||||
" se ha registrado correctamente."; // Okoteve traducción
|
||||
"El apodo se ha registrado correctamente."; // Okoteve traducción
|
||||
#elif L==7 // it
|
||||
"Il nome utente <strong>@%s</strong>"
|
||||
" è stato registrato con successo.";
|
||||
"Il nome utente è stato registrato con successo.";
|
||||
#elif L==8 // pl
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" has been registered successfully."; // Potrzebujesz tlumaczenie
|
||||
"The nickname has been registered successfully."; // Potrzebujesz tlumaczenie
|
||||
#elif L==9 // pt
|
||||
"A alcunha <strong>@%s</strong>"
|
||||
" 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 <strong>%s</strong> no es válido.<br />"
|
||||
"El apodo no es válido.<br />"
|
||||
"El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).<br />"
|
||||
"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 <strong>%s</strong> is not valid.<br />"
|
||||
"The nickname is not valid.<br />"
|
||||
"Your nickname must have a length between %u and %u characters (not including the initial @).<br />"
|
||||
"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 <strong>%s</strong> is not valid.<br />"
|
||||
"The nickname is not valid.<br />"
|
||||
"Your nickname must have a length between %u and %u characters (not including the initial @).<br />"
|
||||
"Each character after initial @ can be a letter (a-z, A-Z),"
|
||||
" a digit (0-9) or "_".";
|
||||
#elif L==4 // es
|
||||
"El apodo <strong>%s</strong> no es válido.<br />"
|
||||
"El apodo no es válido.<br />"
|
||||
"El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).<br />"
|
||||
"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 <strong>%s</strong> is not valid.<br />"
|
||||
"The nickname is not valid.<br />"
|
||||
"Your nickname must have a length between %u and %u characters (not including initial the @).<br />"
|
||||
"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 <strong>%s</strong> no es válido.<br />"
|
||||
"El apodo no es válido.<br />"
|
||||
"El apodo debe tener una longitud entre %u y %u caracteres (sin contar la @ inicial).<br />"
|
||||
"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 <strong>%s</strong> non è valido.<br />"
|
||||
"Il nome utente non è valido.<br />"
|
||||
"Your nickname must have a length between %u and %u characters (not including the initial @).<br /> "
|
||||
"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 <strong>%s</strong> is not valid.<br />"
|
||||
"The nickname is not valid.<br />"
|
||||
"Your nickname must have a length between %u and %u characters (not including the initial @).<br />"
|
||||
"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 <strong>%s</strong> não é válido.<br />"
|
||||
"A alcunha não é válido.<br />"
|
||||
"Sua alcunha deve ter um tamanho entre %u e %u caracteres (sem incluir o inicial @).<br />"
|
||||
"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 é <strong>%s</strong>.";
|
||||
#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 <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" had been registered by another user."; // Need Übersetzung
|
||||
"The nickname had been registered by another user."; // Need Übersetzung
|
||||
#elif L==3 // en
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" had been registered by another user.";
|
||||
"The nickname had been registered by another user.";
|
||||
#elif L==4 // es
|
||||
"El apodo <strong>@%s</strong>"
|
||||
" ya había sido registrado por otro usuario.";
|
||||
"El apodo ya había sido registrado por otro usuario.";
|
||||
#elif L==5 // fr
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" è stato registrato da un altro utente.";
|
||||
"Il nome utente è stato registrato da un altro utente.";
|
||||
#elif L==8 // pl
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" had been registered by another user."; // Potrzebujesz tlumaczenie
|
||||
"The nickname had been registered by another user."; // Potrzebujesz tlumaczenie
|
||||
#elif L==9 // pt
|
||||
"A alcunha <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" matches the one you had previously registered.";
|
||||
"The nickname matches the one you had previously registered.";
|
||||
#elif L==4 // es
|
||||
"El apodo <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" coincide con quello che hai precedentemente registrato.";
|
||||
"Il nome utente coincide con quello che hai precedentemente registrato.";
|
||||
#elif L==8 // pl
|
||||
"The nickname <strong>@%s</strong>"
|
||||
" 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 <strong>@%s</strong>"
|
||||
" 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
|
||||
|
|
|
@ -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 ())
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue