mirror of https://github.com/acanas/swad-core.git
Version 16.155.18
This commit is contained in:
parent
3cd89420a3
commit
cf4188c76c
|
@ -699,11 +699,10 @@ CREATE TABLE IF NOT EXISTS log_ws (
|
|||
--
|
||||
CREATE TABLE IF NOT EXISTS mail_domains (
|
||||
MaiCod INT NOT NULL AUTO_INCREMENT,
|
||||
Domain VARCHAR(127) NOT NULL,
|
||||
Info VARCHAR(127) NOT NULL,
|
||||
Domain VARCHAR(2047) NOT NULL,
|
||||
Info VARCHAR(2047) NOT NULL,
|
||||
UNIQUE INDEX(MaiCod),
|
||||
UNIQUE INDEX(Domain),
|
||||
INDEX(Info));
|
||||
UNIQUE INDEX(Domain));
|
||||
--
|
||||
-- Table marks_properties: stores information about files of marks
|
||||
--
|
||||
|
|
|
@ -375,7 +375,7 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWith
|
|||
"</tr>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_Email,
|
||||
Usr_MAX_CHARS_USR_EMAIL,
|
||||
Cns_MAX_CHARS_EMAIL,
|
||||
Txt_HELP_email,
|
||||
NewEmail);
|
||||
|
||||
|
@ -551,7 +551,7 @@ static void Acc_PrintAccountSeparator (void)
|
|||
bool Acc_CreateMyNewAccountAndLogIn (void)
|
||||
{
|
||||
char NewNicknameWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
|
||||
char NewEmail[Usr_MAX_BYTES_USR_EMAIL + 1];
|
||||
char NewEmail[Cns_MAX_BYTES_EMAIL + 1];
|
||||
char NewEncryptedPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];
|
||||
|
||||
if (Acc_GetParamsNewAccount (NewNicknameWithoutArroba,NewEmail,NewEncryptedPassword))
|
||||
|
@ -578,7 +578,7 @@ bool Acc_CreateMyNewAccountAndLogIn (void)
|
|||
{
|
||||
/* Email updated sucessfully */
|
||||
Str_Copy (Gbl.Usrs.Me.UsrDat.Email,NewEmail,
|
||||
Usr_MAX_BYTES_USR_EMAIL);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
Gbl.Usrs.Me.UsrDat.EmailConfirmed = false;
|
||||
}
|
||||
|
@ -649,7 +649,7 @@ static bool Acc_GetParamsNewAccount (char NewNicknameWithoutArroba[Nck_MAX_BYTES
|
|||
}
|
||||
|
||||
/***** Step 2/3: Get new email from form *****/
|
||||
Par_GetParToText ("NewEmail",NewEmail,Usr_MAX_BYTES_USR_EMAIL);
|
||||
Par_GetParToText ("NewEmail",NewEmail,Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
if (Mai_CheckIfEmailIsValid (NewEmail)) // New email is valid
|
||||
{
|
||||
|
|
|
@ -207,33 +207,39 @@
|
|||
/****************************** Public constants *****************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.155.17 (2017-03-12)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 16.155.18 (2017-03-13)"
|
||||
#define CSS_FILE "swad16.147.css"
|
||||
#define JS_FILE "swad16.144.js"
|
||||
|
||||
// Number of lines (includes comments but not blank lines) has been got with the following command:
|
||||
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
|
||||
/*
|
||||
Version 16.155.17:Mar 11, 2017 Adjusting size of database fields. (216755 lines)
|
||||
Version 16.155.18:Mar 13, 2017 Adjusting size of database fields. (216761 lines)
|
||||
3 changes necessary in database:
|
||||
DROP INDEX Info ON mail_domains;
|
||||
ALTER TABLE mail_domains CHANGE COLUMN Domain Domain VARCHAR(255) NOT NULL;
|
||||
ALTER TABLE mail_domains CHANGE COLUMN Info Info VARCHAR(2047) NOT NULL;
|
||||
|
||||
Version 16.155.17:Mar 12, 2017 Adjusting size of database fields. (216755 lines)
|
||||
2 changes necessary in database:
|
||||
ALTER TABLE log_search CHANGE COLUMN SearchStr SearchStr VARCHAR(2047) NOT NULL;
|
||||
ALTER TABLE sessions CHANGE COLUMN SearchString SearchStr VARCHAR(2047) NOT NULL DEFAULT '';
|
||||
|
||||
Version 16.155.16:Mar 11, 2017 Adjusting size of database fields. (216749 lines)
|
||||
Version 16.155.16:Mar 12, 2017 Adjusting size of database fields. (216749 lines)
|
||||
1 change necessary in database:
|
||||
ALTER TABLE log_comments CHANGE COLUMN Comments Comments TEXT NOT NULL;
|
||||
|
||||
Version 16.155.15:Mar 11, 2017 Adjusting size of database fields. (216746 lines)
|
||||
Version 16.155.15:Mar 12, 2017 Adjusting size of database fields. (216746 lines)
|
||||
2 changes necessary in database:
|
||||
ALTER TABLE links CHANGE COLUMN ShortName ShortName VARCHAR(511) NOT NULL;
|
||||
ALTER TABLE links CHANGE COLUMN FullName FullName VARCHAR(2047) NOT NULL;
|
||||
|
||||
Version 16.155.14:Mar 11, 2017 Adjusting size of database fields. (216737 lines)
|
||||
Version 16.155.14:Mar 12, 2017 Adjusting size of database fields. (216737 lines)
|
||||
2 changes necessary in database:
|
||||
ALTER TABLE institutions CHANGE COLUMN ShortName ShortName VARCHAR(511) COLLATE latin1_spanish_ci NOT NULL;
|
||||
ALTER TABLE institutions CHANGE COLUMN FullName FullName VARCHAR(2047) COLLATE latin1_spanish_ci NOT NULL;
|
||||
|
||||
Version 16.155.13:Mar 11, 2017 Adjusting size of database fields. (216734 lines)
|
||||
Version 16.155.13:Mar 12, 2017 Adjusting size of database fields. (216734 lines)
|
||||
1 change necessary in database:
|
||||
ALTER TABLE holidays CHANGE COLUMN Name Name VARCHAR(2047) NOT NULL;
|
||||
|
||||
|
|
|
@ -45,6 +45,9 @@
|
|||
#define Cns_MAX_CHARS_DATE (4 + 1 + 2 + 1 + 2)
|
||||
#define Cns_MAX_BYTES_DATE Cns_MAX_CHARS_DATE
|
||||
|
||||
#define Cns_MAX_CHARS_EMAIL (256 - 1) // 255
|
||||
#define Cns_MAX_BYTES_EMAIL Cns_MAX_CHARS_EMAIL // 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
|
||||
|
||||
|
|
|
@ -1496,22 +1496,21 @@ mysql> DESCRIBE log_ws;
|
|||
/***** Table mail_domains *****/
|
||||
/*
|
||||
mysql> DESCRIBE mail_domains;
|
||||
+--------+--------------+------+-----+---------+----------------+
|
||||
+--------+---------------+------+-----+---------+----------------+
|
||||
| Field | Type | Null | Key | Default | Extra |
|
||||
+--------+--------------+------+-----+---------+----------------+
|
||||
+--------+---------------+------+-----+---------+----------------+
|
||||
| MaiCod | int(11) | NO | PRI | NULL | auto_increment |
|
||||
| Domain | varchar(127) | NO | UNI | NULL | |
|
||||
| Info | varchar(127) | NO | MUL | NULL | |
|
||||
+--------+--------------+------+-----+---------+----------------+
|
||||
3 rows in set (0.00 sec)
|
||||
| Domain | varchar(255) | NO | UNI | NULL | |
|
||||
| Info | varchar(2047) | NO | | NULL | |
|
||||
+--------+---------------+------+-----+---------+----------------+
|
||||
3 rows in set (0,00 sec)
|
||||
*/
|
||||
DB_CreateTable ("CREATE TABLE IF NOT EXISTS mail_domains ("
|
||||
"MaiCod INT NOT NULL AUTO_INCREMENT,"
|
||||
"Domain VARCHAR(127) NOT NULL,"
|
||||
"Info VARCHAR(127) NOT NULL,"
|
||||
"Domain VARCHAR(255) NOT NULL," // Cns_MAX_BYTES_EMAIL
|
||||
"Info VARCHAR(2047) NOT NULL," // Mai_MAX_BYTES_MAIL_INFO
|
||||
"UNIQUE INDEX(MaiCod),"
|
||||
"UNIQUE INDEX(Domain),"
|
||||
"INDEX(Info))");
|
||||
"UNIQUE INDEX(Domain))");
|
||||
|
||||
/***** Table marks_properties *****/
|
||||
/*
|
||||
|
|
|
@ -330,7 +330,7 @@ void Enr_WriteFormToReqAnotherUsrID (Act_Action_t NextAction)
|
|||
"</label>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_nick_email_or_ID,
|
||||
Usr_MAX_CHARS_USR_LOGIN);
|
||||
Cns_MAX_CHARS_EMAIL);
|
||||
|
||||
/***** Send button*****/
|
||||
Lay_PutConfirmButton (Txt_Continue);
|
||||
|
@ -1421,7 +1421,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
|||
|
||||
/* Find next string in text */
|
||||
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,
|
||||
Usr_MAX_BYTES_USR_LOGIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
/* Reset default list of users' codes */
|
||||
ListUsrCods.NumUsrs = 0;
|
||||
|
@ -1544,7 +1544,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
|
|||
|
||||
/* Find next string in text */
|
||||
Str_GetNextStringUntilSeparator (&Ptr,UsrDat.UsrIDNickOrEmail,
|
||||
Usr_MAX_BYTES_USR_LOGIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
/* Reset default list of users' codes */
|
||||
ListUsrCods.NumUsrs = 0;
|
||||
|
|
|
@ -293,7 +293,7 @@ struct Globals
|
|||
Rol_Role_t LoggedRoleBeforeCloseSession;
|
||||
Rol_Role_t MaxRole;
|
||||
bool RoleHasChanged; // Set when I have changed my role
|
||||
char UsrIdLogin[Usr_MAX_BYTES_USR_LOGIN + 1]; // String to store the ID, nickname or email entered in the user's login
|
||||
char UsrIdLogin[Cns_MAX_BYTES_EMAIL + 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[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];
|
||||
char PendingPassword[Cry_LENGTH_ENCRYPTED_STR_SHA512_BASE64 + 1];
|
||||
|
|
83
swad_mail.c
83
swad_mail.c
|
@ -67,8 +67,8 @@ extern struct Globals Gbl;
|
|||
static void Mai_GetParamMaiOrder (void);
|
||||
static void Mai_PutIconToEditMailDomains (void);
|
||||
static void Mai_GetListMailDomainsAllowedForNotif (void);
|
||||
static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]);
|
||||
static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1]);
|
||||
static void Mai_GetMailDomain (const char *Email,char MailDomain[Cns_MAX_BYTES_EMAIL + 1]);
|
||||
static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Cns_MAX_BYTES_EMAIL + 1]);
|
||||
|
||||
static void Mai_ListMailDomainsForEdition (void);
|
||||
static void Mai_PutParamMaiCod (long MaiCod);
|
||||
|
@ -82,9 +82,9 @@ static void Mai_PutHeadMailDomains (void);
|
|||
static void Mai_CreateMailDomain (struct Mail *Mai);
|
||||
|
||||
static void Mai_RemoveEmail (struct UsrData *UsrDat);
|
||||
static void Mai_RemoveEmailFromDB (long UsrCod,const char *Email);
|
||||
static void Mai_RemoveEmailFromDB (long UsrCod,const char Email[Cns_MAX_BYTES_EMAIL + 1]);
|
||||
static void Mai_NewUsrEmail (struct UsrData *UsrDat,bool ItsMe);
|
||||
static void Mai_InsertMailKey (const char *Email,
|
||||
static void Mai_InsertMailKey (const char Email[Cns_MAX_BYTES_EMAIL + 1],
|
||||
const char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1]);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -291,7 +291,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
|
|||
|
||||
/* Get the mail domain (row[1]) */
|
||||
Str_Copy (Mai->Domain,row[1],
|
||||
Mai_MAX_BYTES_MAIL_DOMAIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
/* Get the mail domain info (row[2]) */
|
||||
Str_Copy (Mai->Info,row[2],
|
||||
|
@ -320,7 +320,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
|
|||
|
||||
bool Mai_CheckIfUsrCanReceiveEmailNotif (const struct UsrData *UsrDat)
|
||||
{
|
||||
char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1];
|
||||
char MailDomain[Cns_MAX_BYTES_EMAIL + 1];
|
||||
|
||||
/***** Check #1: is my email address confirmed? *****/
|
||||
if (!UsrDat->EmailConfirmed)
|
||||
|
@ -335,7 +335,7 @@ bool Mai_CheckIfUsrCanReceiveEmailNotif (const struct UsrData *UsrDat)
|
|||
/********************** Get mailbox from email address ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1])
|
||||
static void Mai_GetMailDomain (const char *Email,char MailDomain[Cns_MAX_BYTES_EMAIL + 1])
|
||||
{
|
||||
const char *Ptr;
|
||||
|
||||
|
@ -347,7 +347,7 @@ static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_M
|
|||
Ptr++; // Skip '@'
|
||||
if (strchr (Ptr,(int) '@') == NULL) // No more '@' found
|
||||
Str_Copy (MailDomain,Ptr,
|
||||
Mai_MAX_BYTES_MAIL_DOMAIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -355,9 +355,9 @@ static void Mai_GetMailDomain (const char *Email,char MailDomain[Mai_MAX_BYTES_M
|
|||
/************ Check if a mail domain is allowed for notifications ************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Mai_MAX_BYTES_MAIL_DOMAIN + 1])
|
||||
static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Cns_MAX_BYTES_EMAIL + 1])
|
||||
{
|
||||
char Query[512];
|
||||
char Query[128 + Cns_MAX_BYTES_EMAIL];
|
||||
|
||||
/***** Get number of mail_domains with a name from database *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM mail_domains WHERE Domain='%s'",
|
||||
|
@ -394,7 +394,7 @@ void Mai_WriteWarningEmailNotifications (void)
|
|||
|
||||
void Mai_GetDataOfMailDomainByCod (struct Mail *Mai)
|
||||
{
|
||||
char Query[1024];
|
||||
char Query[128];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned long NumRows;
|
||||
|
@ -417,7 +417,7 @@ void Mai_GetDataOfMailDomainByCod (struct Mail *Mai)
|
|||
|
||||
/* Get the short name of the mail (row[0]) */
|
||||
Str_Copy (Mai->Domain,row[0],
|
||||
Mai_MAX_BYTES_MAIL_DOMAIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
/* Get the full name of the mail (row[1]) */
|
||||
Str_Copy (Mai->Info,row[1],
|
||||
|
@ -490,7 +490,7 @@ static void Mai_ListMailDomainsForEdition (void)
|
|||
fprintf (Gbl.F.Out,"<input type=\"text\" name=\"Domain\""
|
||||
" size=\"15\" maxlength=\"%u\" value=\"%s\""
|
||||
" onchange=\"document.getElementById('%s').submit();\" />",
|
||||
Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain,
|
||||
Cns_MAX_CHARS_EMAIL,Mai->Domain,
|
||||
Gbl.Form.Id);
|
||||
Act_FormEnd ();
|
||||
fprintf (Gbl.F.Out,"</td>");
|
||||
|
@ -544,7 +544,7 @@ long Mai_GetParamMaiCod (void)
|
|||
void Mai_RemoveMailDomain (void)
|
||||
{
|
||||
extern const char *Txt_Email_domain_X_removed;
|
||||
char Query[512];
|
||||
char Query[128];
|
||||
struct Mail Mai;
|
||||
|
||||
/***** Get mail code *****/
|
||||
|
@ -555,7 +555,8 @@ void Mai_RemoveMailDomain (void)
|
|||
Mai_GetDataOfMailDomainByCod (&Mai);
|
||||
|
||||
/***** Remove mail *****/
|
||||
sprintf (Query,"DELETE FROM mail_domains WHERE MaiCod='%ld'",Mai.MaiCod);
|
||||
sprintf (Query,"DELETE FROM mail_domains WHERE MaiCod='%ld'",
|
||||
Mai.MaiCod);
|
||||
DB_QueryDELETE (Query,"can not remove a mail domain");
|
||||
|
||||
/***** Write message to show the change made *****/
|
||||
|
@ -608,7 +609,7 @@ static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName)
|
|||
case Cns_SHRT_NAME:
|
||||
ParamName = "Domain";
|
||||
FieldName = "Domain";
|
||||
MaxBytes = Mai_MAX_BYTES_MAIL_DOMAIN;
|
||||
MaxBytes = Cns_MAX_BYTES_EMAIL;
|
||||
CurrentMaiName = Mai->Domain;
|
||||
break;
|
||||
case Cns_FULL_NAME:
|
||||
|
@ -743,7 +744,7 @@ static void Mai_PutFormToCreateMailDomain (void)
|
|||
" size=\"15\" maxlength=\"%u\" value=\"%s\""
|
||||
" required=\"required\" />"
|
||||
"</td>",
|
||||
Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain);
|
||||
Cns_MAX_CHARS_EMAIL,Mai->Domain);
|
||||
|
||||
/***** Mail domain info *****/
|
||||
fprintf (Gbl.F.Out,"<td class=\"CENTER_MIDDLE\">"
|
||||
|
@ -807,7 +808,7 @@ void Mai_RecFormNewMailDomain (void)
|
|||
|
||||
/***** Get parameters from form *****/
|
||||
/* Get mail short name */
|
||||
Par_GetParToText ("Domain",Mai->Domain,Mai_MAX_BYTES_MAIL_DOMAIN);
|
||||
Par_GetParToText ("Domain",Mai->Domain,Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
/* Get mail full name */
|
||||
Par_GetParToText ("Info",Mai->Info,Mai_MAX_BYTES_MAIL_INFO);
|
||||
|
@ -844,7 +845,9 @@ void Mai_RecFormNewMailDomain (void)
|
|||
static void Mai_CreateMailDomain (struct Mail *Mai)
|
||||
{
|
||||
extern const char *Txt_Created_new_email_domain_X;
|
||||
char Query[1024];
|
||||
char Query[128 +
|
||||
Cns_MAX_BYTES_EMAIL +
|
||||
Mai_MAX_BYTES_MAIL_INFO];
|
||||
|
||||
/***** Create a new mail *****/
|
||||
sprintf (Query,"INSERT INTO mail_domains (Domain,Info) VALUES ('%s','%s')",
|
||||
|
@ -1004,9 +1007,9 @@ bool Mai_CheckIfEmailIsValid (const char *Email)
|
|||
bool ArrobaFound = false;
|
||||
|
||||
/***** An email address must have a number of characters
|
||||
5 <= Length <= Usr_MAX_BYTES_USR_EMAIL *****/
|
||||
5 <= Length <= Cns_MAX_BYTES_EMAIL *****/
|
||||
if (Length < 5 ||
|
||||
Length > Usr_MAX_BYTES_USR_EMAIL)
|
||||
Length > Cns_MAX_BYTES_EMAIL)
|
||||
return false;
|
||||
|
||||
/***** An email address can have digits, letters, '.', '-' and '_';
|
||||
|
@ -1068,7 +1071,7 @@ bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat)
|
|||
/* Get email */
|
||||
row = mysql_fetch_row (mysql_res);
|
||||
Str_Copy (UsrDat->Email,row[0],
|
||||
Usr_MAX_BYTES_USR_EMAIL);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
UsrDat->EmailConfirmed = (row[1][0] == 'Y');
|
||||
Found = true;
|
||||
}
|
||||
|
@ -1084,9 +1087,9 @@ bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat)
|
|||
/*****************************************************************************/
|
||||
// Returns -1L if email not found
|
||||
|
||||
long Mai_GetUsrCodFromEmail (const char *Email)
|
||||
long Mai_GetUsrCodFromEmail (const char Email[Cns_MAX_BYTES_EMAIL + 1])
|
||||
{
|
||||
char Query[1024];
|
||||
char Query[512 + Cns_MAX_BYTES_EMAIL];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
unsigned NumUsrs;
|
||||
|
@ -1325,7 +1328,7 @@ void Mai_ShowFormChangeUsrEmail (const struct UsrData *UsrDat,bool ItsMe)
|
|||
"<input type=\"email\" id=\"NewEmail\" name=\"NewEmail\""
|
||||
" size=\"18\" maxlength=\"%u\" value=\"%s\" />"
|
||||
"</div>",
|
||||
Usr_MAX_CHARS_USR_EMAIL,
|
||||
Cns_MAX_CHARS_EMAIL,
|
||||
Gbl.Usrs.Me.UsrDat.Email);
|
||||
Lay_PutCreateButtonInline (NumEmails ? Txt_Change_email : // User already has an email address
|
||||
Txt_Save); // User has no email address yet
|
||||
|
@ -1376,12 +1379,12 @@ static void Mai_RemoveEmail (struct UsrData *UsrDat)
|
|||
{
|
||||
extern const char *Txt_Email_X_removed;
|
||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||
char Email[Usr_MAX_BYTES_USR_EMAIL + 1];
|
||||
char Email[Cns_MAX_BYTES_EMAIL + 1];
|
||||
|
||||
if (Usr_ICanEditOtherUsr (UsrDat))
|
||||
{
|
||||
/***** Get new email from form *****/
|
||||
Par_GetParToText ("Email",Email,Usr_MAX_BYTES_USR_EMAIL);
|
||||
Par_GetParToText ("Email",Email,Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
/***** Remove one of user's old email addresses *****/
|
||||
Mai_RemoveEmailFromDB (UsrDat->UsrCod,Email);
|
||||
|
@ -1401,9 +1404,9 @@ static void Mai_RemoveEmail (struct UsrData *UsrDat)
|
|||
/*************** Remove an old email address from database *******************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_RemoveEmailFromDB (long UsrCod,const char *Email)
|
||||
static void Mai_RemoveEmailFromDB (long UsrCod,const char Email[Cns_MAX_BYTES_EMAIL + 1])
|
||||
{
|
||||
char Query[1024];
|
||||
char Query[256 + Cns_MAX_BYTES_EMAIL];
|
||||
|
||||
/***** Remove an old email address *****/
|
||||
sprintf (Query,"DELETE FROM usr_emails"
|
||||
|
@ -1458,12 +1461,12 @@ static void Mai_NewUsrEmail (struct UsrData *UsrDat,bool ItsMe)
|
|||
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;
|
||||
extern const char *Txt_User_not_found_or_you_do_not_have_permission_;
|
||||
char NewEmail[Usr_MAX_BYTES_USR_EMAIL + 1];
|
||||
char NewEmail[Cns_MAX_BYTES_EMAIL + 1];
|
||||
|
||||
if (Usr_ICanEditOtherUsr (UsrDat))
|
||||
{
|
||||
/***** Get new email from form *****/
|
||||
Par_GetParToText ("NewEmail",NewEmail,Usr_MAX_BYTES_USR_EMAIL);
|
||||
Par_GetParToText ("NewEmail",NewEmail,Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
if (Mai_CheckIfEmailIsValid (NewEmail)) // New email is valid
|
||||
{
|
||||
|
@ -1517,9 +1520,9 @@ static void Mai_NewUsrEmail (struct UsrData *UsrDat,bool ItsMe)
|
|||
// Return true if email is successfully updated
|
||||
// Return false if email can not be updated beacuse it is registered by another user
|
||||
|
||||
bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char *NewEmail)
|
||||
bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char NewEmail[Cns_MAX_BYTES_EMAIL + 1])
|
||||
{
|
||||
char Query[1024];
|
||||
char Query[256 + Cns_MAX_BYTES_EMAIL];
|
||||
|
||||
/***** Check if the new email matches any of the confirmed emails of other users *****/
|
||||
sprintf (Query,"SELECT COUNT(*) FROM usr_emails"
|
||||
|
@ -1664,10 +1667,12 @@ void Mai_ShowMsgConfirmEmailHasBeenSent (void)
|
|||
/************************* Insert mail hey in database ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
static void Mai_InsertMailKey (const char *Email,
|
||||
static void Mai_InsertMailKey (const char Email[Cns_MAX_BYTES_EMAIL + 1],
|
||||
const char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1])
|
||||
{
|
||||
char Query[512 + Mai_LENGTH_EMAIL_CONFIRM_KEY];
|
||||
char Query[256 +
|
||||
Cns_MAX_BYTES_EMAIL +
|
||||
Mai_LENGTH_EMAIL_CONFIRM_KEY];
|
||||
|
||||
/***** Remove expired pending emails from database *****/
|
||||
sprintf (Query,"DELETE FROM pending_emails"
|
||||
|
@ -1694,12 +1699,14 @@ void Mai_ConfirmEmail (void)
|
|||
extern const char *Txt_The_email_X_has_been_confirmed;
|
||||
extern const char *Txt_The_email_address_has_not_been_confirmed;
|
||||
extern const char *Txt_Failed_email_confirmation_key;
|
||||
char Query[1024];
|
||||
char Query[256 +
|
||||
Cns_MAX_BYTES_EMAIL +
|
||||
Mai_LENGTH_EMAIL_CONFIRM_KEY];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
char MailKey[Mai_LENGTH_EMAIL_CONFIRM_KEY + 1];
|
||||
long UsrCod;
|
||||
char Email[Usr_MAX_BYTES_USR_EMAIL + 1];
|
||||
char Email[Cns_MAX_BYTES_EMAIL + 1];
|
||||
bool KeyIsCorrect = false;
|
||||
bool Confirmed;
|
||||
|
||||
|
@ -1718,7 +1725,7 @@ void Mai_ConfirmEmail (void)
|
|||
|
||||
/* Get user's email */
|
||||
Str_Copy (Email,row[1],
|
||||
Usr_MAX_BYTES_USR_EMAIL);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
KeyIsCorrect = true;
|
||||
}
|
||||
|
|
|
@ -33,9 +33,6 @@
|
|||
/************************** Public types and constants ***********************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define Mai_MAX_CHARS_MAIL_DOMAIN (128 - 1) // 127
|
||||
#define Mai_MAX_BYTES_MAIL_DOMAIN ((Mai_MAX_CHARS_MAIL_DOMAIN + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
||||
|
||||
#define Mai_MAX_CHARS_MAIL_INFO (128 - 1) // 127
|
||||
#define Mai_MAX_BYTES_MAIL_INFO ((Mai_MAX_CHARS_MAIL_INFO + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
||||
|
||||
|
@ -51,7 +48,7 @@ typedef enum
|
|||
struct Mail
|
||||
{
|
||||
long MaiCod;
|
||||
char Domain[Mai_MAX_BYTES_MAIL_DOMAIN + 1];
|
||||
char Domain[Cns_MAX_BYTES_EMAIL + 1];
|
||||
char Info[Mai_MAX_BYTES_MAIL_INFO + 1];
|
||||
unsigned NumUsrs;
|
||||
};
|
||||
|
@ -78,7 +75,7 @@ void Mai_ListEmails (void); // Creates an email message to students
|
|||
|
||||
bool Mai_CheckIfEmailIsValid (const char *Email);
|
||||
bool Mai_GetEmailFromUsrCod (struct UsrData *UsrDat);
|
||||
long Mai_GetUsrCodFromEmail (const char *Email);
|
||||
long Mai_GetUsrCodFromEmail (const char Email[Cns_MAX_BYTES_EMAIL + 1]);
|
||||
|
||||
void Mai_PutLinkToChangeOtherUsrEmails (void);
|
||||
void Mai_ShowFormOthEmail (void);
|
||||
|
@ -87,7 +84,7 @@ void Mai_RemoveMyUsrEmail (void);
|
|||
void Mai_RemoveOtherUsrEmail (void);
|
||||
void May_NewMyUsrEmail (void);
|
||||
void Mai_NewOtherUsrEmail (void);
|
||||
bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char *NewEmail);
|
||||
bool Mai_UpdateEmailInDB (const struct UsrData *UsrDat,const char NewEmail[Cns_MAX_BYTES_EMAIL + 1]);
|
||||
|
||||
void Mai_PutButtonToCheckEmailAddress (void);
|
||||
bool Mai_SendMailMsgToConfirmEmail (void);
|
||||
|
|
|
@ -261,7 +261,7 @@ void Pwd_ShowFormSendNewPwd (void)
|
|||
" size=\"8\" maxlength=\"%u\" value=\"%s\" />"
|
||||
"</label>",
|
||||
The_ClassForm[Gbl.Prefs.Theme],Txt_nick_email_or_ID,
|
||||
Usr_MAX_CHARS_USR_LOGIN,Gbl.Usrs.Me.UsrIdLogin);
|
||||
Cns_MAX_CHARS_EMAIL,Gbl.Usrs.Me.UsrIdLogin);
|
||||
|
||||
/***** Send button and end frame *****/
|
||||
Lay_EndRoundFrameWithButton (Lay_CONFIRM_BUTTON,Txt_Get_a_new_password);
|
||||
|
|
10
swad_user.c
10
swad_user.c
|
@ -2054,7 +2054,7 @@ void Usr_WriteFormLogin (Act_Action_t NextAction,void (*FuncParams) ())
|
|||
Gbl.Prefs.IconsURL,
|
||||
Txt_User[Usr_SEX_UNKNOWN],
|
||||
Txt_User[Usr_SEX_UNKNOWN],
|
||||
Usr_MAX_CHARS_USR_LOGIN,
|
||||
Cns_MAX_CHARS_EMAIL,
|
||||
Txt_nick_email_or_ID,
|
||||
Gbl.Usrs.Me.UsrIdLogin);
|
||||
|
||||
|
@ -2299,7 +2299,7 @@ void Usr_PutFormLogOut (void)
|
|||
|
||||
void Usr_GetParamUsrIdLogin (void)
|
||||
{
|
||||
Par_GetParToText ("UsrId",Gbl.Usrs.Me.UsrIdLogin,Usr_MAX_BYTES_USR_LOGIN);
|
||||
Par_GetParToText ("UsrId",Gbl.Usrs.Me.UsrIdLogin,Cns_MAX_BYTES_EMAIL);
|
||||
// Users' IDs are always stored internally without leading zeros
|
||||
Str_RemoveLeadingZeros (Gbl.Usrs.Me.UsrIdLogin);
|
||||
}
|
||||
|
@ -2313,7 +2313,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,
|
||||
Usr_MAX_BYTES_USR_LOGIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
|
||||
// If it's a user's ID (if does not contain '@')
|
||||
if (strchr (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail,(int) '@') != NULL) // '@' not found
|
||||
|
@ -3589,7 +3589,7 @@ static void Usr_WriteMainUsrDataExceptUsrID (struct UsrData *UsrDat,
|
|||
static void Usr_WriteEmail (struct UsrData *UsrDat,const char *BgColor)
|
||||
{
|
||||
bool ShowEmail;
|
||||
char MailLink[7 + Usr_MAX_BYTES_USR_EMAIL + 1]; // mailto:mail_address
|
||||
char MailLink[7 + Cns_MAX_BYTES_EMAIL + 1]; // mailto:mail_address
|
||||
|
||||
if (UsrDat->Email[0])
|
||||
{
|
||||
|
@ -5206,7 +5206,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs)
|
|||
size_t LengthSelectedUsrsCods;
|
||||
size_t LengthUsrCod;
|
||||
const char *Ptr;
|
||||
char UsrIDNickOrEmail[1024 + 1];
|
||||
char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1];
|
||||
struct UsrData UsrDat;
|
||||
struct ListUsrCods ListUsrCods;
|
||||
bool Error = false;
|
||||
|
|
10
swad_user.h
10
swad_user.h
|
@ -62,12 +62,6 @@
|
|||
// Surname1 +' '+ Surname2 + ','+' ' + FirstName
|
||||
// Surname1 +' '+ Surname2 + '<br />' + FirstName
|
||||
|
||||
#define Usr_MAX_CHARS_USR_EMAIL (128 - 1) // 127
|
||||
#define Usr_MAX_BYTES_USR_EMAIL Usr_MAX_CHARS_USR_EMAIL // 127
|
||||
|
||||
#define Usr_MAX_CHARS_USR_LOGIN Usr_MAX_CHARS_USR_EMAIL // 127, maximum number of chars of @nick, email or ID
|
||||
#define Usr_MAX_BYTES_USR_LOGIN ((Usr_MAX_CHARS_USR_LOGIN + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
|
||||
|
||||
#define Usr_BIRTHDAY_STR_DB_LENGTH (4 + 1 + 2 + 1 + 2) // "'%04u-%02u-%02u'"
|
||||
|
||||
#define Usr_MAX_CHARS_ADDRESS (128 - 1) // 127
|
||||
|
@ -124,7 +118,7 @@ struct UsrData
|
|||
{
|
||||
long UsrCod;
|
||||
char EncryptedUsrCod [Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1];
|
||||
char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1]; // String to store the ID, nickname or email
|
||||
char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1]; // String to store the ID, nickname or email
|
||||
struct
|
||||
{
|
||||
struct ListIDs *List;
|
||||
|
@ -142,7 +136,7 @@ struct UsrData
|
|||
char FirstName [Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1];
|
||||
char FullName [Usr_MAX_BYTES_FULL_NAME + 1];
|
||||
Usr_Sex_t Sex;
|
||||
char Email [Usr_MAX_BYTES_USR_EMAIL + 1];
|
||||
char Email [Cns_MAX_BYTES_EMAIL + 1];
|
||||
bool EmailConfirmed;
|
||||
char Photo [Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]; // Name of public link to photo
|
||||
Pri_Visibility_t PhotoVisibility; // Who can see user's photo
|
||||
|
|
|
@ -695,7 +695,7 @@ int swad__createAccount (struct soap *soap,
|
|||
{
|
||||
/* Email updated sucessfully */
|
||||
Str_Copy (Gbl.Usrs.Me.UsrDat.Email,userEmail,
|
||||
Usr_MAX_BYTES_USR_EMAIL);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
Gbl.Usrs.Me.UsrDat.EmailConfirmed = false;
|
||||
}
|
||||
|
||||
|
@ -767,7 +767,7 @@ int swad__loginByUserPasswordKey (struct soap *soap,
|
|||
char *userID,char *userPassword,char *appKey, // input
|
||||
struct swad__loginByUserPasswordKeyOutput *loginByUserPasswordKeyOut) // output
|
||||
{
|
||||
char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1];
|
||||
char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1];
|
||||
int ReturnCode;
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
|
@ -808,7 +808,7 @@ int swad__loginByUserPasswordKey (struct soap *soap,
|
|||
|
||||
/***** Check if user's email, @nickname or ID are valid *****/
|
||||
Str_Copy (UsrIDNickOrEmail,userID,
|
||||
Usr_MAX_BYTES_USR_LOGIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
|
||||
{
|
||||
Str_RemoveLeadingArrobas (UsrIDNickOrEmail);
|
||||
|
@ -1078,7 +1078,7 @@ int swad__getNewPassword (struct soap *soap,
|
|||
struct swad__getNewPasswordOutput *getNewPasswordOut) // output
|
||||
{
|
||||
int ReturnCode;
|
||||
char UsrIDNickOrEmail[Usr_MAX_BYTES_USR_LOGIN + 1];
|
||||
char UsrIDNickOrEmail[Cns_MAX_BYTES_EMAIL + 1];
|
||||
char Query[512];
|
||||
MYSQL_RES *mysql_res;
|
||||
MYSQL_ROW row;
|
||||
|
@ -1098,7 +1098,7 @@ int swad__getNewPassword (struct soap *soap,
|
|||
|
||||
/***** Check if user's email, @nickname or ID are valid *****/
|
||||
Str_Copy (UsrIDNickOrEmail,userID,
|
||||
Usr_MAX_BYTES_USR_LOGIN);
|
||||
Cns_MAX_BYTES_EMAIL);
|
||||
if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
|
||||
{
|
||||
Str_RemoveLeadingArrobas (UsrIDNickOrEmail);
|
||||
|
|
Loading…
Reference in New Issue