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,
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
--
CREATE TABLE IF NOT EXISTS holidays (
@ -1284,6 +1276,14 @@ CREATE TABLE IF NOT EXISTS room_check_in (
INDEX(UsrCod,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
--
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.
*/
#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 JS_FILE "swad20.6.2.js"
/*
TODO: Rename CENTRE to CENTER in help wiki.
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)
3 changes necessary in database:
RENAME TABLE forum_thr_clip TO for_clipboards;

View File

@ -1772,24 +1772,6 @@ mysql> DESCRIBE mch_times;
"ElapsedTime TIME NOT NULL DEFAULT 0,"
"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 *****/
/*
mysql> DESCRIBE holidays;
@ -2703,6 +2685,24 @@ mysql> DESCRIBE room_check_in;
"INDEX(UsrCod,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 *****/
/*
mysql> DESCRIBE sessions;

View File

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

View File

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

View File

@ -52,7 +52,7 @@ extern struct Globals Gbl;
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);
@ -131,7 +131,7 @@ void Ses_CloseSession (void)
Con_RemoveOldConnected ();
/***** Remove unused data associated to expired sessions *****/
Ses_RemoveHiddenParFromExpiredSessions ();
Ses_RemoveParamsFromExpiredSessions ();
Ses_RemovePublicDirsFromExpiredSessions ();
/***** 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 *****/
Ses_RemoveHiddenParFromThisSession ();
Ses_RemoveParamFromThisSession ();
/***** For a unique session-parameter,
don't insert a parameter more than one time *****/
if (ParamName)
if (ParamName[0])
if (!Ses_CheckIfHiddenParIsAlreadyInDB (ParamName))
if (!Ses_CheckIfParamIsAlreadyInDB (ParamName))
{
/***** Insert parameter in the database *****/
DB_QueryINSERT ("can not create hidden parameter",
"INSERT INTO hidden_params"
/***** Insert session parameter in the database *****/
DB_QueryINSERT ("can not create session parameter",
"INSERT INTO ses_params"
" (SessionId,ParamName,ParamValue)"
" VALUES"
" ('%s','%s','%s')",
@ -357,21 +357,22 @@ void Ses_InsertHiddenParInDB (const char *ParamName,const char *ParamValue)
ParamName,
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
!Gbl.HiddenParamsInsertedIntoDB) // No params just inserted
/***** Remove hidden parameters of this session *****/
DB_QueryDELETE ("can not remove hidden parameters of current session",
"DELETE FROM hidden_params WHERE SessionId='%s'",
!Gbl.Session.ParamsInsertedIntoDB) // No params just inserted
/***** Remove session parameters of this session *****/
DB_QueryDELETE ("can not remove session parameters of current session",
"DELETE FROM ses_params"
" WHERE SessionId='%s'",
Gbl.Session.Id);
}
@ -379,37 +380,38 @@ void Ses_RemoveHiddenParFromThisSession (void)
/********* Remove expired hidden parameters (from expired sessions) **********/
/*****************************************************************************/
void Ses_RemoveHiddenParFromExpiredSessions (void)
void Ses_RemoveParamsFromExpiredSessions (void)
{
/***** Remove hidden parameters from expired sessions *****/
DB_QueryDELETE ("can not remove hidden parameters of expired sessions",
"DELETE FROM hidden_params"
/***** Remove session parameters from expired sessions *****/
DB_QueryDELETE ("can not remove session parameters of expired sessions",
"DELETE FROM ses_params"
" 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
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",
"SELECT COUNT(*) FROM hidden_params"
"SELECT COUNT(*)"
" FROM ses_params"
" WHERE SessionId='%s'"
" AND ParamName='%s'",
" AND ParamName='%s'",
Gbl.Session.Id,
ParamName) != 0);
}
/*****************************************************************************/
/***************** Get hidden parameter from the database ********************/
/***************** Get session parameter from the database *******************/
/*****************************************************************************/
void Ses_GetHiddenParFromDB (const char *ParamName,char *ParamValue,
size_t MaxBytes)
void Ses_GetParamFromDB (const char *ParamName,char *ParamValue,size_t MaxBytes)
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -420,12 +422,12 @@ void Ses_GetHiddenParFromDB (const char *ParamName,char *ParamValue,
ParamValue[0] = '\0';
if (Gbl.Session.IsOpen) // If the session is open, get parameter from DB
{
/***** Get a hidden parameter from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get a hidden parameter",
/***** Get a session parameter from database *****/
NumRows = DB_QuerySELECT (&mysql_res,"can not get a session parameter",
"SELECT ParamValue"
" FROM hidden_params"
" FROM ses_params"
" WHERE SessionId='%s'"
" AND ParamName='%s'",
" AND ParamName='%s'",
Gbl.Session.Id,
ParamName);
@ -447,7 +449,7 @@ void Ses_GetHiddenParFromDB (const char *ParamName,char *ParamValue,
if (ParameterIsTooBig)
{
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).",
ParamName,(unsigned long) MaxBytes);
Lay_ShowErrorAndExit (ErrorTxt);

View File

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

View File

@ -5718,7 +5718,7 @@ void Usr_PutHiddenParSelectedUsrsCods (struct SelectedUsrs *SelectedUsrs)
/* Put the parameter *****/
if (Gbl.Session.IsOpen)
Ses_InsertHiddenParInDB (ParamName,SelectedUsrs->List[Rol_UNK]);
Ses_InsertParamInDB (ParamName,SelectedUsrs->List[Rol_UNK]);
else
Par_PutHiddenParamString (NULL,ParamName,SelectedUsrs->List[Rol_UNK]);
@ -5748,7 +5748,7 @@ void Usr_GetListsSelectedEncryptedUsrsCods (struct SelectedUsrs *SelectedUsrs)
Usr_AllocateListSelectedEncryptedUsrCods (SelectedUsrs,Rol_UNK);
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);
Str_ChangeFormat (Str_FROM_FORM,Str_TO_TEXT,SelectedUsrs->List[Rol_UNK],
Usr_MAX_BYTES_LIST_ENCRYPTED_USR_CODS,true);