Version 20.51.43: Mar 24, 2021 Log API database table renamed.

This commit is contained in:
acanas 2021-03-24 13:51:21 +01:00
parent a1ffed3be1
commit 1c7e403eee
5 changed files with 140 additions and 91 deletions

View File

@ -926,6 +926,16 @@ CREATE TABLE IF NOT EXISTS log (
PARTITION p2050 VALUES LESS THAN MAXVALUE PARTITION p2050 VALUES LESS THAN MAXVALUE
); );
-- --
-- Table log_api: stores the log of calls to API (web service) from plugins
--
CREATE TABLE IF NOT EXISTS log_api (
LogCod INT NOT NULL,
PlgCod INT NOT NULL,
FunCod INT NOT NULL,
UNIQUE INDEX(LogCod),
INDEX(PlgCod),
INDEX(FunCod));
--
-- Table log_banners: stores the log of clicked banners -- Table log_banners: stores the log of clicked banners
-- --
CREATE TABLE IF NOT EXISTS log_banners ( CREATE TABLE IF NOT EXISTS log_banners (
@ -973,16 +983,6 @@ CREATE TABLE IF NOT EXISTS log_search (
SearchStr VARCHAR(2047) NOT NULL, SearchStr VARCHAR(2047) NOT NULL,
UNIQUE INDEX(LogCod)); UNIQUE INDEX(LogCod));
-- --
-- Table log_ws: stores the log of calls to web service from plugins
--
CREATE TABLE IF NOT EXISTS log_ws (
LogCod INT NOT NULL,
PlgCod INT NOT NULL,
FunCod INT NOT NULL,
UNIQUE INDEX(LogCod),
INDEX(PlgCod),
INDEX(FunCod));
--
-- Table ntf_mail_domains: stores e-mail domains to which sending of notifications is allowed -- Table ntf_mail_domains: stores e-mail domains to which sending of notifications is allowed
-- --
CREATE TABLE IF NOT EXISTS ntf_mail_domains ( CREATE TABLE IF NOT EXISTS ntf_mail_domains (

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.42 (2021-03-24)" #define Log_PLATFORM_VERSION "SWAD 20.51.43 (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.43: Mar 24, 2021 Log API database table renamed. (308698 lines)
1 change necessary in database:
RENAME TABLE log_ws TO log_api;
Version 20.51.42: Mar 24, 2021 Exam logs database tables renamed. (308703 lines) Version 20.51.42: Mar 24, 2021 Exam logs database tables renamed. (308703 lines)
2 changes necessary in database: 2 changes necessary in database:
RENAME TABLE exa_log_session TO exa_log_sessions; RENAME TABLE exa_log_session TO exa_log_sessions;

View File

@ -1937,6 +1937,27 @@ mysql> DESCRIBE log;
"PARTITION p2050 VALUES LESS THAN MAXVALUE" "PARTITION p2050 VALUES LESS THAN MAXVALUE"
")"); ")");
/***** Table log_api *****/
/*
mysql> DESCRIBE log_api;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | |
| PlgCod | int(11) | NO | MUL | NULL | |
| FunCod | int(11) | NO | MUL | NULL | |
+--------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_api ("
"LogCod INT NOT NULL,"
"PlgCod INT NOT NULL,"
"FunCod INT NOT NULL,"
"UNIQUE INDEX(LogCod),"
"INDEX(PlgCod),"
"INDEX(FunCod))");
/***** Table log_banners *****/ /***** Table log_banners *****/
/* /*
mysql> DESCRIBE log_banners; mysql> DESCRIBE log_banners;
@ -2035,27 +2056,6 @@ mysql> DESCRIBE log_search;
"SearchStr VARCHAR(2047) NOT NULL," // Sch_MAX_BYTES_STRING_TO_FIND "SearchStr VARCHAR(2047) NOT NULL," // Sch_MAX_BYTES_STRING_TO_FIND
"UNIQUE INDEX(LogCod))"); "UNIQUE INDEX(LogCod))");
/***** Table log_ws *****/
/*
mysql> DESCRIBE log_ws;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| LogCod | int(11) | NO | PRI | NULL | |
| PlgCod | int(11) | NO | MUL | NULL | |
| FunCod | int(11) | NO | MUL | NULL | |
+--------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)
*/
// TODO: Change NtfCod and LogCod from INT to BIGINT in database tables.
DB_CreateTable ("CREATE TABLE IF NOT EXISTS log_ws ("
"LogCod INT NOT NULL,"
"PlgCod INT NOT NULL,"
"FunCod INT NOT NULL,"
"UNIQUE INDEX(LogCod),"
"INDEX(PlgCod),"
"INDEX(FunCod))");
/***** Table ntf_mail_domains *****/ /***** Table ntf_mail_domains *****/
/* /*
mysql> DESCRIBE ntf_mail_domains; mysql> DESCRIBE ntf_mail_domains;

View File

@ -159,7 +159,7 @@ void Log_LogAccess (const char *Comments)
if (Gbl.WebService.IsWebService) if (Gbl.WebService.IsWebService)
/* Log web service plugin and function */ /* Log web service plugin and function */
DB_QueryINSERT ("can not log access (comments)", DB_QueryINSERT ("can not log access (comments)",
"INSERT INTO log_ws" "INSERT INTO log_api"
" (LogCod,PlgCod,FunCod)" " (LogCod,PlgCod,FunCod)"
" VALUES" " VALUES"
" (%ld,%ld,%u)", " (%ld,%ld,%u)",

View File

@ -945,34 +945,43 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
case Sta_CLICKS_CRS_DETAILED_LIST: case Sta_CLICKS_CRS_DETAILED_LIST:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE LogCod,UsrCod,Role," "SELECT SQL_NO_CACHE LogCod,"
"UNIX_TIMESTAMP(ClickTime) AS F,ActCod FROM %s", "UsrCod,"
"Role,"
"UNIX_TIMESTAMP(ClickTime) AS F,"
"ActCod"
" FROM %s",
LogTable); LogTable);
break; break;
case Sta_CLICKS_CRS_PER_USR: case Sta_CLICKS_CRS_PER_USR:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE UsrCod,%s AS Num FROM %s", "SELECT SQL_NO_CACHE UsrCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_DAY: case Sta_CLICKS_CRS_PER_DAY:
case Sta_CLICKS_GBL_PER_DAY: case Sta_CLICKS_GBL_PER_DAY:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE " "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day,"
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day," "%s"
"%s FROM %s", " FROM %s",
BrowserTimeZone, BrowserTimeZone,
StrQueryCountType,LogTable); StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_DAY_AND_HOUR: case Sta_CLICKS_CRS_PER_DAY_AND_HOUR:
case Sta_CLICKS_GBL_PER_DAY_AND_HOUR: case Sta_CLICKS_GBL_PER_DAY_AND_HOUR:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE " "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day,"
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day," "DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour,"
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour," "%s"
"%s FROM %s", " FROM %s",
BrowserTimeZone, BrowserTimeZone,
BrowserTimeZone, BrowserTimeZone,
StrQueryCountType,LogTable); StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_WEEK: case Sta_CLICKS_CRS_PER_WEEK:
case Sta_CLICKS_GBL_PER_WEEK: case Sta_CLICKS_GBL_PER_WEEK:
@ -980,100 +989,136 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
With %X%V the weeks are counted from sunday to saturday. */ With %X%V the weeks are counted from sunday to saturday. */
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
(Gbl.Prefs.FirstDayOfWeek == 0) ? (Gbl.Prefs.FirstDayOfWeek == 0) ?
"SELECT SQL_NO_CACHE " // Weeks start on monday "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%x%%v') AS Week,"// Weeks start on monday
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%x%%v') AS Week," "%s"
"%s FROM %s" : " FROM %s" :
"SELECT SQL_NO_CACHE " // Weeks start on sunday "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%X%%V') AS Week,"// Weeks start on sunday
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%X%%V') AS Week," "%s"
"%s FROM %s", " FROM %s",
BrowserTimeZone, BrowserTimeZone,
StrQueryCountType,LogTable); StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_MONTH: case Sta_CLICKS_CRS_PER_MONTH:
case Sta_CLICKS_GBL_PER_MONTH: case Sta_CLICKS_GBL_PER_MONTH:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE " "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m') AS Month,"
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m') AS Month," "%s"
"%s FROM %s", " FROM %s",
BrowserTimeZone, BrowserTimeZone,
StrQueryCountType,LogTable); StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_YEAR: case Sta_CLICKS_CRS_PER_YEAR:
case Sta_CLICKS_GBL_PER_YEAR: case Sta_CLICKS_GBL_PER_YEAR:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE " "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y') AS Year,"
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y') AS Year," "%s"
"%s FROM %s", " FROM %s",
BrowserTimeZone, BrowserTimeZone,
StrQueryCountType,LogTable); StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_HOUR: case Sta_CLICKS_CRS_PER_HOUR:
case Sta_CLICKS_GBL_PER_HOUR: case Sta_CLICKS_GBL_PER_HOUR:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE " "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour,"
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour," "%s"
"%s FROM %s", " FROM %s",
BrowserTimeZone, BrowserTimeZone,
StrQueryCountType,LogTable); StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_MINUTE: case Sta_CLICKS_CRS_PER_MINUTE:
case Sta_CLICKS_GBL_PER_MINUTE: case Sta_CLICKS_GBL_PER_MINUTE:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE " "SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H%%i') AS Minute,"
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H%%i') AS Minute," "%s"
"%s FROM %s", " FROM %s",
BrowserTimeZone, BrowserTimeZone,
StrQueryCountType,LogTable); StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_CRS_PER_ACTION: case Sta_CLICKS_CRS_PER_ACTION:
case Sta_CLICKS_GBL_PER_ACTION: case Sta_CLICKS_GBL_PER_ACTION:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE ActCod,%s AS Num FROM %s", "SELECT SQL_NO_CACHE ActCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_PLUGIN: case Sta_CLICKS_GBL_PER_PLUGIN:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE log_ws.PlgCod,%s AS Num FROM %s,log_ws", "SELECT SQL_NO_CACHE log_api.PlgCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s,"
"log_api",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_API_FUNCTION: case Sta_CLICKS_GBL_PER_API_FUNCTION:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE log_ws.FunCod,%s AS Num FROM %s,log_ws", "SELECT SQL_NO_CACHE log_api.FunCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s,"
"log_api",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_BANNER: case Sta_CLICKS_GBL_PER_BANNER:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE log_banners.BanCod,%s AS Num FROM %s,log_banners", "SELECT SQL_NO_CACHE log_banners.BanCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s,"
"log_banners",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_COUNTRY: case Sta_CLICKS_GBL_PER_COUNTRY:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE CtyCod,%s AS Num FROM %s", "SELECT SQL_NO_CACHE CtyCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_INSTITUTION: case Sta_CLICKS_GBL_PER_INSTITUTION:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE InsCod,%s AS Num FROM %s", "SELECT SQL_NO_CACHE InsCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_CENTER: case Sta_CLICKS_GBL_PER_CENTER:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE CtrCod,%s AS Num FROM %s", "SELECT SQL_NO_CACHE CtrCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_DEGREE: case Sta_CLICKS_GBL_PER_DEGREE:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE DegCod,%s AS Num FROM %s", "SELECT SQL_NO_CACHE DegCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s",
StrQueryCountType,
LogTable);
break; break;
case Sta_CLICKS_GBL_PER_COURSE: case Sta_CLICKS_GBL_PER_COURSE:
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1, snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
"SELECT SQL_NO_CACHE CrsCod,%s AS Num FROM %s", "SELECT SQL_NO_CACHE CrsCod,"
StrQueryCountType,LogTable); "%s AS Num"
" FROM %s",
StrQueryCountType,
LogTable);
break; break;
} }
sprintf (QueryAux," WHERE %s.ClickTime" sprintf (QueryAux," WHERE %s.ClickTime"
" BETWEEN FROM_UNIXTIME(%ld) AND FROM_UNIXTIME(%ld)", " BETWEEN FROM_UNIXTIME(%ld)"
" AND FROM_UNIXTIME(%ld)",
LogTable, LogTable,
(long) Gbl.DateRange.TimeUTC[Dat_START_TIME], (long) Gbl.DateRange.TimeUTC[Dat_START_TIME],
(long) Gbl.DateRange.TimeUTC[Dat_END_TIME ]); (long) Gbl.DateRange.TimeUTC[Dat_END_TIME ]);
@ -1199,7 +1244,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
case Sta_CLICKS_GBL_PER_PLUGIN: case Sta_CLICKS_GBL_PER_PLUGIN:
case Sta_CLICKS_GBL_PER_API_FUNCTION: case Sta_CLICKS_GBL_PER_API_FUNCTION:
sprintf (QueryAux," AND %s.LogCod=log_ws.LogCod", sprintf (QueryAux," AND %s.LogCod=log_api.LogCod",
LogTable); LogTable);
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS); Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
break; break;
@ -1319,12 +1364,12 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS); Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_PLUGIN: case Sta_CLICKS_GBL_PER_PLUGIN:
Str_Concat (Query," GROUP BY log_ws.PlgCod" Str_Concat (Query," GROUP BY log_api.PlgCod"
" ORDER BY Num DESC", " ORDER BY Num DESC",
Sta_MAX_BYTES_QUERY_ACCESS); Sta_MAX_BYTES_QUERY_ACCESS);
break; break;
case Sta_CLICKS_GBL_PER_API_FUNCTION: case Sta_CLICKS_GBL_PER_API_FUNCTION:
Str_Concat (Query," GROUP BY log_ws.FunCod" Str_Concat (Query," GROUP BY log_api.FunCod"
" ORDER BY Num DESC", " ORDER BY Num DESC",
Sta_MAX_BYTES_QUERY_ACCESS); Sta_MAX_BYTES_QUERY_ACCESS);
break; break;