Version 16.155.17

This commit is contained in:
Antonio Cañas Vargas 2017-03-12 21:15:32 +01:00
parent 97cd3b6643
commit 3cd89420a3
7 changed files with 106 additions and 99 deletions

View File

@ -682,7 +682,7 @@ CREATE TABLE IF NOT EXISTS log_recent (
-- --
CREATE TABLE IF NOT EXISTS log_search ( CREATE TABLE IF NOT EXISTS log_search (
LogCod INT NOT NULL, LogCod INT NOT NULL,
SearchStr VARCHAR(255) NOT NULL, SearchStr VARCHAR(2047) NOT NULL,
UNIQUE INDEX(LogCod)); UNIQUE INDEX(LogCod));
-- --
-- Table log_ws: stores the log of calls to web service from plugins -- Table log_ws: stores the log of calls to web service from plugins

View File

@ -207,14 +207,19 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.155.16 (2017-03-12)" #define Log_PLATFORM_VERSION "SWAD 16.155.17 (2017-03-12)"
#define CSS_FILE "swad16.147.css" #define CSS_FILE "swad16.147.css"
#define JS_FILE "swad16.144.js" #define JS_FILE "swad16.144.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // 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 // 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.16:Mar 11, 2017 Adjusting size of database fields. (216746 lines) Version 16.155.17:Mar 11, 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)
1 change necessary in database: 1 change necessary in database:
ALTER TABLE log_comments CHANGE COLUMN Comments Comments TEXT NOT NULL; ALTER TABLE log_comments CHANGE COLUMN Comments Comments TEXT NOT NULL;

View File

@ -1349,13 +1349,13 @@ mysql> DESCRIBE log_banners;
/***** Table log_comments *****/ /***** Table log_comments *****/
/* /*
mysql> DESCRIBE log_comments; mysql> DESCRIBE log_comments;
+----------+--------------+------+-----+---------+-------+ +----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+ +----------+---------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | | | LogCod | int(11) | NO | PRI | NULL | |
| Comments | varchar(255) | NO | | NULL | | | Comments | text | NO | | NULL | |
+----------+--------------+------+-----+---------+-------+ +----------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec) 2 rows in set (0,00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_comments (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_comments ("
"LogCod INT NOT NULL," "LogCod INT NOT NULL,"
@ -1386,28 +1386,28 @@ mysql> DESCRIBE log_full;
*/ */
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables. // TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS log ("
"LogCod INT NOT NULL AUTO_INCREMENT," "LogCod INT NOT NULL AUTO_INCREMENT,"
"ActCod INT NOT NULL DEFAULT -1," "ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1," "CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1," "InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1," "CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1," "DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1," "CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1," "UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL," "Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL," "ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL," "TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL," "TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL," "IP CHAR(15) NOT NULL," // Cns_MAX_CHARS_IP
"UNIQUE INDEX(LogCod)," "UNIQUE INDEX(LogCod),"
"INDEX(ActCod)," "INDEX(ActCod),"
"INDEX(CtyCod)," "INDEX(CtyCod),"
"INDEX(InsCod)," "INDEX(InsCod),"
"INDEX(CtrCod)," "INDEX(CtrCod),"
"INDEX(DegCod)," "INDEX(DegCod),"
"INDEX(CrsCod)," "INDEX(CrsCod),"
"INDEX(UsrCod)," "INDEX(UsrCod),"
"INDEX(ClickTime,Role))"); "INDEX(ClickTime,Role))");
/***** Table log_recent *****/ /***** Table log_recent *****/
/* /*
@ -1433,44 +1433,44 @@ mysql> DESCRIBE log_recent;
*/ */
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables. // TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_recent (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_recent ("
"LogCod INT NOT NULL," "LogCod INT NOT NULL,"
"ActCod INT NOT NULL DEFAULT -1," "ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1," "CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1," "InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1," "CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1," "DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1," "CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1," "UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL," "Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL," "ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL," "TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL," "TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL," "IP CHAR(15) NOT NULL," // Cns_MAX_CHARS_IP
"UNIQUE INDEX(LogCod)," "UNIQUE INDEX(LogCod),"
"INDEX(ActCod)," "INDEX(ActCod),"
"INDEX(CtyCod)," "INDEX(CtyCod),"
"INDEX(InsCod)," "INDEX(InsCod),"
"INDEX(CtrCod)," "INDEX(CtrCod),"
"INDEX(DegCod)," "INDEX(DegCod),"
"INDEX(CrsCod)," "INDEX(CrsCod),"
"INDEX(UsrCod)," "INDEX(UsrCod),"
"INDEX(ClickTime,Role))"); "INDEX(ClickTime,Role))");
/***** Table log_search *****/ /***** Table log_search *****/
/* /*
mysql> DESCRIBE log_search; mysql> DESCRIBE log_search;
+-----------+--------------+------+-----+---------+-------+ +-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+ +-----------+---------------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | | | LogCod | int(11) | NO | PRI | NULL | |
| SearchStr | varchar(255) | NO | | NULL | | | SearchStr | varchar(2047) | NO | | NULL | |
+-----------+--------------+------+-----+---------+-------+ +-----------+---------------+------+-----+---------+-------+
2 rows in set (0,00 sec) 2 rows in set (0,00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_search (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_search ("
"LogCod INT NOT NULL," "LogCod INT NOT NULL,"
"SearchStr VARCHAR(255) NOT NULL," "SearchStr VARCHAR(2047) NOT NULL," // Sch_MAX_BYTES_STRING_TO_FIND
"UNIQUE INDEX(LogCod))"); "UNIQUE INDEX(LogCod))");
/***** Table log_ws *****/ /***** Table log_ws *****/
/* /*
@ -1877,29 +1877,29 @@ mysql> DESCRIBE plugins;
/***** Table sessions *****/ /***** Table sessions *****/
/* /*
mysql> DESCRIBE sessions; mysql> DESCRIBE sessions;
+----------------+--------------+------+-----+---------+-------+ +----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+ +----------------+---------------+------+-----+---------+-------+
| SessionId | char(43) | NO | PRI | NULL | | | SessionId | char(43) | NO | PRI | NULL | |
| UsrCod | int(11) | NO | MUL | NULL | | | UsrCod | int(11) | NO | MUL | NULL | |
| Password | char(86) | NO | | NULL | | | Password | char(86) | NO | | NULL | |
| Role | tinyint(4) | NO | | 0 | | | Role | tinyint(4) | NO | | 0 | |
| CtyCod | int(11) | NO | | -1 | | | CtyCod | int(11) | NO | | -1 | |
| InsCod | int(11) | NO | | -1 | | | InsCod | int(11) | NO | | -1 | |
| CtrCod | int(11) | NO | | -1 | | | CtrCod | int(11) | NO | | -1 | |
| DegCod | int(11) | NO | | -1 | | | DegCod | int(11) | NO | | -1 | |
| CrsCod | int(11) | NO | | -1 | | | CrsCod | int(11) | NO | | -1 | |
| LastTime | datetime | NO | | NULL | | | LastTime | datetime | NO | | NULL | |
| LastRefresh | datetime | NO | | NULL | | | LastRefresh | datetime | NO | | NULL | |
| FirstPubCod | bigint(20) | NO | | 0 | | | FirstPubCod | bigint(20) | NO | | 0 | |
| LastPubCod | bigint(20) | NO | | 0 | | | LastPubCod | bigint(20) | NO | | 0 | |
| LastPageMsgRcv | int(11) | NO | | 1 | | | LastPageMsgRcv | int(11) | NO | | 1 | |
| LastPageMsgSnt | int(11) | NO | | 1 | | | LastPageMsgSnt | int(11) | NO | | 1 | |
| WhatToSearch | tinyint(4) | NO | | 0 | | | WhatToSearch | tinyint(4) | NO | | 0 | |
| SearchString | varchar(255) | NO | | | | | SearchStr | varchar(2047) | NO | | | |
| SideCols | tinyint(4) | NO | | 3 | | | SideCols | tinyint(4) | NO | | 3 | |
+----------------+--------------+------+-----+---------+-------+ +----------------+---------------+------+-----+---------+-------+
18 rows in set (1,06 sec) 18 rows in set (0,00 sec)
*/ */
DB_CreateTable ("CREATE TABLE IF NOT EXISTS sessions (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS sessions ("
"SessionId CHAR(43) NOT NULL," "SessionId CHAR(43) NOT NULL,"
@ -1918,7 +1918,7 @@ mysql> DESCRIBE sessions;
"LastPageMsgRcv INT NOT NULL DEFAULT 1," "LastPageMsgRcv INT NOT NULL DEFAULT 1,"
"LastPageMsgSnt INT NOT NULL DEFAULT 1," "LastPageMsgSnt INT NOT NULL DEFAULT 1,"
"WhatToSearch TINYINT NOT NULL DEFAULT 0," "WhatToSearch TINYINT NOT NULL DEFAULT 0,"
"SearchString VARCHAR(255) NOT NULL DEFAULT ''," "SearchStr VARCHAR(2047) NOT NULL DEFAULT ''," // Sch_MAX_BYTES_STRING_TO_FIND
"SideCols TINYINT NOT NULL DEFAULT 3," "SideCols TINYINT NOT NULL DEFAULT 3,"
"UNIQUE INDEX(SessionId)," "UNIQUE INDEX(SessionId),"
"INDEX(UsrCod))"); "INDEX(UsrCod))");

View File

@ -64,7 +64,7 @@ extern struct Globals Gbl;
static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Sco_Scope_t DefaultScope); static void Sch_PutFormToSearchWithWhatToSearchAndScope (Act_Action_t Action,Sco_Scope_t DefaultScope);
static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch); static bool Sch_CheckIfIHavePermissionToSearch (Sch_WhatToSearch_t WhatToSearch);
static void Sch_GetParamSearch (char *SearchStr,size_t MaxLength); static void Sch_GetParamSearch (void);
static void Sch_SearchInDB (void); static void Sch_SearchInDB (void);
static unsigned Sch_SearchCountriesInDB (const char *RangeQuery); static unsigned Sch_SearchCountriesInDB (const char *RangeQuery);
static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery); static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery);
@ -405,10 +405,10 @@ void Sch_GetParamWhatToSearch (void)
/*********************** Get string from search form *************************/ /*********************** Get string from search form *************************/
/*****************************************************************************/ /*****************************************************************************/
static void Sch_GetParamSearch (char *SearchStr,size_t MaxLength) static void Sch_GetParamSearch (void)
{ {
/***** Get string to search *****/ /***** Get string to search *****/
Par_GetParToText ("Search",SearchStr,MaxLength); Par_GetParToText ("Search",Gbl.Search.Str,Sch_MAX_BYTES_STRING_TO_FIND);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -421,7 +421,7 @@ void Sch_GetParamsSearch (void)
Sch_GetParamWhatToSearch (); Sch_GetParamWhatToSearch ();
/***** Get search string *****/ /***** Get search string *****/
Sch_GetParamSearch (Gbl.Search.Str,sizeof (Gbl.Search.Str) - 1); Sch_GetParamSearch ();
/***** Save my search in order to show it in current session *****/ /***** Save my search in order to show it in current session *****/
if (Gbl.Usrs.Me.Logged) if (Gbl.Usrs.Me.Logged)
@ -1297,7 +1297,7 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
LengthTotal += LengthWord; LengthTotal += LengthWord;
if (LengthWord > MaxLengthWord) if (LengthWord > MaxLengthWord)
MaxLengthWord = LengthWord; MaxLengthWord = LengthWord;
if (strlen (SearchQuery) + LengthWord + 512 > if (strlen (SearchQuery) + 128 + LengthWord >
Sch_MAX_BYTES_SEARCH_QUERY) // Prevent string overflow Sch_MAX_BYTES_SEARCH_QUERY) // Prevent string overflow
break; break;
if (NumWords) if (NumWords)
@ -1341,7 +1341,9 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
static void Sch_SaveLastSearchIntoSession (void) static void Sch_SaveLastSearchIntoSession (void)
{ {
char Query[512]; char Query[256 +
Sch_MAX_BYTES_STRING_TO_FIND +
Ses_LENGTH_SESSION_ID];
if (Gbl.Usrs.Me.Logged) if (Gbl.Usrs.Me.Logged)
{ {
@ -1349,7 +1351,7 @@ static void Sch_SaveLastSearchIntoSession (void)
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT; Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
/***** Save last search in session *****/ /***** Save last search in session *****/
sprintf (Query,"UPDATE sessions SET WhatToSearch='%u',SearchString='%s'" sprintf (Query,"UPDATE sessions SET WhatToSearch='%u',SearchStr='%s'"
" WHERE SessionId='%s'", " WHERE SessionId='%s'",
(unsigned) Gbl.Search.WhatToSearch, (unsigned) Gbl.Search.WhatToSearch,
Gbl.Search.Str, Gbl.Search.Str,
@ -1359,8 +1361,7 @@ static void Sch_SaveLastSearchIntoSession (void)
/***** Update my last type of search *****/ /***** Update my last type of search *****/
// WhatToSearch is stored in usr_last for next time I log in // WhatToSearch is stored in usr_last for next time I log in
// In other existing sessions distinct to this, WhatToSearch will remain unchanged // In other existing sessions distinct to this, WhatToSearch will remain unchanged
sprintf (Query,"UPDATE usr_last SET WhatToSearch='%u'" sprintf (Query,"UPDATE usr_last SET WhatToSearch='%u' WHERE UsrCod='%ld'",
" WHERE UsrCod='%ld'",
(unsigned) Gbl.Search.WhatToSearch, (unsigned) Gbl.Search.WhatToSearch,
Gbl.Usrs.Me.UsrDat.UsrCod); Gbl.Usrs.Me.UsrDat.UsrCod);
DB_QueryUPDATE (Query,"can not update type of search in user's last data"); DB_QueryUPDATE (Query,"can not update type of search in user's last data");

View File

@ -39,7 +39,7 @@
#define Sch_MAX_CHARS_SEARCH_WORD (128 - 1) // 127 #define Sch_MAX_CHARS_SEARCH_WORD (128 - 1) // 127
#define Sch_MAX_BYTES_SEARCH_WORD ((Sch_MAX_CHARS_SEARCH_WORD - 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047 #define Sch_MAX_BYTES_SEARCH_WORD ((Sch_MAX_CHARS_SEARCH_WORD - 1) * Str_MAX_BYTES_PER_CHAR - 1) // 2047
#define Sch_MAX_BYTES_SEARCH_QUERY (Sch_MAX_WORDS_IN_SEARCH * Sch_MAX_BYTES_SEARCH_WORD) #define Sch_MAX_BYTES_SEARCH_QUERY (Sch_MAX_WORDS_IN_SEARCH * (128 + Sch_MAX_BYTES_SEARCH_WORD))
/*****************************************************************************/ /*****************************************************************************/
/******************************** Public types *******************************/ /******************************** Public types *******************************/

View File

@ -274,7 +274,7 @@ bool Ses_GetSessionData (void)
/***** Query data of session from database *****/ /***** Query data of session from database *****/
sprintf (Query,"SELECT UsrCod,Password,Role," sprintf (Query,"SELECT UsrCod,Password,Role,"
"CtyCod,InsCod,CtrCod,DegCod,CrsCod," "CtyCod,InsCod,CtrCod,DegCod,CrsCod,"
"WhatToSearch,SearchString" "WhatToSearch,SearchStr"
" FROM sessions WHERE SessionId='%s'", " FROM sessions WHERE SessionId='%s'",
Gbl.Session.Id); Gbl.Session.Id);

View File

@ -270,7 +270,8 @@ void Sta_GetRemoteAddr (void)
void Sta_LogAccess (const char *Comments) void Sta_LogAccess (const char *Comments)
{ {
extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS]; extern struct Act_Actions Act_Actions[Act_NUM_ACTIONS];
char Query[Sta_MAX_BYTES_QUERY_LOG + 1]; char Query[Sta_MAX_BYTES_QUERY_LOG +
Sch_MAX_BYTES_STRING_TO_FIND + 1];
long LogCod; long LogCod;
Rol_Role_t RoleToStore = (Gbl.Action.Act == ActLogOut) ? Gbl.Usrs.Me.LoggedRoleBeforeCloseSession : Rol_Role_t RoleToStore = (Gbl.Action.Act == ActLogOut) ? Gbl.Usrs.Me.LoggedRoleBeforeCloseSession :
Gbl.Usrs.Me.LoggedRole; Gbl.Usrs.Me.LoggedRole;