diff --git a/sql/swad.sql b/sql/swad.sql index 52abd9724..2bd5d2704 100644 --- a/sql/swad.sql +++ b/sql/swad.sql @@ -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 -- diff --git a/swad_account.c b/swad_account.c index a542ba0ab..ea07ef79d 100644 --- a/swad_account.c +++ b/swad_account.c @@ -375,7 +375,7 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char *NewNicknameWith "", 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 { diff --git a/swad_changelog.h b/swad_changelog.h index 417960bf8..57c86ac72 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -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; diff --git a/swad_constant.h b/swad_constant.h index e8c7fd036..a9ab8da0d 100644 --- a/swad_constant.h +++ b/swad_constant.h @@ -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 diff --git a/swad_database.c b/swad_database.c index 4bc4ee4ee..0a18356c6 100644 --- a/swad_database.c +++ b/swad_database.c @@ -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 *****/ /* diff --git a/swad_enrollment.c b/swad_enrollment.c index 38bba7b15..7598adbc7 100644 --- a/swad_enrollment.c +++ b/swad_enrollment.c @@ -330,7 +330,7 @@ void Enr_WriteFormToReqAnotherUsrID (Act_Action_t NextAction) "", 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; diff --git a/swad_global.h b/swad_global.h index 9773186f1..f2cb8d909 100644 --- a/swad_global.h +++ b/swad_global.h @@ -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]; diff --git a/swad_mail.c b/swad_mail.c index 5a09c08f6..c4db083c7 100644 --- a/swad_mail.c +++ b/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,"", - Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain, + Cns_MAX_CHARS_EMAIL,Mai->Domain, Gbl.Form.Id); Act_FormEnd (); fprintf (Gbl.F.Out,""); @@ -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\" />" "", - Mai_MAX_CHARS_MAIL_DOMAIN,Mai->Domain); + Cns_MAX_CHARS_EMAIL,Mai->Domain); /***** Mail domain info *****/ fprintf (Gbl.F.Out,"