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 (
LogCod INT NOT NULL,
SearchStr VARCHAR(255) NOT NULL,
SearchStr VARCHAR(2047) NOT NULL,
UNIQUE INDEX(LogCod));
--
-- Table log_ws: stores the log of calls to web service from plugins

View File

@ -207,14 +207,19 @@
/****************************** 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 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.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:
ALTER TABLE log_comments CHANGE COLUMN Comments Comments TEXT NOT NULL;

View File

@ -1349,13 +1349,13 @@ mysql> DESCRIBE log_banners;
/***** Table log_comments *****/
/*
mysql> DESCRIBE log_comments;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | |
| Comments | varchar(255) | NO | | NULL | |
+----------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | |
| Comments | text | NO | | NULL | |
+----------+---------+------+-----+---------+-------+
2 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_comments ("
"LogCod INT NOT NULL,"
@ -1386,28 +1386,28 @@ mysql> DESCRIBE log_full;
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log ("
"LogCod INT NOT NULL AUTO_INCREMENT,"
"ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL,"
"UNIQUE INDEX(LogCod),"
"INDEX(ActCod),"
"INDEX(CtyCod),"
"INDEX(InsCod),"
"INDEX(CtrCod),"
"INDEX(DegCod),"
"INDEX(CrsCod),"
"INDEX(UsrCod),"
"INDEX(ClickTime,Role))");
"LogCod INT NOT NULL AUTO_INCREMENT,"
"ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL," // Cns_MAX_CHARS_IP
"UNIQUE INDEX(LogCod),"
"INDEX(ActCod),"
"INDEX(CtyCod),"
"INDEX(InsCod),"
"INDEX(CtrCod),"
"INDEX(DegCod),"
"INDEX(CrsCod),"
"INDEX(UsrCod),"
"INDEX(ClickTime,Role))");
/***** Table log_recent *****/
/*
@ -1433,44 +1433,44 @@ mysql> DESCRIBE log_recent;
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_recent ("
"LogCod INT NOT NULL,"
"ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL,"
"UNIQUE INDEX(LogCod),"
"INDEX(ActCod),"
"INDEX(CtyCod),"
"INDEX(InsCod),"
"INDEX(CtrCod),"
"INDEX(DegCod),"
"INDEX(CrsCod),"
"INDEX(UsrCod),"
"INDEX(ClickTime,Role))");
"LogCod INT NOT NULL,"
"ActCod INT NOT NULL DEFAULT -1,"
"CtyCod INT NOT NULL DEFAULT -1,"
"InsCod INT NOT NULL DEFAULT -1,"
"CtrCod INT NOT NULL DEFAULT -1,"
"DegCod INT NOT NULL DEFAULT -1,"
"CrsCod INT NOT NULL DEFAULT -1,"
"UsrCod INT NOT NULL DEFAULT -1,"
"Role TINYINT NOT NULL,"
"ClickTime DATETIME NOT NULL,"
"TimeToGenerate INT NOT NULL,"
"TimeToSend INT NOT NULL,"
"IP CHAR(15) NOT NULL," // Cns_MAX_CHARS_IP
"UNIQUE INDEX(LogCod),"
"INDEX(ActCod),"
"INDEX(CtyCod),"
"INDEX(InsCod),"
"INDEX(CtrCod),"
"INDEX(DegCod),"
"INDEX(CrsCod),"
"INDEX(UsrCod),"
"INDEX(ClickTime,Role))");
/***** Table log_search *****/
/*
mysql> DESCRIBE log_search;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | |
| SearchStr | varchar(255) | NO | | NULL | |
+-----------+--------------+------+-----+---------+-------+
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | |
| SearchStr | varchar(2047) | NO | | NULL | |
+-----------+---------------+------+-----+---------+-------+
2 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_search ("
"LogCod INT NOT NULL,"
"SearchStr VARCHAR(255) NOT NULL,"
"UNIQUE INDEX(LogCod))");
"LogCod INT NOT NULL,"
"SearchStr VARCHAR(2047) NOT NULL," // Sch_MAX_BYTES_STRING_TO_FIND
"UNIQUE INDEX(LogCod))");
/***** Table log_ws *****/
/*
@ -1877,29 +1877,29 @@ mysql> DESCRIBE plugins;
/***** Table sessions *****/
/*
mysql> DESCRIBE sessions;
+----------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| SessionId | char(43) | NO | PRI | NULL | |
| UsrCod | int(11) | NO | MUL | NULL | |
| Password | char(86) | NO | | NULL | |
| Role | tinyint(4) | NO | | 0 | |
| CtyCod | int(11) | NO | | -1 | |
| InsCod | int(11) | NO | | -1 | |
| CtrCod | int(11) | NO | | -1 | |
| DegCod | int(11) | NO | | -1 | |
| CrsCod | int(11) | NO | | -1 | |
| LastTime | datetime | NO | | NULL | |
| LastRefresh | datetime | NO | | NULL | |
| FirstPubCod | bigint(20) | NO | | 0 | |
| LastPubCod | bigint(20) | NO | | 0 | |
| LastPageMsgRcv | int(11) | NO | | 1 | |
| LastPageMsgSnt | int(11) | NO | | 1 | |
| WhatToSearch | tinyint(4) | NO | | 0 | |
| SearchString | varchar(255) | NO | | | |
| SideCols | tinyint(4) | NO | | 3 | |
+----------------+--------------+------+-----+---------+-------+
18 rows in set (1,06 sec)
+----------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| SessionId | char(43) | NO | PRI | NULL | |
| UsrCod | int(11) | NO | MUL | NULL | |
| Password | char(86) | NO | | NULL | |
| Role | tinyint(4) | NO | | 0 | |
| CtyCod | int(11) | NO | | -1 | |
| InsCod | int(11) | NO | | -1 | |
| CtrCod | int(11) | NO | | -1 | |
| DegCod | int(11) | NO | | -1 | |
| CrsCod | int(11) | NO | | -1 | |
| LastTime | datetime | NO | | NULL | |
| LastRefresh | datetime | NO | | NULL | |
| FirstPubCod | bigint(20) | NO | | 0 | |
| LastPubCod | bigint(20) | NO | | 0 | |
| LastPageMsgRcv | int(11) | NO | | 1 | |
| LastPageMsgSnt | int(11) | NO | | 1 | |
| WhatToSearch | tinyint(4) | NO | | 0 | |
| SearchStr | varchar(2047) | NO | | | |
| SideCols | tinyint(4) | NO | | 3 | |
+----------------+---------------+------+-----+---------+-------+
18 rows in set (0,00 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS sessions ("
"SessionId CHAR(43) NOT NULL,"
@ -1918,7 +1918,7 @@ mysql> DESCRIBE sessions;
"LastPageMsgRcv INT NOT NULL DEFAULT 1,"
"LastPageMsgSnt INT NOT NULL DEFAULT 1,"
"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,"
"UNIQUE INDEX(SessionId),"
"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 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 unsigned Sch_SearchCountriesInDB (const char *RangeQuery);
static unsigned Sch_SearchInstitutionsInDB (const char *RangeQuery);
@ -405,10 +405,10 @@ void Sch_GetParamWhatToSearch (void)
/*********************** Get string from search form *************************/
/*****************************************************************************/
static void Sch_GetParamSearch (char *SearchStr,size_t MaxLength)
static void Sch_GetParamSearch (void)
{
/***** 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 ();
/***** 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 *****/
if (Gbl.Usrs.Me.Logged)
@ -1297,7 +1297,7 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
LengthTotal += LengthWord;
if (LengthWord > MaxLengthWord)
MaxLengthWord = LengthWord;
if (strlen (SearchQuery) + LengthWord + 512 >
if (strlen (SearchQuery) + 128 + LengthWord >
Sch_MAX_BYTES_SEARCH_QUERY) // Prevent string overflow
break;
if (NumWords)
@ -1341,7 +1341,9 @@ bool Sch_BuildSearchQuery (char SearchQuery[Sch_MAX_BYTES_SEARCH_QUERY + 1],
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)
{
@ -1349,7 +1351,7 @@ static void Sch_SaveLastSearchIntoSession (void)
Gbl.Search.WhatToSearch = Sch_WHAT_TO_SEARCH_DEFAULT;
/***** 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'",
(unsigned) Gbl.Search.WhatToSearch,
Gbl.Search.Str,
@ -1359,8 +1361,7 @@ static void Sch_SaveLastSearchIntoSession (void)
/***** Update my last type of search *****/
// WhatToSearch is stored in usr_last for next time I log in
// In other existing sessions distinct to this, WhatToSearch will remain unchanged
sprintf (Query,"UPDATE usr_last SET WhatToSearch='%u'"
" WHERE UsrCod='%ld'",
sprintf (Query,"UPDATE usr_last SET WhatToSearch='%u' WHERE UsrCod='%ld'",
(unsigned) Gbl.Search.WhatToSearch,
Gbl.Usrs.Me.UsrDat.UsrCod);
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_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 *******************************/

View File

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

View File

@ -270,7 +270,8 @@ void Sta_GetRemoteAddr (void)
void Sta_LogAccess (const char *Comments)
{
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;
Rol_Role_t RoleToStore = (Gbl.Action.Act == ActLogOut) ? Gbl.Usrs.Me.LoggedRoleBeforeCloseSession :
Gbl.Usrs.Me.LoggedRole;