Version 16.155.18

This commit is contained in:
Antonio Cañas Vargas 2017-03-13 02:19:49 +01:00
parent 3cd89420a3
commit cf4188c76c
13 changed files with 106 additions and 101 deletions

View File

@ -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
--

View File

@ -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
{

View File

@ -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;

View File

@ -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

View File

@ -1486,32 +1486,31 @@ mysql> DESCRIBE log_ws;
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_ws ("
"LogCod INT NOT NULL,"
"PlgCod INT NOT NULL,"
"FunCod INT NOT NULL,"
"UNIQUE INDEX(LogCod),"
"INDEX(PlgCod),"
"INDEX(FunCod))");
"LogCod INT NOT NULL,"
"PlgCod INT NOT NULL,"
"FunCod INT NOT NULL,"
"UNIQUE INDEX(LogCod),"
"INDEX(PlgCod),"
"INDEX(FunCod))");
/***** 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)
+--------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+----------------+
| MaiCod | int(11) | NO | PRI | NULL | auto_increment |
| 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,"
"UNIQUE INDEX(MaiCod),"
"UNIQUE INDEX(Domain),"
"INDEX(Info))");
"MaiCod INT NOT NULL AUTO_INCREMENT,"
"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))");
/***** Table marks_properties *****/
/*

View File

@ -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;

View File

@ -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];

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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);