Version 20.51.42: Mar 24, 2021 Exam logs database tables renamed.

This commit is contained in:
acanas 2021-03-24 13:36:04 +01:00
parent b4e5e64e4d
commit a1ffed3be1
4 changed files with 57 additions and 51 deletions

View File

@ -493,26 +493,6 @@ CREATE TABLE IF NOT EXISTS dpt_departments (
UNIQUE INDEX(DptCod), UNIQUE INDEX(DptCod),
INDEX(InsCod)); INDEX(InsCod));
-- --
-- Table exa_groups: stores the groups associated to each event in an exam
--
CREATE TABLE IF NOT EXISTS exa_groups (
SesCod INT NOT NULL,
GrpCod INT NOT NULL,
UNIQUE INDEX(SesCod,GrpCod));
--
-- Table exa_sessions: stores the exam sessions that have already taken place
--
CREATE TABLE IF NOT EXISTS exa_sessions (
SesCod INT NOT NULL AUTO_INCREMENT,
ExaCod INT NOT NULL,
Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',
UsrCod INT NOT NULL,
StartTime DATETIME NOT NULL,
EndTime DATETIME NOT NULL,
Title VARCHAR(2047) NOT NULL,
UNIQUE INDEX(SesCod),
INDEX(ExaCod));
--
-- Table exa_exams: stores the exams -- Table exa_exams: stores the exams
-- --
CREATE TABLE IF NOT EXISTS exa_exams ( CREATE TABLE IF NOT EXISTS exa_exams (
@ -527,6 +507,13 @@ CREATE TABLE IF NOT EXISTS exa_exams (
UNIQUE INDEX(ExaCod), UNIQUE INDEX(ExaCod),
INDEX(CrsCod)); INDEX(CrsCod));
-- --
-- Table exa_groups: stores the groups associated to each session in an exam
--
CREATE TABLE IF NOT EXISTS exa_groups (
SesCod INT NOT NULL,
GrpCod INT NOT NULL,
UNIQUE INDEX(SesCod,GrpCod));
--
-- Table exa_log: stores the access log to exam prints -- Table exa_log: stores the access log to exam prints
-- --
CREATE TABLE IF NOT EXISTS exa_log ( CREATE TABLE IF NOT EXISTS exa_log (
@ -541,18 +528,18 @@ CREATE TABLE IF NOT EXISTS exa_log (
UNIQUE INDEX(PrnCod,LogCod), UNIQUE INDEX(PrnCod,LogCod),
INDEX(ClickTime)); INDEX(ClickTime));
-- --
-- Table exa_log_session: stores the session id field for access log to exam prints -- Table exa_log_sessions: stores the session id fields for access log to exam prints
-- --
CREATE TABLE IF NOT EXISTS exa_log_session ( CREATE TABLE IF NOT EXISTS exa_log_sessions (
LogCod INT NOT NULL, LogCod INT NOT NULL,
PrnCod INT NOT NULL, PrnCod INT NOT NULL,
SessionId CHAR(43) NOT NULL, SessionId CHAR(43) NOT NULL,
UNIQUE INDEX(LogCod), UNIQUE INDEX(LogCod),
UNIQUE INDEX(PrnCod,LogCod)); UNIQUE INDEX(PrnCod,LogCod));
-- --
-- Table exa_log_user_agent: stores the user agent field for access log to exam prints -- Table exa_log_user_agents: stores the user agent fields for access log to exam prints
-- --
CREATE TABLE IF NOT EXISTS exa_log_user_agent ( CREATE TABLE IF NOT EXISTS exa_log_user_agents (
LogCod INT NOT NULL, LogCod INT NOT NULL,
PrnCod INT NOT NULL, PrnCod INT NOT NULL,
UserAgent TEXT NOT NULL, UserAgent TEXT NOT NULL,
@ -571,7 +558,7 @@ CREATE TABLE IF NOT EXISTS exa_print_questions (
Answers TEXT NOT NULL, Answers TEXT NOT NULL,
UNIQUE INDEX(PrnCod,QstCod)); UNIQUE INDEX(PrnCod,QstCod));
-- --
-- Table exa_prints: stores the exam prints of every exam event -- Table exa_prints: stores the exam prints of every exam session
-- --
CREATE TABLE IF NOT EXISTS exa_prints ( CREATE TABLE IF NOT EXISTS exa_prints (
PrnCod INT NOT NULL AUTO_INCREMENT, PrnCod INT NOT NULL AUTO_INCREMENT,
@ -586,6 +573,19 @@ CREATE TABLE IF NOT EXISTS exa_prints (
UNIQUE INDEX(PrnCod), UNIQUE INDEX(PrnCod),
UNIQUE INDEX(SesCod,UsrCod)); UNIQUE INDEX(SesCod,UsrCod));
-- --
-- Table exa_sessions: stores the exam sessions
--
CREATE TABLE IF NOT EXISTS exa_sessions (
SesCod INT NOT NULL AUTO_INCREMENT,
ExaCod INT NOT NULL,
Hidden ENUM('N','Y') NOT NULL DEFAULT 'N',
UsrCod INT NOT NULL,
StartTime DATETIME NOT NULL,
EndTime DATETIME NOT NULL,
Title VARCHAR(2047) NOT NULL,
UNIQUE INDEX(SesCod),
INDEX(ExaCod));
--
-- Table exa_set_answers: stores the answers of questions in exam sets -- Table exa_set_answers: stores the answers of questions in exam sets
-- --
CREATE TABLE IF NOT EXISTS exa_set_answers ( CREATE TABLE IF NOT EXISTS exa_set_answers (

View File

@ -600,14 +600,19 @@ 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.41 (2021-03-24)" #define Log_PLATFORM_VERSION "SWAD 20.51.42 (2021-03-24)"
#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.41: Mar 24, 2021 Course user settings database table renamed. (? lines) Version 20.51.42: Mar 24, 2021 Exam logs database tables renamed. (308703 lines)
2 changes necessary in database:
RENAME TABLE exa_log_session TO exa_log_sessions;
RENAME TABLE exa_log_user_agent TO exa_log_user_agents;
Version 20.51.41: Mar 24, 2021 Course user settings database table renamed. (308698 lines)
1 change necessary in database: 1 change necessary in database:
RENAME TABLE crs_usr_last TO crs_user_settings; RENAME TABLE crs_usr_last TO crs_user_settings;

View File

@ -1161,9 +1161,9 @@ mysql> DESCRIBE exa_log;
"UNIQUE INDEX(PrnCod,LogCod)," "UNIQUE INDEX(PrnCod,LogCod),"
"INDEX(ClickTime))"); "INDEX(ClickTime))");
/***** Table exa_log_session *****/ /***** Table exa_log_sessions *****/
/* /*
mysql> DESCRIBE exa_log_session; mysql> DESCRIBE exa_log_sessions;
+-----------+----------+------+-----+---------+-------+ +-----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+ +-----------+----------+------+-----+---------+-------+
@ -1174,16 +1174,16 @@ mysql> DESCRIBE exa_log_session;
3 rows in set (0.00 sec) 3 rows in set (0.00 sec)
*/ */
// 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 exa_log_session (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS exa_log_sessions ("
"LogCod INT NOT NULL," "LogCod INT NOT NULL,"
"PrnCod INT NOT NULL," "PrnCod INT NOT NULL,"
"SessionId CHAR(43) NOT NULL," // Cns_BYTES_SESSION_ID "SessionId CHAR(43) NOT NULL," // Cns_BYTES_SESSION_ID
"UNIQUE INDEX(LogCod)," "UNIQUE INDEX(LogCod),"
"UNIQUE INDEX(PrnCod,LogCod))"); "UNIQUE INDEX(PrnCod,LogCod))");
/***** Table exa_log_user_agent *****/ /***** Table exa_log_user_agents *****/
/* /*
mysql> DESCRIBE exa_log_user_agent; mysql> DESCRIBE exa_log_user_agents;
+-----------+---------+------+-----+---------+-------+ +-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra | | Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+ +-----------+---------+------+-----+---------+-------+
@ -1194,7 +1194,7 @@ mysql> DESCRIBE exa_log_user_agent;
3 rows in set (0.00 sec) 3 rows in set (0.00 sec)
*/ */
// 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 exa_log_user_agent (" DB_CreateTable ("CREATE TABLE IF NOT EXISTS exa_log_user_agents ("
"LogCod INT NOT NULL," "LogCod INT NOT NULL,"
"PrnCod INT NOT NULL," "PrnCod INT NOT NULL,"
"UserAgent TEXT NOT NULL," "UserAgent TEXT NOT NULL,"

View File

@ -182,12 +182,12 @@ static void ExaLog_LogSession (long LogCod,long PrnCod)
is the same as the last stored in database *****/ is the same as the last stored in database *****/
TheSameAsTheLast = (DB_QueryCOUNT ("can not check session", TheSameAsTheLast = (DB_QueryCOUNT ("can not check session",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM exa_log_session" " FROM exa_log_sessions"
" WHERE LogCod=" " WHERE LogCod="
"(SELECT MAX(LogCod)" "(SELECT MAX(LogCod)"
" FROM exa_log_session" " FROM exa_log_sessions"
" WHERE PrnCod=%ld)" " WHERE PrnCod=%ld)"
" AND SessionId='%s'", " AND SessionId='%s'",
PrnCod, PrnCod,
Gbl.Session.Id) != 0); Gbl.Session.Id) != 0);
@ -196,7 +196,7 @@ static void ExaLog_LogSession (long LogCod,long PrnCod)
only if it's not the same as the last one stored *****/ only if it's not the same as the last one stored *****/
if (!TheSameAsTheLast) if (!TheSameAsTheLast)
DB_QueryINSERT ("can not log session", DB_QueryINSERT ("can not log session",
"INSERT INTO exa_log_session " "INSERT INTO exa_log_sessions "
"(LogCod,PrnCod,SessionId)" "(LogCod,PrnCod,SessionId)"
" VALUES " " VALUES "
"(%ld,%ld,'%s')", "(%ld,%ld,'%s')",
@ -245,12 +245,12 @@ static void ExaLog_LogUsrAgent (long LogCod,long PrnCod)
is the same as the last stored in database *****/ is the same as the last stored in database *****/
TheSameAsTheLast = (DB_QueryCOUNT ("can not check user agent", TheSameAsTheLast = (DB_QueryCOUNT ("can not check user agent",
"SELECT COUNT(*)" "SELECT COUNT(*)"
" FROM exa_log_user_agent" " FROM exa_log_user_agents"
" WHERE LogCod=" " WHERE LogCod="
"(SELECT MAX(LogCod)" "(SELECT MAX(LogCod)"
" FROM exa_log_user_agent" " FROM exa_log_user_agents"
" WHERE PrnCod=%ld)" " WHERE PrnCod=%ld)"
" AND UserAgent='%s'", " AND UserAgent='%s'",
PrnCod, PrnCod,
UserAgentDB) != 0); UserAgentDB) != 0);
@ -259,7 +259,7 @@ static void ExaLog_LogUsrAgent (long LogCod,long PrnCod)
only if it's not the same as the last one stored *****/ only if it's not the same as the last one stored *****/
if (!TheSameAsTheLast) if (!TheSameAsTheLast)
DB_QueryINSERT ("can not log user agent", DB_QueryINSERT ("can not log user agent",
"INSERT INTO exa_log_user_agent " "INSERT INTO exa_log_user_agents "
"(LogCod,PrnCod,UserAgent)" "(LogCod,PrnCod,UserAgent)"
" VALUES " " VALUES "
"(%ld,%ld,'%s')", "(%ld,%ld,'%s')",
@ -313,12 +313,13 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
"exa_log.CanAnswer," // row[2] "exa_log.CanAnswer," // row[2]
"UNIX_TIMESTAMP(exa_log.ClickTime)," // row[3] "UNIX_TIMESTAMP(exa_log.ClickTime)," // row[3]
"exa_log.IP," // row[4] "exa_log.IP," // row[4]
"exa_log_session.SessionId," // row[5] "exa_log_sessions.SessionId," // row[5]
"exa_log_user_agent.UserAgent" // row[6] "exa_log_user_agents.UserAgent" // row[6]
" FROM exa_log LEFT JOIN exa_log_session" " FROM exa_log"
" ON exa_log.LogCod=exa_log_session.LogCod" " LEFT JOIN exa_log_sessions"
" LEFT JOIN exa_log_user_agent" " ON exa_log.LogCod=exa_log_sessions.LogCod"
" ON exa_log.LogCod=exa_log_user_agent.LogCod" " LEFT JOIN exa_log_user_agents"
" ON exa_log.LogCod=exa_log_user_agents.LogCod"
" WHERE exa_log.PrnCod=%ld" " WHERE exa_log.PrnCod=%ld"
" ORDER BY exa_log.LogCod", " ORDER BY exa_log.LogCod",
Print->PrnCod); Print->PrnCod);