From 1c7e403eee65c860db3694e9333381121d1ebcea Mon Sep 17 00:00:00 2001 From: acanas Date: Wed, 24 Mar 2021 13:51:21 +0100 Subject: [PATCH] Version 20.51.43: Mar 24, 2021 Log API database table renamed. --- sql/swad.sql | 20 +++--- swad_changelog.h | 6 +- swad_database.c | 42 ++++++------- swad_log.c | 2 +- swad_statistic.c | 161 ++++++++++++++++++++++++++++++----------------- 5 files changed, 140 insertions(+), 91 deletions(-) diff --git a/sql/swad.sql b/sql/swad.sql index 64a2fc2d7..0fd315eec 100644 --- a/sql/swad.sql +++ b/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 ( diff --git a/swad_changelog.h b/swad_changelog.h index 141410e8e..0e8c5cebb 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -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; diff --git a/swad_database.c b/swad_database.c index d094b558a..e82b72876 100644 --- a/swad_database.c +++ b/swad_database.c @@ -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; diff --git a/swad_log.c b/swad_log.c index 1a5403ef4..72015e375 100644 --- a/swad_log.c +++ b/swad_log.c @@ -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)", diff --git a/swad_statistic.c b/swad_statistic.c index f503a23cd..8eb89a166 100644 --- a/swad_statistic.c +++ b/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;