mirror of https://github.com/acanas/swad-core.git
Version 20.51.43: Mar 24, 2021 Log API database table renamed.
This commit is contained in:
parent
a1ffed3be1
commit
1c7e403eee
20
sql/swad.sql
20
sql/swad.sql
|
@ -926,6 +926,16 @@ CREATE TABLE IF NOT EXISTS log (
|
|||
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
|
||||
--
|
||||
CREATE TABLE IF NOT EXISTS log_banners (
|
||||
|
@ -973,16 +983,6 @@ CREATE TABLE IF NOT EXISTS log_search (
|
|||
SearchStr VARCHAR(2047) NOT NULL,
|
||||
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
|
||||
--
|
||||
CREATE TABLE IF NOT EXISTS ntf_mail_domains (
|
||||
|
|
|
@ -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.42 (2021-03-24)"
|
||||
#define Log_PLATFORM_VERSION "SWAD 20.51.43 (2021-03-24)"
|
||||
#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.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)
|
||||
2 changes necessary in database:
|
||||
RENAME TABLE exa_log_session TO exa_log_sessions;
|
||||
|
|
|
@ -1937,6 +1937,27 @@ mysql> DESCRIBE log;
|
|||
"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 *****/
|
||||
/*
|
||||
mysql> DESCRIBE log_banners;
|
||||
|
@ -2035,27 +2056,6 @@ mysql> DESCRIBE log_search;
|
|||
"SearchStr VARCHAR(2047) NOT NULL," // Sch_MAX_BYTES_STRING_TO_FIND
|
||||
"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 *****/
|
||||
/*
|
||||
mysql> DESCRIBE ntf_mail_domains;
|
||||
|
|
|
@ -159,7 +159,7 @@ void Log_LogAccess (const char *Comments)
|
|||
if (Gbl.WebService.IsWebService)
|
||||
/* Log web service plugin and function */
|
||||
DB_QueryINSERT ("can not log access (comments)",
|
||||
"INSERT INTO log_ws"
|
||||
"INSERT INTO log_api"
|
||||
" (LogCod,PlgCod,FunCod)"
|
||||
" VALUES"
|
||||
" (%ld,%ld,%u)",
|
||||
|
|
161
swad_statistic.c
161
swad_statistic.c
|
@ -945,34 +945,43 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
|
|||
{
|
||||
case Sta_CLICKS_CRS_DETAILED_LIST:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE LogCod,UsrCod,Role,"
|
||||
"UNIX_TIMESTAMP(ClickTime) AS F,ActCod FROM %s",
|
||||
"SELECT SQL_NO_CACHE LogCod,"
|
||||
"UsrCod,"
|
||||
"Role,"
|
||||
"UNIX_TIMESTAMP(ClickTime) AS F,"
|
||||
"ActCod"
|
||||
" FROM %s",
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_USR:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE UsrCod,%s AS Num FROM %s",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE UsrCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_DAY:
|
||||
case Sta_CLICKS_GBL_PER_DAY:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE "
|
||||
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day,"
|
||||
"%s FROM %s",
|
||||
"SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m%%d') AS Day,"
|
||||
"%s"
|
||||
" FROM %s",
|
||||
BrowserTimeZone,
|
||||
StrQueryCountType,LogTable);
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_DAY_AND_HOUR:
|
||||
case Sta_CLICKS_GBL_PER_DAY_AND_HOUR:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"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'),'%%H') AS Hour,"
|
||||
"%s FROM %s",
|
||||
"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'),'%%H') AS Hour,"
|
||||
"%s"
|
||||
" FROM %s",
|
||||
BrowserTimeZone,
|
||||
BrowserTimeZone,
|
||||
StrQueryCountType,LogTable);
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_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. */
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
(Gbl.Prefs.FirstDayOfWeek == 0) ?
|
||||
"SELECT SQL_NO_CACHE " // Weeks start on monday
|
||||
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%x%%v') AS Week,"
|
||||
"%s FROM %s" :
|
||||
"SELECT SQL_NO_CACHE " // Weeks start on sunday
|
||||
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%X%%V') AS Week,"
|
||||
"%s FROM %s",
|
||||
"SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%x%%v') AS Week,"// Weeks start on monday
|
||||
"%s"
|
||||
" FROM %s" :
|
||||
"SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%X%%V') AS Week,"// Weeks start on sunday
|
||||
"%s"
|
||||
" FROM %s",
|
||||
BrowserTimeZone,
|
||||
StrQueryCountType,LogTable);
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_MONTH:
|
||||
case Sta_CLICKS_GBL_PER_MONTH:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE "
|
||||
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m') AS Month,"
|
||||
"%s FROM %s",
|
||||
"SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y%%m') AS Month,"
|
||||
"%s"
|
||||
" FROM %s",
|
||||
BrowserTimeZone,
|
||||
StrQueryCountType,LogTable);
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_YEAR:
|
||||
case Sta_CLICKS_GBL_PER_YEAR:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE "
|
||||
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y') AS Year,"
|
||||
"%s FROM %s",
|
||||
"SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%Y') AS Year,"
|
||||
"%s"
|
||||
" FROM %s",
|
||||
BrowserTimeZone,
|
||||
StrQueryCountType,LogTable);
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_HOUR:
|
||||
case Sta_CLICKS_GBL_PER_HOUR:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE "
|
||||
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour,"
|
||||
"%s FROM %s",
|
||||
"SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H') AS Hour,"
|
||||
"%s"
|
||||
" FROM %s",
|
||||
BrowserTimeZone,
|
||||
StrQueryCountType,LogTable);
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_MINUTE:
|
||||
case Sta_CLICKS_GBL_PER_MINUTE:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE "
|
||||
"DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H%%i') AS Minute,"
|
||||
"%s FROM %s",
|
||||
"SELECT SQL_NO_CACHE DATE_FORMAT(CONVERT_TZ(ClickTime,@@session.time_zone,'%s'),'%%H%%i') AS Minute,"
|
||||
"%s"
|
||||
" FROM %s",
|
||||
BrowserTimeZone,
|
||||
StrQueryCountType,LogTable);
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_CRS_PER_ACTION:
|
||||
case Sta_CLICKS_GBL_PER_ACTION:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE ActCod,%s AS Num FROM %s",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE ActCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_PLUGIN:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE log_ws.PlgCod,%s AS Num FROM %s,log_ws",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE log_api.PlgCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s,"
|
||||
"log_api",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_API_FUNCTION:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE log_ws.FunCod,%s AS Num FROM %s,log_ws",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE log_api.FunCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s,"
|
||||
"log_api",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_BANNER:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE log_banners.BanCod,%s AS Num FROM %s,log_banners",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE log_banners.BanCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s,"
|
||||
"log_banners",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_COUNTRY:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE CtyCod,%s AS Num FROM %s",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE CtyCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_INSTITUTION:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE InsCod,%s AS Num FROM %s",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE InsCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_CENTER:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE CtrCod,%s AS Num FROM %s",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE CtrCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_DEGREE:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE DegCod,%s AS Num FROM %s",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE DegCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
case Sta_CLICKS_GBL_PER_COURSE:
|
||||
snprintf (Query,Sta_MAX_BYTES_QUERY_ACCESS + 1,
|
||||
"SELECT SQL_NO_CACHE CrsCod,%s AS Num FROM %s",
|
||||
StrQueryCountType,LogTable);
|
||||
"SELECT SQL_NO_CACHE CrsCod,"
|
||||
"%s AS Num"
|
||||
" FROM %s",
|
||||
StrQueryCountType,
|
||||
LogTable);
|
||||
break;
|
||||
}
|
||||
sprintf (QueryAux," WHERE %s.ClickTime"
|
||||
" BETWEEN FROM_UNIXTIME(%ld) AND FROM_UNIXTIME(%ld)",
|
||||
" BETWEEN FROM_UNIXTIME(%ld)"
|
||||
" AND FROM_UNIXTIME(%ld)",
|
||||
LogTable,
|
||||
(long) Gbl.DateRange.TimeUTC[Dat_START_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_API_FUNCTION:
|
||||
sprintf (QueryAux," AND %s.LogCod=log_ws.LogCod",
|
||||
sprintf (QueryAux," AND %s.LogCod=log_api.LogCod",
|
||||
LogTable);
|
||||
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
|
||||
break;
|
||||
|
@ -1319,12 +1364,12 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
|
|||
Str_Concat (Query,QueryAux,Sta_MAX_BYTES_QUERY_ACCESS);
|
||||
break;
|
||||
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",
|
||||
Sta_MAX_BYTES_QUERY_ACCESS);
|
||||
break;
|
||||
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",
|
||||
Sta_MAX_BYTES_QUERY_ACCESS);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue