mirror of https://github.com/acanas/swad-core.git
Version 21.20: Sep 30, 2021 New module swad_nickname_database for database queries related to nicknames.
This commit is contained in:
parent
f63f69f61d
commit
7f54d9010d
5
Makefile
5
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 \
|
||||
|
|
21
swad_API.c
21
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?
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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(*)"
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -25,21 +25,11 @@
|
|||
/********************************* Headers ***********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
// #include <string.h>
|
||||
|
||||
// #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 ****************/
|
||||
|
|
113
swad_nickname.c
113
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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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])
|
||||
{
|
||||
|
|
|
@ -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 ();
|
||||
|
|
11
swad_user.c
11
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 ())
|
||||
{
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue