diff --git a/Makefile b/Makefile index 8fde2094..a2865b2a 100644 --- a/Makefile +++ b/Makefile @@ -66,8 +66,9 @@ OBJS = swad_account.o swad_account_database.o swad_action.o swad_admin.o \ swad_match.o swad_match_database.o swad_match_print.o \ swad_match_result.o swad_media.o swad_media_database.o swad_menu.o \ swad_message.o swad_message_database.o swad_MFU.o swad_MFU_database.o \ - swad_network.o swad_network_database.o swad_nickname.o swad_notice.o \ - swad_notification.o swad_notification_database.o swad_pagination.o \ + swad_network.o swad_network_database.o swad_nickname.o \ + swad_nickname_database.o swad_notice.o swad_notification.o \ + swad_notification_database.o swad_pagination.o \ swad_parameter.o swad_password.o swad_photo.o swad_place.o \ swad_plugin.o swad_privacy.o swad_profile.o swad_program.o \ swad_project.o \ diff --git a/swad_API.c b/swad_API.c index d6b9bb03..762ee578 100644 --- a/swad_API.c +++ b/swad_API.c @@ -115,6 +115,7 @@ cp -f /home/acanas/swad/swad/swad /var/www/cgi-bin/ #include "swad_hierarchy_level.h" #include "swad_ID.h" #include "swad_match.h" +#include "swad_nickname_database.h" #include "swad_notice.h" #include "swad_notification.h" #include "swad_password.h" @@ -230,7 +231,7 @@ static int API_GetCurrentDegCodFromCurrentCrsCod (void); static bool API_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod); static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input - char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], // Output + char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1], // Output char *NewEmail, // Input-output char *NewPlainPassword, // Input char *NewEncryptedPassword); // Output @@ -678,7 +679,7 @@ int swad__createAccount (struct soap *soap, char *userNickname,char *userEmail,char *userPassword,char *appKey, // input struct swad__createAccountOutput *createAccountOut) // output { - char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1]; char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]; int Result; int ReturnCode; @@ -700,7 +701,7 @@ int swad__createAccount (struct soap *soap, /***** Check parameters used to create the new account *****/ Result = API_CheckParamsNewAccount (userNickname, // Input - NewNickWithoutArr,// Output + NewNickWithoutArr, // Output userEmail, // Input-output userPassword, // Input NewEncryptedPassword); // Output @@ -750,15 +751,15 @@ int swad__createAccount (struct soap *soap, /*****************************************************************************/ // Return false on error //char *userNickname,char *userEmail,char *userID,char *userPassword -static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input - char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], // Output +static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input + char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1], // Output char *NewEmail, // Input-output char *NewPlainPassword, // Input char *NewEncryptedPassword) // Output { /***** Step 1/3: Check new nickname *****/ /* Make a copy without possible starting arrobas */ - Str_Copy (NewNickWithoutArr,NewNickWithArr,Nck_MAX_BYTES_NICK_FROM_FORM); + Str_Copy (NewNickWithoutArr,NewNickWithArr,Cns_MAX_BYTES_USR_LOGIN); if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid { /***** Remove arrobas at the beginning *****/ @@ -806,7 +807,7 @@ int swad__loginByUserPasswordKey (struct soap *soap, char *userID,char *userPassword,char *appKey, // input struct swad__loginByUserPasswordKeyOutput *loginByUserPasswordKeyOut) // output { - char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; + char UsrIDNickOrEmail[Cns_MAX_BYTES_USR_LOGIN + 1]; int ReturnCode; char PhotoURL[Cns_MAX_BYTES_WWW + 1]; bool UsrFound; @@ -1155,7 +1156,7 @@ int swad__getNewPassword (struct soap *soap, struct swad__getNewPasswordOutput *getNewPasswordOut) // output { int ReturnCode; - char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; + char UsrIDNickOrEmail[Cns_MAX_BYTES_USR_LOGIN + 1]; char NewRandomPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]; /***** Initializations *****/ @@ -3568,7 +3569,7 @@ int swad__sendMessage (struct soap *soap, { int ReturnCode; long ReplyUsrCod = -1L; - char Nickname[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char Nickname[Cns_MAX_BYTES_USR_LOGIN + 1]; char *Query = NULL; MYSQL_RES *mysql_res; MYSQL_ROW row; @@ -3657,7 +3658,7 @@ 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,Nck_MAX_BYTES_NICK_FROM_FORM); + Str_GetNextStringUntilComma (&Ptr,Nickname,Cns_MAX_BYTES_USR_LOGIN); /* Check if string is a valid nickname */ if (Nck_CheckIfNickWithArrIsValid (Nickname)) // String is a nickname? diff --git a/swad_account.c b/swad_account.c index bfae3673..8ac5884f 100644 --- a/swad_account.c +++ b/swad_account.c @@ -56,6 +56,7 @@ #include "swad_message_database.h" #include "swad_network.h" #include "swad_nickname.h" +#include "swad_nickname_database.h" #include "swad_notification.h" #include "swad_parameter.h" #include "swad_profile.h" @@ -93,9 +94,9 @@ extern struct Globals Gbl; static void Acc_ShowFormCheckIfIHaveAccount (const char *Title); static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct UsrData *UsrDat); -static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], +static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1], const char *NewEmail); -static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], +static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1], char NewEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1], char *NewEncryptedPassword); static void Acc_CreateNewEncryptedUsrCod (struct UsrData *UsrDat); @@ -360,7 +361,7 @@ void Acc_ShowFormCreateMyAccount (void) /************ Show form to create a new account using parameters *************/ /*****************************************************************************/ -static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], +static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1], const char *NewEmail) { extern const char *Hlp_PROFILE_SignUp; @@ -370,7 +371,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[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NewNickWithArr[Cns_MAX_BYTES_USR_LOGIN + 1]; /***** Begin form to enter some data of the new user *****/ Frm_BeginForm (ActCreUsrAcc); @@ -595,7 +596,7 @@ static void Acc_PutParamsToRemoveMyAccount (void *EncryptedUsrCod) bool Acc_CreateMyNewAccountAndLogIn (void) { - char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1]; char NewEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]; @@ -643,7 +644,7 @@ bool Acc_CreateMyNewAccountAndLogIn (void) /*****************************************************************************/ // Return false on error -static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], +static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1], char NewEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1], char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]) { @@ -651,15 +652,15 @@ static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Nck_MAX_BYTES_NICK_F extern const char *Txt_The_nickname_entered_X_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_FROM_FORM + 1]; + char NewNickWithArr[1 + Cns_MAX_BYTES_USR_LOGIN + 1]; char NewPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]; bool Error = false; /***** Step 1/3: Get new nickname from form *****/ - Par_GetParToText ("NewNick",NewNickWithArr,Nck_MAX_BYTES_NICK_FROM_FORM); + Par_GetParToText ("NewNick",NewNickWithArr,Cns_MAX_BYTES_USR_LOGIN); /* Remove arrobas at the beginning */ - Str_Copy (NewNickWithoutArr,NewNickWithArr,Nck_MAX_BYTES_NICK_FROM_FORM); + Str_Copy (NewNickWithoutArr,NewNickWithArr,Cns_MAX_BYTES_USR_LOGIN); Str_RemoveLeadingArrobas (NewNickWithoutArr); /* Create a new version of the nickname with arroba */ diff --git a/swad_account_database.c b/swad_account_database.c index 929c7bfa..55d7b3ee 100644 --- a/swad_account_database.c +++ b/swad_account_database.c @@ -80,7 +80,7 @@ unsigned Acc_DB_GetUsrsWithID (MYSQL_RES **mysql_res, /****** Check if a nickname matches any of the nicknames of other users ******/ /*****************************************************************************/ -bool Acc_DB_CheckIfNicknameAlreadyExists (const char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]) +bool Acc_DB_CheckIfNicknameAlreadyExists (const char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1]) { return (DB_QueryCOUNT ("can not check if nickname already existed", "SELECT COUNT(*)" diff --git a/swad_account_database.h b/swad_account_database.h index 3a8b01f1..780da59c 100644 --- a/swad_account_database.h +++ b/swad_account_database.h @@ -47,7 +47,7 @@ unsigned Acc_DB_GetUsrsWithID (MYSQL_RES **mysql_res, const char ID[ID_MAX_BYTES_USR_ID + 1]); -bool Acc_DB_CheckIfNicknameAlreadyExists (const char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]); +bool Acc_DB_CheckIfNicknameAlreadyExists (const char NewNickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1]); bool Acc_DB_CheckIfEmailAlreadyExists (const char NewEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]); long Acc_DB_CreateNewUsr (const struct UsrData *UsrDat); diff --git a/swad_agenda.c b/swad_agenda.c index 8ce0fddd..c4b6f060 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -156,7 +156,7 @@ void Agd_PutFormLogInToShowUsrAgenda (void) void Agd_PutParamAgd (void) { - char Nickname[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char Nickname[1 + Cns_MAX_BYTES_USR_LOGIN + 1]; snprintf (Nickname,sizeof (Nickname),"@%s",Gbl.Usrs.Other.UsrDat.Nickname); Par_PutHiddenParamString (NULL,"agd",Nickname); @@ -710,7 +710,7 @@ static void Agd_PutIconToViewEditMyFullAgenda (void *EncryptedUsrCod) static void Agd_PutIconToShowQR (void) { - char URL[Cns_MAX_BYTES_WWW + 1]; + char URL[Cns_MAX_BYTES_WWW + Cns_MAX_BYTES_USR_LOGIN + 1]; extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES]; snprintf (URL,sizeof (URL),"%s/%s?agd=@%s", diff --git a/swad_changelog.h b/swad_changelog.h index 5c7fc2c4..b1216e9e 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.19 (2021-09-29)" +#define Log_PLATFORM_VERSION "SWAD 21.20 (2021-09-30)" #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.20: Sep 30, 2021 New module swad_nickname_database for database queries related to nicknames. (317751 lines) Version 21.19: Sep 29, 2021 New module swad_network_database for database queries related to webs/social networks. (317644 lines) Version 21.18: Sep 29, 2021 New module swad_MFU_database for database queries related to most frequently used actions. (317529 lines) Version 21.17.4: Sep 29, 2021 Queries moved to module swad_message_database. (317408 lines) diff --git a/swad_constant.h b/swad_constant.h index eee4fe94..19bea187 100644 --- a/swad_constant.h +++ b/swad_constant.h @@ -48,6 +48,8 @@ #define Cns_MAX_CHARS_EMAIL_ADDRESS (256 - 1) // 255 #define Cns_MAX_BYTES_EMAIL_ADDRESS Cns_MAX_CHARS_EMAIL_ADDRESS // 255 +#define Cns_MAX_BYTES_USR_LOGIN Cns_MAX_BYTES_EMAIL_ADDRESS // 255 + #define Cns_MAX_CHARS_SUBJECT (256 - 1) // 255 #define Cns_MAX_BYTES_SUBJECT ((Cns_MAX_CHARS_SUBJECT + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 4095 diff --git a/swad_enrolment.c b/swad_enrolment.c index 392f919b..bd7f3b4f 100644 --- a/swad_enrolment.c +++ b/swad_enrolment.c @@ -1102,7 +1102,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role) /* Find next string in text */ Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail, - Cns_MAX_BYTES_EMAIL_ADDRESS); + Cns_MAX_BYTES_USR_LOGIN); /* Reset default list of users' codes */ ListUsrCods.NumUsrs = 0; @@ -1230,7 +1230,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role) /* Find next string in text */ Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail, - Cns_MAX_BYTES_EMAIL_ADDRESS); + Cns_MAX_BYTES_USR_LOGIN); /* Reset default list of users' codes */ ListUsrCods.NumUsrs = 0; diff --git a/swad_global.h b/swad_global.h index 4e183601..415bfd5c 100644 --- a/swad_global.h +++ b/swad_global.h @@ -247,7 +247,7 @@ struct Globals Rol_Role_t Max; bool HasChanged; // Set when I have changed my role } Role; - char UsrIdLogin[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; // String to store the ID, nickname or email entered in the user's login + char UsrIdLogin[Cns_MAX_BYTES_USR_LOGIN + 1]; // String to store the ID, nickname or email entered in the user's login char LoginPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1]; char LoginEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]; char PendingPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1]; diff --git a/swad_message.c b/swad_message.c index f0527cca..34b12a17 100644 --- a/swad_message.c +++ b/swad_message.c @@ -50,6 +50,7 @@ #include "swad_ID.h" #include "swad_message.h" #include "swad_message_database.h" +#include "swad_nickname_database.h" #include "swad_notification.h" #include "swad_pagination.h" #include "swad_parameter.h" @@ -673,7 +674,7 @@ static void Msg_WriteFormSubjectAndContentMsgToUsrs (struct Msg_Messages *Messag static void Msg_PutHiddenParamAnotherRecipient (const struct UsrData *UsrDat) { - char NickWithArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NickWithArr[1 + Cns_MAX_BYTES_USR_LOGIN + 1]; snprintf (NickWithArr,sizeof (NickWithArr),"@%s",UsrDat->Nickname); Par_PutHiddenParamString (NULL,"OtherRecipients",NickWithArr); diff --git a/swad_network_database.c b/swad_network_database.c index e0121691..bbc59603 100644 --- a/swad_network_database.c +++ b/swad_network_database.c @@ -25,21 +25,11 @@ /********************************* Headers ***********************************/ /*****************************************************************************/ -// #include - -// #include "swad_box.h" #include "swad_database.h" #include "swad_error.h" -// #include "swad_figure.h" -// #include "swad_form.h" #include "swad_global.h" -// #include "swad_hierarchy_level.h" -// #include "swad_HTML.h" #include "swad_network.h" #include "swad_network_database.h" -// #include "swad_parameter.h" -// #include "swad_profile.h" -// #include "swad_theme.h" /*****************************************************************************/ /************** External global variables from others modules ****************/ diff --git a/swad_nickname.c b/swad_nickname.c index 7f36b046..632e0bd8 100644 --- a/swad_nickname.c +++ b/swad_nickname.c @@ -33,6 +33,7 @@ #include "swad_form.h" #include "swad_global.h" #include "swad_HTML.h" +#include "swad_nickname_database.h" #include "swad_parameter.h" #include "swad_QR.h" #include "swad_user.h" @@ -66,8 +67,6 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe, static void Nck_PutParamsRemoveMyNick (void *Nick); static void Nck_PutParamsRemoveOtherNick (void *Nick); -static void Nck_DB_RemoveNickname (long UsrCod,const char *Nickname); - static void Nck_UpdateUsrNick (struct UsrData *UsrDat); /*****************************************************************************/ @@ -76,7 +75,7 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat); bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr) { - char NickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1]; unsigned Length; const char *Ptr; @@ -108,33 +107,15 @@ bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr) return true; } -/*****************************************************************************/ -/************* Get nickname of a user from his/her user's code ***************/ -/*****************************************************************************/ - -void Nck_DB_GetNicknameFromUsrCod (long UsrCod, - char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]) - { - /***** Get current (last updated) user's nickname from database *****/ - DB_QuerySELECTString (Nickname,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA, - "can not get nickname", - "SELECT Nickname" - " FROM usr_nicknames" - " WHERE UsrCod=%ld" - " ORDER BY CreatTime DESC" - " LIMIT 1", - UsrCod); - } - /*****************************************************************************/ /************** Get user's code of a user from his/her nickname **************/ /*****************************************************************************/ // Nickname may have leading '@' // Returns true if nickname found in database -long Nck_GetUsrCodFromNickname (const char *Nickname) +long Nck_GetUsrCodFromNickname (const char Nickname[Cns_MAX_BYTES_USR_LOGIN + 1]) { - char NickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NickWithoutArr[Cns_MAX_BYTES_USR_LOGIN + 1]; /***** Trivial check 1: nickname should be not null *****/ if (!Nickname) @@ -149,13 +130,7 @@ long Nck_GetUsrCodFromNickname (const char *Nickname) Str_RemoveLeadingArrobas (NickWithoutArr); /***** Get user's code from database *****/ - return DB_QuerySELECTCode ("can not get user's code", - "SELECT usr_nicknames.UsrCod" - " FROM usr_nicknames," - "usr_data" - " WHERE usr_nicknames.Nickname='%s'" - " AND usr_nicknames.UsrCod=usr_data.UsrCod", - NickWithoutArr); + return Nck_DB_GetUsrCodFromNickname (NickWithoutArr); } /*****************************************************************************/ @@ -200,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[1 + Cns_MAX_BYTES_USR_LOGIN + 1]; const struct UsrData *UsrDat = (ItsMe ? &Gbl.Usrs.Me.UsrDat : &Gbl.Usrs.Other.UsrDat); @@ -208,13 +183,7 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe, HTM_SECTION_Begin (Nck_NICKNAME_SECTION_ID); /***** Get my nicknames *****/ - NumNicks = (unsigned) - DB_QuerySELECT (&mysql_res,"can not get nicknames of a user", - "SELECT Nickname" // row[0] - " FROM usr_nicknames" - " WHERE UsrCod=%ld" - " ORDER BY CreatTime DESC", - UsrDat->UsrCod); + NumNicks = Nck_DB_GetUsrNicknames (&mysql_res,UsrDat->UsrCod); /***** Begin box *****/ snprintf (StrRecordWidth,sizeof (StrRecordWidth),"%upx",Rec_RECORD_WIDTH); @@ -470,33 +439,6 @@ void Nck_RemoveOtherUsrNick (void) Ale_ShowAlertUserNotFoundOrYouDoNotHavePermission (); } -/*****************************************************************************/ -/********************** Remove a nickname from database **********************/ -/*****************************************************************************/ - -static void Nck_DB_RemoveNickname (long UsrCod,const char *Nickname) - { - /***** Remove a nickname *****/ - DB_QueryREPLACE ("can not remove a nickname", - "DELETE FROM usr_nicknames" - " WHERE UsrCod=%ld" - " AND Nickname='%s'", - UsrCod, - Nickname); - } - -/*****************************************************************************/ -/************************** Remove user's nicknames **************************/ -/*****************************************************************************/ - -void Nck_DB_RemoveUsrNicknames (long UsrCod) - { - DB_QueryDELETE ("can not remove user's nicknames", - "DELETE FROM usr_nicknames" - " WHERE UsrCod=%ld", - UsrCod); - } - /*****************************************************************************/ /***************************** Update my nickname ****************************/ /*****************************************************************************/ @@ -544,12 +486,11 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat) 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[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; - char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NewNickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char NewNickWithoutArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; /***** Get new nickname from form *****/ - Par_GetParToText ("NewNick",NewNickWithArr, - Nck_MAX_BYTES_NICK_FROM_FORM); + Par_GetParToText ("NewNick",NewNickWithArr,sizeof (NewNickWithArr) - 1); if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid { /***** Remove arrobas at the beginning *****/ @@ -564,21 +505,11 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat) else if (strcasecmp (UsrDat->Nickname,NewNickWithoutArr)) // 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 (DB_QueryCOUNT ("can not check if nickname already existed", - "SELECT COUNT(*)" - " FROM usr_nicknames" - " WHERE UsrCod=%ld" - " AND Nickname='%s'", - UsrDat->UsrCod, - NewNickWithoutArr) == 0) // No matches + if (!Nck_DB_CheckIfNickMatchesAnyUsrNick (UsrDat->UsrCod, + NewNickWithoutArr)) // No matches /***** 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'" - " AND UsrCod<>%ld", - NewNickWithoutArr, - UsrDat->UsrCod)) // A nickname of another user is the same that user's nickname + if (Nck_DB_CheckIfNickMatchesAnyOtherUsrsNicks (UsrDat->UsrCod, + NewNickWithoutArr)) // 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); @@ -602,19 +533,3 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat) Nck_MIN_CHARS_NICK_WITHOUT_ARROBA, Nck_MAX_CHARS_NICK_WITHOUT_ARROBA); } - -/*****************************************************************************/ -/******************* Update user's nickname in database **********************/ -/*****************************************************************************/ - -void Nck_DB_UpdateNick (long UsrCod,const char *NewNickname) - { - /***** Update user's nickname in database *****/ - DB_QueryREPLACE ("can not update nickname", - "REPLACE INTO usr_nicknames" - " (UsrCod,Nickname,CreatTime)" - " VALUES" - " (%ld,'%s',NOW())", - UsrCod, - NewNickname); - } diff --git a/swad_nickname.h b/swad_nickname.h index 9a99053e..69f32086 100644 --- a/swad_nickname.h +++ b/swad_nickname.h @@ -38,9 +38,7 @@ #define Nck_MAX_CHARS_NICK_WITHOUT_ARROBA 16 #define Nck_MAX_BYTES_NICK_WITHOUT_ARROBA Nck_MAX_CHARS_NICK_WITHOUT_ARROBA -#define Nck_MAX_BYTES_NICK_FROM_FORM (128 - 1) // For variables that store characters typed in a form - -#define Nck_MAX_BYTES_LIST_NICKS ((Nck_MAX_BYTES_NICK_FROM_FORM + 2) * Cfg_MAX_USRS_IN_LIST) +#define Nck_MAX_BYTES_LIST_NICKS ((Cns_MAX_BYTES_USR_LOGIN + 2) * Cfg_MAX_USRS_IN_LIST) /*****************************************************************************/ /***************************** Public prototypes *****************************/ @@ -48,20 +46,15 @@ bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr); -void Nck_DB_GetNicknameFromUsrCod (long UsrCod, - char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]); -long Nck_GetUsrCodFromNickname (const char *Nickname); +long Nck_GetUsrCodFromNickname (const char Nickname[Cns_MAX_BYTES_USR_LOGIN + 1]); void Nck_ShowFormChangeMyNickname (bool IMustFillNickname); void Nck_ShowFormChangeOtherUsrNickname (void); void Nck_RemoveMyNick (void); void Nck_RemoveOtherUsrNick (void); -void Nck_DB_RemoveUsrNicknames (long UsrCod); void Nck_UpdateMyNick (void); void Nck_UpdateOtherUsrNick (void); -void Nck_DB_UpdateNick (long UsrCod,const char *NewNickname); - #endif diff --git a/swad_parameter.c b/swad_parameter.c index 74995dc5..d091b4fe 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[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char Nickname[Cns_MAX_BYTES_USR_LOGIN + 1]; char URL[PATH_MAX + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1]; @@ -690,7 +690,7 @@ 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,Nck_MAX_BYTES_NICK_FROM_FORM)) + if (Par_GetParToText ("usr",Nickname,Cns_MAX_BYTES_USR_LOGIN)) { if (Nickname[0]) { @@ -706,7 +706,7 @@ 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,Nck_MAX_BYTES_NICK_FROM_FORM)) + else if (Par_GetParToText ("agd",Nickname,Cns_MAX_BYTES_USR_LOGIN)) { if (Nickname[0]) { diff --git a/swad_profile.c b/swad_profile.c index 269fbda8..1b9bb54d 100644 --- a/swad_profile.c +++ b/swad_profile.c @@ -195,7 +195,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[1 + Cns_MAX_BYTES_USR_LOGIN + 1]; if (Gbl.Usrs.Me.Logged) { @@ -222,7 +222,7 @@ void Prf_RequestUserProfile (void) snprintf (NickWithArr,sizeof (NickWithArr),"@%s", Gbl.Usrs.Me.UsrDat.Nickname); - HTM_INPUT_TEXT ("usr",Nck_MAX_BYTES_NICK_FROM_FORM,NickWithArr, + HTM_INPUT_TEXT ("usr",Cns_MAX_BYTES_USR_LOGIN,NickWithArr, HTM_DONT_SUBMIT_ON_CHANGE, "size=\"18\""); HTM_LABEL_End (); diff --git a/swad_user.c b/swad_user.c index bbf7e8ee..2b183274 100644 --- a/swad_user.c +++ b/swad_user.c @@ -64,6 +64,7 @@ #include "swad_mail_database.h" #include "swad_MFU.h" #include "swad_nickname.h" +#include "swad_nickname_database.h" #include "swad_notification.h" #include "swad_parameter.h" #include "swad_password.h" @@ -2869,7 +2870,7 @@ void Usr_PutFormLogOut (void) void Usr_GetParamUsrIdLogin (void) { - Par_GetParToText ("UsrId",Gbl.Usrs.Me.UsrIdLogin,Cns_MAX_BYTES_EMAIL_ADDRESS); + Par_GetParToText ("UsrId",Gbl.Usrs.Me.UsrIdLogin,Cns_MAX_BYTES_USR_LOGIN); // Users' IDs are always stored internally without leading zeros Str_RemoveLeadingZeros (Gbl.Usrs.Me.UsrIdLogin); } @@ -2883,7 +2884,7 @@ static void Usr_GetParamOtherUsrIDNickOrEMail (void) /***** Get parameter with the plain user's ID, @nick or email of another user *****/ Par_GetParToText ("OtherUsrIDNickOrEMail", Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail, - Cns_MAX_BYTES_EMAIL_ADDRESS); + Cns_MAX_BYTES_USR_LOGIN); // If it's a user's ID (if does not contain '@') if (strchr (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail,(int) '@') != NULL) // '@' not found @@ -5987,7 +5988,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs) size_t LengthSelectedUsrsCods; size_t LengthUsrCod; const char *Ptr; - char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; + char UsrIDNickOrEmail[Cns_MAX_BYTES_USR_LOGIN + 1]; struct UsrData UsrDat; struct ListUsrCods ListUsrCods; bool Error = false; @@ -6015,7 +6016,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs) while (*Ptr) { /* Find next string in text until comma or semicolon (leading and trailing spaces are removed) */ - Str_GetNextStringUntilComma (&Ptr,UsrIDNickOrEmail,Cns_MAX_BYTES_EMAIL_ADDRESS); + Str_GetNextStringUntilComma (&Ptr,UsrIDNickOrEmail,Cns_MAX_BYTES_USR_LOGIN); /* Check if string is plain user's ID or nickname and get encrypted user's ID */ if (UsrIDNickOrEmail[0]) @@ -10169,7 +10170,7 @@ void Usr_DB_RemoveUsrFromBanned (long UsrCod) void Usr_PrintUsrQRCode (void) { - char NewNickWithArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1]; + char NewNickWithArr[1 + Cns_MAX_BYTES_USR_LOGIN + 1]; if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) { diff --git a/swad_user.h b/swad_user.h index 6bf79848..f0b9881e 100644 --- a/swad_user.h +++ b/swad_user.h @@ -166,13 +166,13 @@ struct UsrData { long UsrCod; char EnUsrCod [Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]; - char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]; // String to store the ID, nickname or email + char UsrIDNickOrEmail[Cns_MAX_BYTES_USR_LOGIN + 1]; // String to store the ID, nickname or email struct { struct ListIDs *List; unsigned Num; } IDs; - char Nickname [Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]; + char Nickname [Cns_MAX_BYTES_USR_LOGIN + 1]; char Password [Pwd_BYTES_ENCRYPTED_PASSWORD + 1]; struct {