mirror of https://github.com/acanas/swad-core.git
Version 20.51.42: Mar 24, 2021 Exam logs database tables renamed.
This commit is contained in:
parent
b4e5e64e4d
commit
a1ffed3be1
50
sql/swad.sql
50
sql/swad.sql
|
@ -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 (
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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,"
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue