Version 20.51.13: Mar 18, 2021 Session parameters database table renamed.

This commit is contained in:
acanas 2021-03-18 20:38:40 +01:00
parent 1de4eaff54
commit a9e47d0759
8 changed files with 77 additions and 75 deletions

View File

@ -816,14 +816,6 @@ CREATE TABLE IF NOT EXISTS mch_times (
ElapsedTime TIME NOT NULL DEFAULT 0, ElapsedTime TIME NOT NULL DEFAULT 0,
UNIQUE INDEX(MchCod,QstInd)); UNIQUE INDEX(MchCod,QstInd));
-- --
-- Table hidden_params: stores some hidden parameters passed from a page to another using database instead of forms
--
CREATE TABLE IF NOT EXISTS hidden_params (
SessionId CHAR(43) NOT NULL,
ParamName VARCHAR(255) NOT NULL,
ParamValue LONGTEXT NOT NULL,
INDEX(SessionId));
--
-- Table holidays: stores the holidays in each institution -- Table holidays: stores the holidays in each institution
-- --
CREATE TABLE IF NOT EXISTS holidays ( CREATE TABLE IF NOT EXISTS holidays (
@ -1284,6 +1276,14 @@ CREATE TABLE IF NOT EXISTS room_check_in (
INDEX(UsrCod,CheckInTime), INDEX(UsrCod,CheckInTime),
INDEX(CheckInTime)); INDEX(CheckInTime));
-- --
-- Table ses_params: stores some hidden parameters passed from a page to another using database instead of forms
--
CREATE TABLE IF NOT EXISTS ses_params (
SessionId CHAR(43) NOT NULL,
ParamName VARCHAR(255) NOT NULL,
ParamValue LONGTEXT NOT NULL,
INDEX(SessionId));
--
-- Table sessions: stores the information of open sessions -- Table sessions: stores the information of open sessions
-- --
CREATE TABLE IF NOT EXISTS sessions ( CREATE TABLE IF NOT EXISTS sessions (

View File

@ -600,13 +600,17 @@ TODO: Salvador Romero Cort
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria. TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
*/ */
#define Log_PLATFORM_VERSION "SWAD 20.51.12 (2021-03-18)" #define Log_PLATFORM_VERSION "SWAD 20.51.13 (2021-03-18)"
#define CSS_FILE "swad20.45.css" #define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.6.2.js" #define JS_FILE "swad20.6.2.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.51.13: Mar 18, 2021 Session parameters database table renamed. (307862 lines)
1 change necessary in database:
RENAME TABLE hidden_params TO ses_params;
Version 20.51.12: Mar 18, 2021 Forum threads database tables renamed. (307859 lines) Version 20.51.12: Mar 18, 2021 Forum threads database tables renamed. (307859 lines)
3 changes necessary in database: 3 changes necessary in database:
RENAME TABLE forum_thr_clip TO for_clipboards; RENAME TABLE forum_thr_clip TO for_clipboards;

View File

@ -1772,24 +1772,6 @@ mysql> DESCRIBE mch_times;
"ElapsedTime TIME NOT NULL DEFAULT 0," "ElapsedTime TIME NOT NULL DEFAULT 0,"
"UNIQUE INDEX(MchCod,QstInd))"); "UNIQUE INDEX(MchCod,QstInd))");
/***** Table hidden_params *****/
/*
mysql> DESCRIBE hidden_params;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| SessionId | char(43) | NO | MUL | NULL | |
| ParamName | varchar(255) | NO | | NULL | |
| ParamValue | longtext | NO | | NULL | |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS hidden_params ("
"SessionId CHAR(43) NOT NULL," // Cns_BYTES_SESSION_ID
"ParamName VARCHAR(255) NOT NULL,"
"ParamValue LONGTEXT NOT NULL,"
"INDEX(SessionId))");
/***** Table holidays *****/ /***** Table holidays *****/
/* /*
mysql> DESCRIBE holidays; mysql> DESCRIBE holidays;
@ -2703,6 +2685,24 @@ mysql> DESCRIBE room_check_in;
"INDEX(UsrCod,CheckInTime)," "INDEX(UsrCod,CheckInTime),"
"INDEX(CheckInTime))"); "INDEX(CheckInTime))");
/***** Table ses_params *****/
/*
mysql> DESCRIBE ses_params;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| SessionId | char(43) | NO | MUL | NULL | |
| ParamName | varchar(255) | NO | | NULL | |
| ParamValue | longtext | NO | | NULL | |
+------------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS ses_params ("
"SessionId CHAR(43) NOT NULL," // Cns_BYTES_SESSION_ID
"ParamName VARCHAR(255) NOT NULL,"
"ParamValue LONGTEXT NOT NULL,"
"INDEX(SessionId))");
/***** Table sessions *****/ /***** Table sessions *****/
/* /*
mysql> DESCRIBE sessions; mysql> DESCRIBE sessions;

View File

@ -136,8 +136,6 @@ void Gbl_InitializeGlobals (void)
Gbl.DB.DatabaseIsOpen = false; Gbl.DB.DatabaseIsOpen = false;
Gbl.DB.LockedTables = false; Gbl.DB.LockedTables = false;
Gbl.HiddenParamsInsertedIntoDB = false;
Gbl.Prefs.Language = Txt_Current_CGI_SWAD_Language; Gbl.Prefs.Language = Txt_Current_CGI_SWAD_Language;
Gbl.Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT; // Default first day of week Gbl.Prefs.FirstDayOfWeek = Cal_FIRST_DAY_OF_WEEK_DEFAULT; // Default first day of week
Gbl.Prefs.DateFormat = Dat_FORMAT_DEFAULT; // Default date format Gbl.Prefs.DateFormat = Dat_FORMAT_DEFAULT; // Default date format
@ -153,6 +151,7 @@ void Gbl_InitializeGlobals (void)
Gbl.Session.IsOpen = false; Gbl.Session.IsOpen = false;
Gbl.Session.HasBeenDisconnected = false; Gbl.Session.HasBeenDisconnected = false;
Gbl.Session.Id[0] = '\0'; Gbl.Session.Id[0] = '\0';
Gbl.Session.ParamsInsertedIntoDB = false;
Gbl.Usrs.Me.UsrIdLogin[0] = '\0'; Gbl.Usrs.Me.UsrIdLogin[0] = '\0';
Gbl.Usrs.Me.LoginPlainPassword[0] = '\0'; Gbl.Usrs.Me.LoginPlainPassword[0] = '\0';
@ -160,7 +159,6 @@ void Gbl_InitializeGlobals (void)
Gbl.Usrs.Me.UsrDat.UsrIDNickOrEmail[0] = '\0'; Gbl.Usrs.Me.UsrDat.UsrIDNickOrEmail[0] = '\0';
Usr_UsrDataConstructor (&Gbl.Usrs.Me.UsrDat); Usr_UsrDataConstructor (&Gbl.Usrs.Me.UsrDat);
Usr_ResetMyLastData (); Usr_ResetMyLastData ();
Gbl.Session.Id[0] = '\0';
Gbl.Usrs.Me.Logged = false; Gbl.Usrs.Me.Logged = false;
Gbl.Usrs.Me.Role.Available = 0; Gbl.Usrs.Me.Role.Available = 0;
Gbl.Usrs.Me.Role.FromSession = Gbl.Usrs.Me.Role.FromSession =
@ -358,7 +356,7 @@ void Gbl_Cleanup (void)
if (!Gbl.Action.UsesAJAX && if (!Gbl.Action.UsesAJAX &&
!Gbl.WebService.IsWebService && !Gbl.WebService.IsWebService &&
Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB) Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB)
Ses_RemoveHiddenParFromThisSession (); Ses_RemoveParamFromThisSession ();
Usr_FreeMyCourses (); Usr_FreeMyCourses ();
Usr_FreeMyDegrees (); Usr_FreeMyDegrees ();
Usr_FreeMyCenters (); Usr_FreeMyCenters ();

View File

@ -132,8 +132,6 @@ struct Globals
bool LockedTables; bool LockedTables;
} DB; } DB;
bool HiddenParamsInsertedIntoDB; // If parameters are inserted in the database in this execution
/* To compute execution time of the program */ /* To compute execution time of the program */
struct timeval tvStart; struct timeval tvStart;
struct timeval tvPageCreated; struct timeval tvPageCreated;
@ -165,6 +163,7 @@ struct Globals
bool HasBeenDisconnected; bool HasBeenDisconnected;
char Id[Cns_BYTES_SESSION_ID + 1]; char Id[Cns_BYTES_SESSION_ID + 1];
long UsrCod; long UsrCod;
bool ParamsInsertedIntoDB; // If parameters are inserted in the database in this session
} Session; } Session;
struct struct

View File

@ -52,7 +52,7 @@ extern struct Globals Gbl;
static void Ses_RemoveSessionFromDB (void); static void Ses_RemoveSessionFromDB (void);
static bool Ses_CheckIfHiddenParIsAlreadyInDB (const char *ParamName); static bool Ses_CheckIfParamIsAlreadyInDB (const char *ParamName);
static void Ses_DeletePublicDirFromCache (const char *FullPathMediaPriv); static void Ses_DeletePublicDirFromCache (const char *FullPathMediaPriv);
@ -131,7 +131,7 @@ void Ses_CloseSession (void)
Con_RemoveOldConnected (); Con_RemoveOldConnected ();
/***** Remove unused data associated to expired sessions *****/ /***** Remove unused data associated to expired sessions *****/
Ses_RemoveHiddenParFromExpiredSessions (); Ses_RemoveParamsFromExpiredSessions ();
Ses_RemovePublicDirsFromExpiredSessions (); Ses_RemovePublicDirsFromExpiredSessions ();
/***** Now, user is not logged in *****/ /***** Now, user is not logged in *****/
@ -332,24 +332,24 @@ bool Ses_GetSessionData (void)
} }
/*****************************************************************************/ /*****************************************************************************/
/******************* Insert hidden parameter in the database *****************/ /******************* Insert session parameter in the database ****************/
/*****************************************************************************/ /*****************************************************************************/
void Ses_InsertHiddenParInDB (const char *ParamName,const char *ParamValue) void Ses_InsertParamInDB (const char *ParamName,const char *ParamValue)
{ {
/***** Before of inserting the first hidden parameter passed to the next action, /***** Before of inserting the first session parameter passed to the next action,
delete all the parameters coming from the previous action *****/ delete all the parameters coming from the previous action *****/
Ses_RemoveHiddenParFromThisSession (); Ses_RemoveParamFromThisSession ();
/***** For a unique session-parameter, /***** For a unique session-parameter,
don't insert a parameter more than one time *****/ don't insert a parameter more than one time *****/
if (ParamName) if (ParamName)
if (ParamName[0]) if (ParamName[0])
if (!Ses_CheckIfHiddenParIsAlreadyInDB (ParamName)) if (!Ses_CheckIfParamIsAlreadyInDB (ParamName))
{ {
/***** Insert parameter in the database *****/ /***** Insert session parameter in the database *****/
DB_QueryINSERT ("can not create hidden parameter", DB_QueryINSERT ("can not create session parameter",
"INSERT INTO hidden_params" "INSERT INTO ses_params"
" (SessionId,ParamName,ParamValue)" " (SessionId,ParamName,ParamValue)"
" VALUES" " VALUES"
" ('%s','%s','%s')", " ('%s','%s','%s')",
@ -357,21 +357,22 @@ void Ses_InsertHiddenParInDB (const char *ParamName,const char *ParamValue)
ParamName, ParamName,
ParamValue ? ParamValue : ParamValue ? ParamValue :
""); "");
Gbl.HiddenParamsInsertedIntoDB = true; Gbl.Session.ParamsInsertedIntoDB = true;
} }
} }
/*****************************************************************************/ /*****************************************************************************/
/************ Remove hidden parameters of a session from database ************/ /************ Remove session parameters of a session from database ***********/
/*****************************************************************************/ /*****************************************************************************/
void Ses_RemoveHiddenParFromThisSession (void) void Ses_RemoveParamFromThisSession (void)
{ {
if (Gbl.Session.IsOpen && // There is an open session if (Gbl.Session.IsOpen && // There is an open session
!Gbl.HiddenParamsInsertedIntoDB) // No params just inserted !Gbl.Session.ParamsInsertedIntoDB) // No params just inserted
/***** Remove hidden parameters of this session *****/ /***** Remove session parameters of this session *****/
DB_QueryDELETE ("can not remove hidden parameters of current session", DB_QueryDELETE ("can not remove session parameters of current session",
"DELETE FROM hidden_params WHERE SessionId='%s'", "DELETE FROM ses_params"
" WHERE SessionId='%s'",
Gbl.Session.Id); Gbl.Session.Id);
} }
@ -379,37 +380,38 @@ void Ses_RemoveHiddenParFromThisSession (void)
/********* Remove expired hidden parameters (from expired sessions) **********/ /********* Remove expired hidden parameters (from expired sessions) **********/
/*****************************************************************************/ /*****************************************************************************/
void Ses_RemoveHiddenParFromExpiredSessions (void) void Ses_RemoveParamsFromExpiredSessions (void)
{ {
/***** Remove hidden parameters from expired sessions *****/ /***** Remove session parameters from expired sessions *****/
DB_QueryDELETE ("can not remove hidden parameters of expired sessions", DB_QueryDELETE ("can not remove session parameters of expired sessions",
"DELETE FROM hidden_params" "DELETE FROM ses_params"
" WHERE SessionId NOT IN" " WHERE SessionId NOT IN"
" (SELECT SessionId FROM sessions)"); " (SELECT SessionId"
" FROM sessions)");
} }
/*****************************************************************************/ /*****************************************************************************/
/*************** Check if a hidden parameter existed in database *************/ /************** Check if a session parameter existed in database *************/
/*****************************************************************************/ /*****************************************************************************/
// Return true if the parameter already existed in database // Return true if the parameter already existed in database
static bool Ses_CheckIfHiddenParIsAlreadyInDB (const char *ParamName) static bool Ses_CheckIfParamIsAlreadyInDB (const char *ParamName)
{ {
return (DB_QueryCOUNT ("can not check if a hidden parameter" return (DB_QueryCOUNT ("can not check if a session parameter"
" is already in database", " is already in database",
"SELECT COUNT(*) FROM hidden_params" "SELECT COUNT(*)"
" FROM ses_params"
" WHERE SessionId='%s'" " WHERE SessionId='%s'"
" AND ParamName='%s'", " AND ParamName='%s'",
Gbl.Session.Id, Gbl.Session.Id,
ParamName) != 0); ParamName) != 0);
} }
/*****************************************************************************/ /*****************************************************************************/
/***************** Get hidden parameter from the database ********************/ /***************** Get session parameter from the database *******************/
/*****************************************************************************/ /*****************************************************************************/
void Ses_GetHiddenParFromDB (const char *ParamName,char *ParamValue, void Ses_GetParamFromDB (const char *ParamName,char *ParamValue,size_t MaxBytes)
size_t MaxBytes)
{ {
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -420,12 +422,12 @@ void Ses_GetHiddenParFromDB (const char *ParamName,char *ParamValue,
ParamValue[0] = '\0'; ParamValue[0] = '\0';
if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB
{ {
/***** Get a hidden parameter from database *****/ /***** Get a session parameter from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get a hidden parameter", NumRows = DB_QuerySELECT (&mysql_res,"can not get a session parameter",
"SELECT ParamValue" "SELECT ParamValue"
" FROM hidden_params" " FROM ses_params"
" WHERE SessionId='%s'" " WHERE SessionId='%s'"
" AND ParamName='%s'", " AND ParamName='%s'",
Gbl.Session.Id, Gbl.Session.Id,
ParamName); ParamName);
@ -447,7 +449,7 @@ void Ses_GetHiddenParFromDB (const char *ParamName,char *ParamValue,
if (ParameterIsTooBig) if (ParameterIsTooBig)
{ {
snprintf (ErrorTxt,sizeof (ErrorTxt), snprintf (ErrorTxt,sizeof (ErrorTxt),
"Hidden parameter <strong>%s</strong> too large," "Session parameter <strong>%s</strong> too large,"
" it exceed the maximum allowed size (%lu bytes).", " it exceed the maximum allowed size (%lu bytes).",
ParamName,(unsigned long) MaxBytes); ParamName,(unsigned long) MaxBytes);
Lay_ShowErrorAndExit (ErrorTxt); Lay_ShowErrorAndExit (ErrorTxt);

View File

@ -47,11 +47,10 @@ void Ses_UpdateSessionLastRefreshInDB (void);
void Ses_RemoveExpiredSessions (void); void Ses_RemoveExpiredSessions (void);
bool Ses_GetSessionData (void); bool Ses_GetSessionData (void);
void Ses_InsertHiddenParInDB (const char *ParamName,const char *ParamValue); void Ses_InsertParamInDB (const char *ParamName,const char *ParamValue);
void Ses_RemoveHiddenParFromThisSession (void); void Ses_RemoveParamFromThisSession (void);
void Ses_RemoveHiddenParFromExpiredSessions (void); void Ses_RemoveParamsFromExpiredSessions (void);
void Ses_GetHiddenParFromDB (const char *ParamName,char *ParamValue, void Ses_GetParamFromDB (const char *ParamName,char *ParamValue,size_t MaxBytes);
size_t MaxBytes);
bool Ses_GetPublicDirFromCache (const char *FullPathMediaPriv, bool Ses_GetPublicDirFromCache (const char *FullPathMediaPriv,
char TmpPubDir[PATH_MAX + 1]); char TmpPubDir[PATH_MAX + 1]);

View File

@ -5718,7 +5718,7 @@ void Usr_PutHiddenParSelectedUsrsCods (struct SelectedUsrs *SelectedUsrs)
/* Put the parameter *****/ /* Put the parameter *****/
if (Gbl.Session.IsOpen) if (Gbl.Session.IsOpen)
Ses_InsertHiddenParInDB (ParamName,SelectedUsrs->List[Rol_UNK]); Ses_InsertParamInDB (ParamName,SelectedUsrs->List[Rol_UNK]);
else else
Par_PutHiddenParamString (NULL,ParamName,SelectedUsrs->List[Rol_UNK]); Par_PutHiddenParamString (NULL,ParamName,SelectedUsrs->List[Rol_UNK]);
@ -5748,7 +5748,7 @@ void Usr_GetListsSelectedEncryptedUsrsCods (struct SelectedUsrs *SelectedUsrs)
Usr_AllocateListSelectedEncryptedUsrCods (SelectedUsrs,Rol_UNK); Usr_AllocateListSelectedEncryptedUsrCods (SelectedUsrs,Rol_UNK);
if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB
{ {
Ses_GetHiddenParFromDB (ParamName,SelectedUsrs->List[Rol_UNK], Ses_GetParamFromDB (ParamName,SelectedUsrs->List[Rol_UNK],
Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS); Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS);
Str_ChangeFormat (Str_FROM_FORM,Str_TO_TEXT,SelectedUsrs->List[Rol_UNK], Str_ChangeFormat (Str_FROM_FORM,Str_TO_TEXT,SelectedUsrs->List[Rol_UNK],
Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS,true); Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS,true);